SpringMVC映射请求;SpringMVC返回值类型;SpringMVC参数绑定;

发布于:2024-09-17 ⋅ 阅读:(44) ⋅ 点赞:(0)

一,SpringMVC映射请求

SpringMVC 使用 @RequestMapping 注解为控制器指定可以处理哪些URL请求

1.1@RequestMapping修饰类

注解@RequestMapping修饰类,提供初步的请求映射信息,相对于WEB应用的跟目录。

注:

                如果在类名前,使用了注解@RequestMapping,那么在处理器的方法里,在进行页面跳转的时候:

                       如果不经过视图解析器,那就要在跳转页面名的前面 加上“ / ”,表示页面的跳转位置从项目根目录开始;

                        如果没加“ /” 的意思是,以上面的例子来说,那么页面的跳转位置是从items这个逻辑文件夹开始!

1.2@RequestMapping修饰方法

详细介绍:@RequestMapping

1.@RequestMapping("/show.do")

===加 / 是当前工程下,不加默认也是当前工程下

2.@RequestMapping(value={"show.do",”reg.do“})

===表示两个url请求都可以进入此控制器的此方法里。

===如果value的值只有一个的话,不需要加{}

===如果@RequestMapping注解里只有value这一个属性的话,并且该value属性还只有一个值的话,value也可以省去。如 上面的1。

3.@RequestMapping(value={"show.do",”reg.do“} ,method={RequestMethod.POST})

===value 和method两个属性之间使用 逗号,隔开

===method={RequestMethod.POST} 表示当前方法只能处理POST请求,若缺省,则get/post都可以处理。

4.对请求的参数加以限制:

@RequestMapping(value={"show.do",”reg.do“} ,params={”参数名1“,”参数名2“})

===表示当前方法请求参数中,必须有参数名叫 参数名1 和 参数名2 这两个参数。

@RequestMapping(value={"show.do",”reg.do“} ,params={”参数名1=value1“,”参数名2“})

===表示当前方法请求参数中,必须有参数名叫 参数名1 和 参数名2 这两个参数,并且参数1的值必须为value1。

5.headers属性:作为了解

指定request中必须包含某些指定的header值,才能让该方法处理请求。

@RequestMapping(value = "/pets", method = RequestMethod.GET, headers="Referer=凤凰网")

===表示仅处理request的header中包含了指定“Refer”请求头和对应值为“http://www.ifeng.com/”的请求;

二,SpringMVC返回值类型

controller 方法的返回值有三种:

                A.ModelAndView

                B.String

                C.void

2.1返回ModelAndView

方法返回值定义为ModelAndView时,对象可添加model数据也可以指定view。

@RequestMapping("show.do")
    public ModelAndView show(){
        ModelAndView mv=new ModelAndView();
        List<Product> list=new ArrayList<Product>();
        list.add(new Product(1,"华为","手机",2888.8));
        list.add(new Product(2,"华为","电脑",4888.8));
        mv.addObject("list",list);
        mv.setViewName("show.jsp");
        return mv;
    }

补:

     mv.addObject("list",list); 相当于request.setAttribute("list",list);在jsp页面中通过items获得集合数据。

2.2返回String

方法返回值为String时,字符串内容不是随意的,而是要遵守一定的格式!有三种方式:

A.字符串内容==>表示逻辑视图名,以请求转发方式进行页面跳转,也可以是controller控制器。

如:return “index.jsp”;

B.字符串内容==>以“forward:”开头,表示以请求转发方式进行页面跳转,也可以是controller控制器。

如:return “forward:index.jsp”;

C.字符串内容==>以“redirect:”开头,表示以重定向方式进行页面跳转,跳转的路径可以是jsp页面,也可以是controller控制器。

如:return “redirect:index.jsp”;

注意: 如果applicationContext.xml里配置了视图解析器,该方法不进入【视图解析器】的。

2.3返回void

方法返回值为void时,有以下两种方式:

A. request.getRequestDispatcher("main.action").forward(request, response);表示请求转发方式进行页面跳转

B. response.sendRedirect("main.action");表示重定向方式进行页面跳转

2.4返回实体对象(配合 @ResponseBody 注解)        

        当在方法上添加了@ResponseBody注解时,返回的实体对象会被 HttpMessageConverter 转换为对应的响应体格式(如 JSON、XML 等)。

三,SpringMVC参数绑定

参数绑定的过程

从客户端请求key / value数据,经过参数绑定,将key / value数据绑定到controller方法的形参上。

springMVC中,接收页面提交的数据是通过方法形参来接收,而不是在controller类定义成员变量接收


网站公告

今日签到

点亮在社区的每一天
去签到