zoukankan      html  css  js  c++  java
  • 【SpringMVC】08 Post请求乱码

    这是以Post请求方式接受来的中文字符乱码

    就像之前JavaWeb阶段的情况一样

    所以,按照JavaWeb的方法,我们应该只需要在获取之前设置好编码处理就行了

    可以先从这个处理方法开始试试,但是参数在编码之前就已经获取了,所以这样是没有用的

    于是测试第二种方法,因为所有的请求都会被过滤器最先拦截下来,再放行给Servlet程序

    这里本来想使用注解的,但是好像没有API支持吧,用不了就还是老办法XML配置

    package cn.dai.filter;
    
    import javax.servlet.*;
    import java.io.IOException;
    
    /**
     * @author ArkD42
     * @file SpringMVC
     * @create 2020 - 05 - 07 - 14:38
     */
    
    public class EncodingFilter implements Filter {
    
        public void init(FilterConfig filterConfig) throws ServletException {
    
        }
    
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            servletRequest.setCharacterEncoding("UTF-8");
            // 一般来说返回数据不会出现什么乱码
            // servletResponse.setCharacterEncoding("UTF-8");
    
            // 不要忘记放行请求哦
            filterChain.doFilter(servletRequest, servletResponse);
        }
    
        public void destroy() {
    
        }
    }

    web.xml的配置

    <!-- 还需要在配置一下注册到Web中-->
        <filter>
            <filter-name>EF</filter-name>
            <filter-class>cn.dai.filter.EncodingFilter</filter-class>
        </filter>
    
        <filter-mapping>
            <filter-name>EF</filter-name>
            <!-- / 不能过滤,必须是/* -->
            <url-pattern>/*</url-pattern>
        </filter-mapping>

    访问测试成功,中文获取正常

    要注意的是过滤器的路径配置【也成为路由配置】不可以单写反斜杠

    否则过滤的只是单个工程首页的过滤,应该写反斜杠 + 通配符星号

    这个过滤器我们可以自己写,也可以交给SpringMVC的过滤器来完成

    我们只需要配置web.xml即可

    【这个过滤器也一样,路由要写成 / *,否则也会失效】

        <filter>
            <filter-name>SpringMVC EF</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>
        </filter>
    
        <filter-mapping>
            <filter-name>SpringMVC EF</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>

  • 相关阅读:
    NHibernate开源框架Cuyahoga学习之数据访问实现
    Petshop4.0 缓存设计学习
    Jquery实现ToolTip之元素定位
    客户单操作Cookie
    .Net 通过MySQLDriverCS操作MySQL
    NHibernate的基本使用
    提高ASP.NET性能的十大方法
    工作流引擎下基于表达式Tree复杂验证的实现
    C#注册表操作
    WinForm应用程序中的ComboBox实现ReadOnly功能
  • 原文地址:https://www.cnblogs.com/mindzone/p/12843061.html
Copyright © 2011-2022 走看看