Android--运行时权限申请

清华大佬告诉你认识 Python GUI编程框架

  返回  

springmvc乱码问题(SpringMVC学习笔记九)

2021/8/21 18:08:42 浏览:

表单jsp ,主要是因为提交表单的方式是post,如果是get不会出现乱码问题

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="/e/t1" method="post">
  <input type="text" name="name">
  <input type="submit">
</form>

</body>
</html>

提交表单是中文时

  

 但是无论是提交表单jsp,还是回显数据的视图的jsp,都用了:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

不应该还有乱码,那么出现乱码就在中间的传输过程了(也就是java层面)

输出name可以查看到

注意:设置servelt请求和响应的字符集编码无法解决乱码问题,

方法一、自定义过滤器

1、建一个filter包

2、创一个实现Filter接口的类(注意是servlet包的接口)

过滤器是请求首先通过的地方

public class EncodingFilter 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");
        servletResponse.setContentType("text/html;charset=UTF-8");
        filterChain.doFilter(servletRequest,servletResponse);//让过请求和响应继续运行
    }

    @Override
    public void destroy() {

    }
}

3、然后在web.xml中注册过滤器 

切记过滤的文件要是 /* 如果只是 的话,jsp文件过滤不了,因为此处提交表单和回显数据的视图都是jsp文件

    <filter>
        <filter-name>f1</filter-name>
        <filter-class>com.ming.filter.EncodingFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>f1</filter-name>
        <!--/*表示过滤所有类型文件的请求-->
        <url-pattern>/*</url-pattern>
    </filter-mapping>

方法二、SpringMVC提供的过滤器

使用方法:直接在webxml文件中注册过滤器即可,不用手写过滤器实现类

    <!--2、SpringMVC提供的过滤器-->
    <filter>
        <filter-name>springmvc</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <!--加载servlet时就启动上面这个过滤器-->
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>springmvc</filter-name>
        <!--注意
        /   不会匹配到.jsp   偏偏拦截不到.jsp可能是因为jsp在核心处,为了安全
        /*  会匹配到.jsp    但是会找不到控制器
        -->
        <url-pattern>/</url-pattern>
    </filter-mapping>

 CharacterEncodingFilter过滤器底层依旧是是实现了FIlter接口

 注意:

只要是修改web.xml文件就需要重启(restart server)服务器tomcat,只是重新发布(redeploy)是无法生效的。

方法三、改Tomcat中servle.xml核心配置文件的字符集编码(慎用)

    <Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" 
			   URLEncoding="UTF-8"/>

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号