一. 数据绑定
从前端特别是表单传递过来的数据,需要在后端进行接收。 接收时可以有不同的形式,也可以接收各种各样的类型。
二. 数据乱码
二.一 POST提交
1 . 前端html 代码
<!-- 采用的是post提交的方式 --> <form action="/SpringMVC02/user/register.action" method="post"> 用户名: <input type="text" name="name"/> <br/> 年龄:<input type="text" name="age"><br/> 性别:<input type="text" name="sex"><br/> 描述:<input type="text" name="description"><br/> <input type="submit" value="提交"> </form>
2 . 页面输入值
3 .后端接收代码 用 @RequestParam 注解接收。
4 . 控制台打印输出
发现,接收过来的name 是乱码的形式。 而前台传入中文是一种很常见的方式。
二.二 POST提交乱码解决方式
SpringMVC 针对 中文乱码提供了一个过滤器, CharacterEncodingFilter, 只需要将这个过滤器配置在web.xml 中即可。放置在servlet 之前。
public class CharacterEncodingFilter extends OncePerRequestFilter { private String encoding; private boolean forceEncoding = false; }
web.xml 中配置:
<!--配置中文乱码过滤器--> <filter> <filter-name>EncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter </filter-class> <init-param> <!-- 类里面有一个属性 encoding,来动态注入编码 --> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>EncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
这个时候,重启服务器,再传入时,后端接收。
有时候,为了强制转换,通常还会再添加一个参数 forceEncoding 来决定是否强制使用 encoding 属性设置的编码格式。
<!--配置中文乱码过滤器--> <filter> <filter-name>EncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter </filter-class> <init-param> <!-- 类里面有一个属性 encoding,来动态注入编码 --> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> <init-param> <!-- 是否强制使用encoding的编码方式。 默认为false --> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>EncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
当然,也可以像Servlet 时代那样,用请求 request 来处理乱码。 但不建议这么写。
request.setCharacterEncoding("UTF-8"); //或者是 String str=newString((request.getParameter("name")).getBytes("iso-8859-1"),"utf-8")
二.三 GET 方式提交乱码的问题
即使上面配置了CharacterEncodingFilter 过滤器,当get 提交时也会出现乱码。 因为 get提交时,是tomcat 在决定的。
1 . html前端页面设置成 get提交
<form action="/SpringMVC02/user/register.action" method="get">
2 . 前端输入
3 . 后端控制台接收打印
二.四 Get方式提交乱码解决
1 .找到Tomcat的安装路径 conf/server.xml 文件里面的
添加: URIEncoding=“UTF-8” .
<Connector connectionTimeout="20000" port="8090" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
2 . 重启tomcat,进行打印输出。