Springmvc解决中文乱码问题

Springmvc解决中文乱码问题

POST

  • 在表单提交的时候,如果遇到中文乱码的情况,springmvc提供了一个CharacterEncodingFilter过滤器,我们只需要在web.xml文件中配置即可

注意

  1. 表单的提交方式必须是post
  2. web.xml中配置CharacterEncodingFilter编码格式要和JSP页面的编码格式一致
  3. 解决中文乱码必须使用过滤器(在DispatcherServlet之前执行),而不能使用springmvc的拦截器,因为过滤器在DispatcherServlet之前,所以设置好编码后,DispatcherServletController都可以获取到正确的数据,而拦截器运行在DispatcherServlet之后,也即是意味着DispatcherServlet获取的数据已经是乱码,那么在拦截器中调整乱码是没有意义的

web.xml配置

    <!-- 配置 CharacterEncodingFilter解决中文乱码问题-->
    <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        
        <!-- 配置编码格式为UTF-8 -->
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

GET

  • 即使配置了中文乱码过滤器CharacterEncodingFilter,但是这个只会针对POST请求才会起作用,如果我们在使用GET请求的时候携带的参数有中文的话,那么服务器接收的时候就会产生中文乱码。
  • 我们在eclipse中修改Tomcatserver.xml文件中的内容参数即可,如下:
server.xml
  • 我们只需要在<connector connectionTimeout="20000"......>在这个最后加上URIEncoding="UTF-8"即可

总结

  • 那么以后创建项目时候的完整的web.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">
    <display-name>Springmvc</display-name>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>


    <!-- 配置前端控制器DispatcherServlet -->
    <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 配置springMVC配置文件的路径,这里如果想要使用默认的可以不用配置 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <!-- classpath表示根路径,这里找的项目根路径下的applicationContext.xml -->
            <param-value>classpath:spring-*.xml</param-value>
        </init-param>
        <!-- 当tomcat启动的时候就加载,设置启动的优先级 -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <!-- 配置分发规则,这个是用来控制所有的请求,只要是请求后缀为.do的都会拦截分发 -->
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    
    
    <!-- 配置 CharacterEncodingFilter解决中文乱码问题-->
    <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        
        <!-- 配置编码格式为UTF-8 -->
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 对于java中的思考的方向,1必须要看前端的页面,对于前端的页面基本的逻辑,如果能理解最好,不理解也要知道几点。 ...
    神尤鲁道夫阅读 4,243评论 0 0
  • IOC 控制反转容器控制程序对象之间的关系,而不是传统实现中,有程序代码之间控制,又名依赖注入。All 类的创建,...
    irckwk1阅读 4,599评论 0 0
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong阅读 22,717评论 1 92
  • 市场的伟大,在于它能够将毫无关系的陌生人联系在一起,并充分发挥各自的积极性,人人为己的同时,人人受益,提高人类整体...
    ladder_builder阅读 2,806评论 0 0
  • 杨泽平 春之梦 纷纷扬扬的雪花 送来了春的讯息 屋檐下一行行冰吊 奏出欢快的旋律 绿萝悄无声息地勃发 新生的叶子 ...
    窗外白杨阅读 1,482评论 3 3