Spring MVC中文乱码解决

乱码的解决


当提交域名称为中文,如name=张三就会乱码
Struts2中采用属性来解决
在 struts.xml 加

 <constant name="struts.i18n.encodeing" value="GBK"/>

1 . 通过过滤器来解决乱码,Spring MVC中提供CharacterEncodingFilter来解决(只对POST提交方法有效),在web.xml自定义Filter(在Servlet前面)

<filter>
    <filter-name>CharacterEncodingFilterfilter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
    param>
        <param-name>encodingparam-name>
        <param-value>utf-8param-value>    
    param>
  filter>
  <filter-mapping>
    <filter-name>CharacterEncodingFilterfilter-name>
    *.do
  filter-mapping>
<body>
   <form action="hello.do" method="post">
    name<input type="text" name="name">
    <input type="submit" value="submit">
   form>
   <br>
  body>
    @RequestMapping("/hello")
    public String hello(String name,ModelMap model){
        model.addAttribute("name", name);
        System.out.println(name);
        return "index.jsp";//注意是没有视图解析器的时候

    }

2 . GET方式(直接在URL输入)
(1)修改tomcat的Server.xml配置文件解决

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

改为

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"  URIEncoding="UTF-8"/>

(2) 自定义乱码解决的过滤器

最后不要忘记统一编码,尤其不要忘记修改JSP的PageEncoding,以后我们的项目和页面的编码都设置为utf-8


调试记载:

1 . ctrl+shift+T打开类可以看到参数描述,如上述的characterEncodingFilter就会发现有Encoding参数,就可以通过init-param定义。

Spring MVC中文乱码解决_第1张图片

2 . 导入源码
Attach source→找到相关的sources.jar(如spring web sources.jar)

3 . ctrl+点击进入JDK查看实现细节(和ctrl+shift+T搜索一样)

4 .URI是用来标识网上的资源的
URI分为URL和URN这两大类。
URL与URN的不同之处在于前者不仅标识资源,而且还指出了访问资源的方式。比如采用何种协议(http,ftp…),而URN则没有。

你可能感兴趣的:(Spring-MVC)