zoukankan      html  css  js  c++  java
  • servlet3.0 定义编码过滤器

    servlet3.0中,不用再在web.xml中建立映射,直接用注解器即可,这个样子看起来有点像pyhton中的装饰器(不知道功能实现是否一样)。

    tomcat使用的的编码方式:iso8859-1,而我们做其他事情的时候一般都是用utf-8,比如插入数据库的时候,如果不用utf-8,则会出现乱码。

    解决方法有很多:

    1.修改tomcat中的默认编码格式

    2. 在要处理的servlet中加上,这两句话,但是我们不止有一个servlet,那么多的servlet都需要加上,有点太麻烦了。

    3.用过滤器修改编码格式。

    第一和第二种方法都有其局限性,我来重点介绍第三种方法。‘

    在新建文件的时候新建一个filter文件:

    在doFilter()中写要执行的操作

    这里是将request和response中的编码格式都设置成utf-8,一个最简单的编码过滤器

    package com.filter;
    
    import java.io.IOException;
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.annotation.WebFilter;
    
    @WebFilter(urlPatterns = "/*")// '/*'表示所有的文件都要过滤
    public class EncodeFilter implements Filter
    {
        
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
                throws IOException, ServletException
        {
            request.setCharacterEncoding("utf-8");
            response.setCharacterEncoding("utf-8");
            chain.doFilter(request, response);
            return ;
        }
        public void init(FilterConfig fConfig) throws ServletException
        {
            
        }
        @Override
        public void destroy()
        {
    
        }
    }

    注意:在 chain.doFilter(request, response);后一定要加 return;不加会出现404错误,。

  • 相关阅读:
    撬动百亿VRAR产业,让VR们“造”起来
    带你熟悉鸿蒙轻内核Kconfig使用指南
    教你Python字符串的基本操作:拆分和连接
    从翻硬币游戏看敏捷开发
    求助,请教各位,如何牵头做一个项目
    Qt三方库开发技术:QXlsx介绍、编译和使用
    项目实战:Qt+ffmpeg摄像头检测工具
    OpenSSL 自述
    用故事说透HTTPS
    一起来看看大佬是怎样配置nginx虚拟主机
  • 原文地址:https://www.cnblogs.com/GhostRiderQin/p/11646510.html
Copyright © 2011-2022 走看看