四SpringMVC——处理器方法的参数&解决中文乱码
Posted 上善若水
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了四SpringMVC——处理器方法的参数&解决中文乱码相关的知识,希望对你有一定的参考价值。
一、处理器方法的参数
处理器方法可以包含以下四类参数,这些参数会在系统调用时由系统自动赋值,即程序员可在方法内直接使用。
- HttpServletRequest
- HttpServletResponse
- HttpSession
- 请求中所携带的请求参数
1.1、逐个参数接收
只要保证请求参数名与该请求处理方法的参数名相同即可。
1.修改index.jsp
<form action="/user/register.do" method="POST">
姓名:<input type="text" name="name" /><br/>
年龄:<input type="text" name="age" /><br/>
<input type="submit" value="注册">
</form>
2.修改处理器类MyController
@Controller
@RequestMapping("/user")
public class MyController {
@RequestMapping(value = "/register.do")
public ModelAndView register(String name,int age){
ModelAndView mv = new ModelAndView();
// 相当于request.setAttribute("myname",name);
mv.addObject("myname",name);
mv.addObject("myage",age);
mv.setViewName("show");
return mv;
}
}
3.添加show页面
在/WEB-INF/view下添加show.jsp页面
<div>
name = ${myname}<br/>
age = ${myage}
</div>
1.2、请求参数中文乱码问题
对于前面所接收的请求参数,若含有中文,则会出现中文乱码问题。spring对于请求参数中的中文乱码问题,给出了专门的字符集过滤器:spring-web-5.2.5.RELEASE.jar 的
org.springframework.web.filter 包下的 CharacterEncodingFilter 类。
(1)解决方案
在 web.xml 中注册字符集过滤器,即可解决 Spring 的请求参数的中文乱码问题。不过,
最好将该过滤器注册在其它过滤器之前。因为过滤器的执行是按照其注册顺序进行的。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- 注册字符集过滤器:解决POST请求乱码的问题 -->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<!-- spring-web.jar -->
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<!-- 指定字符集 -->
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<!-- 强制request使用字符集encoding -->
<init-param>
<param-name>forceRequestEncoding</param-name>
<param-value>true</param-value>
</init-param>
<!-- 强制response使用字符集encoding -->
<init-param>
<param-name>forceResponseEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
(2)源码分析
字符集设置核心方法:
以上是关于四SpringMVC——处理器方法的参数&解决中文乱码的主要内容,如果未能解决你的问题,请参考以下文章
SpringMVC— “SpringMVC获取请求参数的方法”
SpringMVC— “SpringMVC获取请求参数的方法”
SpringMVC— “SpringMVC获取请求参数的方法”