• 【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>

  • 相关阅读:
    设计模式的分类
    设计模式工厂方法模式
    设计模式的定义
    帕斯卡命名法
    C#编写程序找一找一个二维数组中的鞍点(即该位置上的元素值在行中最大,在该 列上最小。有可能数组没有鞍点)。要求:1.二维数组的大小、数组元素的值在运行时输入;2.程序有友好的提示信息。
    设计模式抽象工厂模式
    设计模式七大原则
    理解C#中的接口
    Linux下如何查看CPU信息, 包括位数和多核信息
    关于结构体内存对齐
  • 原文地址:https://www.cnblogs.com/mindzone/p/12843061.html
Copyright © 2020-2023  润新知