1. 通过@RequestParam绑定请求参数
使用@RequestParam绑定请求参数的值到Controller的方法入参中。
/**
* 方式一,通过@RequestParam绑定请求参数
* 1、使用RequestMapping注解来映射请求的URL,在本案例,处理/say此URL的GET请求
* 2、返回值会通过视图解析器解析为实际的物理视图, 对于InternalResourceViewResolver视图解析器,会做如下解析
* 通过prefix+returnVal+suffix 这样的方式得到实际的物理视图,然后会转发到该实际的物理视图,在本案例,
* 得到实际的物理视图是/jsp/say.jsp
* @param msg URL中传递的请求参数
* @return
*/
@RequestMapping(value="say",method=RequestMethod.GET)
public ModelAndView say(@RequestParam("msg") String msg){
//其中第一个参数为View Name,第二个参数为要传递的数据的key,第三个参数为数据对象。在这里要注意的是:数据是默认被存放在request中的
return new ModelAndView("say", "msg", msg);
}
2.通过RequestContextHolder上下文获取request对象
大部分情况下,这种方式是有效的!当请求为multipart类型的请求的时候,如文件上传,form表单的enctype类型为"multipart/form-data",这种情况下,RequestHolder.getRequest().getParameter()是得不到参数值的!!因为通过RequestHolder.getRequest()获取到的request对象org.apache.catalina.connector.RequestFacade的实例
不推荐使用这种方式,解决方案:直接将HttpServletRequest作为spring mvc的方法入参
/**
* 方式二,通过RequestContextHolder上下文获取request对象
* 不推荐使用这种方式!!
* 当请求为multipart类型的请求的时候,如文件上传,form表单的enctype类型为"multipart/form-data",
* 这种情况下,RequestHolder.getRequest().getParameter()是得不到参数值的!!
* 因为通过RequestHolder.getRequest()获取到的request对象是org.apache.catalina.connector.RequestFacade的实例
* 1、使用RequestMapping注解来映射请求的URL,在本案例,处理/say2此URL的GET请求
* 2、返回值会通过视图解析器解析为实际的物理视图, 对于InternalResourceViewResolver视图解析器,会做如下解析
* 通过prefix+returnVal+suffix 这样的方式得到实际的物理视图,然后会转发到该实际的物理视图,在本案例,
* 得到实际的物理视图是/jsp/say.jsp