SpringMVC笔记(6) 参数的传递+乱码解决
一、 Spring MVC 的请求参数获取
- 通过@PathVariabl注解获取路径中传递参数
- 用@ModelAttribute注解获取POST请求的FORM表单数据
- 直接用HttpServletRequest获取
- 用注解@RequestParam绑定请求参数a到变量a
当请求参数a不存在时会有异常发生,可以通过设置属性required=false解决,
例如:@RequestParam(value="a", required=false)
再提供两种方式
@RequestMapping("/UpdateUser") public String UpdateUserInfo(User user,HttpServletRequest request){ request.setAttribute("name", user.getName()); request.setAttribute("age", user.getAge()); return "/UpdateUserResult"; } @RequestMapping("/UpdateUser2") public ModelAndView UpdateUserInfo2(String name,int age){ ModelAndView mav=new ModelAndView(); mav.setViewName("/UpdateUserResult"); //设置返回的文件名 mav.addObject("name", age); mav.addObject("state", age); return mav; }
二、乱码问题
部分摘自 http://copperfield.iteye.com/blog/968167
http://blog.csdn.net/xuechongyang/article/details/8283924
springMVC提交表单出现乱码:
在web.xml中已配置了filter
<!-- 防止中文参数乱码 --> <filter> <filter-name>SetCharacterEncoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> <!-- 强制进行转码 --> </init-param> </filter> <filter-mapping> <filter-name>SetCharacterEncoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 防止中文参数乱码 -->
但仍显示乱码
解决方案:指定表单提交方式为“post”
分析: 过滤器中request.setCharacterEncoding("UTF-8");
当你的表单的method使用了get的时候,这个request.setCharacterEncoding也不起作用了