开始模拟问题出现的代码环境
1.创建一个pojo
public class personVO{
private String name; //姓名
private String like; // 爱好
}
2.创建一个简单的jsp表单传值
.....................
<body>
<form action ="save.do" method="post" enctype="multipart/form-data">
<tr>
<input type = "text" name="name" />
</tr>
<tr>
<input type = "text" name="like" />
</tr>
<tr>
<input type="submit" name="ss" value="submit" />
</tr>
</form>
</body>
3.写一个简单的action接收表单的值
@Controller
@RequestMapping(value = "")
public class personAction{
@RequestMapping(value = "/save.do")
public String form((HttpServletRequest request, HttpServletResponse response,
@ModelAttribute personVO vo){
//....................对表单传递过来的vo对象进行操作,你会发现如果是中文的话,可能会出现乱码
}
4.出现乱码的原因
Spring 默认的编码是Latin-1
乱码的形式:å‘表新贴å‘表新贴å‘表新贴å‘表新贴
这种乱码是无法还原数据的 因为数据在转换的过程中 以及丢失
5.解决乱码 在web.xml添加过滤器
<filter>
<filter-name>encodingFilter</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>encodingFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
目的是在执行.do请求的时候,强制规定编码是UTF-8