美文网首页Java技术专题
Springmvc解决中文乱码问题

Springmvc解决中文乱码问题

作者: 爱撒谎的男孩 | 来源:发表于2018-10-07 22:26 被阅读11次

    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>
    

    相关文章

      网友评论

        本文标题:Springmvc解决中文乱码问题

        本文链接:https://www.haomeiwen.com/subject/nuvraftx.html