springmvc中前端提交数据显示乱码的解决方法

发布时间 2023-05-25 20:05:00作者: 烤烤栗子

自己手写一个Filter来处理前台发送的请求:

对前台打来的请求进行设置,servletRequest.setCharacterEncoding("utf-8");

然后放行,继续执行即可。

 

package com.gyh.web.filter;

import javax.servlet.*;
import java.io.IOException;

public class myFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

        servletRequest.setCharacterEncoding("utf-8");
        filterChain.doFilter(servletRequest, servletResponse);

    }

    @Override
    public void destroy() {

    }
}

还需要在web.xml文件中进行配置:

    <filter>
       <filter-name>myFilter</filter-name>
        <filter-class>com.gyh.web.filter.myFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>myFilter</filter-name>
       <url-pattern>/*</url-pattern>
    </filter-mapping>

这种方法的缺点是以及把处理的字符写死了,即拦截处理为UTF-8,无法对其他的进行处理。


第二种方法是通过springmvc自带的过滤器来进行:

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

这样就可以实现将中文乱码转为中文了。