SpringMVC映射请求;SpringMVC返回值类型;SpringMVC参数绑定;
一,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类定义成员变量接收