• Encoding filter 编码过滤器


    1、首先编写过滤器,实际上就是继承了filter接口的一个类,实现其中的init  doChain  和destroy方法

    package com.util;
    
    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;
    
    
    public class EncoderFilter implements Filter {
    
        @Override
        public void destroy() {
            // TODO Auto-generated method stub
            System.out.println("i defined filter destroy~~~~~~~~~~~~~~~~~~~~~~");
        }
    
        @Override
        public void doFilter(ServletRequest arg0, ServletResponse arg1,
                FilterChain arg2) throws IOException, ServletException {
            // TODO Auto-generated method stub
            arg0.setCharacterEncoding("UTF-8");
            System.out.println("the request encoding is " + arg0.getCharacterEncoding());
            System.out.println("enter myself filter~~~~~~~~~~~~~~~~~~~~~~" + new String(arg0.getParameter("men.name").getBytes(), "GBK"));
            arg2.doFilter(arg0, arg1);
        }
    
        @Override
        public void init(FilterConfig arg0) throws ServletException {
            // TODO Auto-generated method stub
            System.out.println("i defined filter init~~~~~~~~~~~~~~~~~~~~~~");
        }
    
        
    
    }
    EncoderFilter.java

    2、在web.xml文件里面,加入如下代码

      <filter>
              <filter-name>encodeFilter</filter-name>
              <filter-class>com.util.EncoderFilter</filter-class>
      </filter>
      <filter-mapping>
              <filter-name>encodeFilter</filter-name>
              <url-pattern>/*</url-pattern>
      </filter-mapping>
    web.xml

    切记,此代码应该加在struts2的过滤器前面的位置。

    这时候访问传汉字应该是没有问题了,可是~~~还是乱码,解决办法:修改tomcat的server.xml文件


    <Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" />
    里添加上后面3个编码的设置

    <Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443"
    useBodyEncodingForURI="true"
    IEncoding="utf-8"
    URIEncoding="utf-8"
    />

    这时候传汉字就正常了!

    关于编码,可以使用request.getCharacterEncoding()方法来看请求时采用的是什么编码!

  • 相关阅读:
    内置函数二
    内置函数一
    生成器
    迭代器相关
    再遇函数
    使用Ant搭建Android开发环境入门
    iOS GameCenter 接入
    手游充值-如何对付淘宝代充店
    分析苹果代充产业链 汇率差+退款造就三线城市千万富翁‍_中新游戏研究_Joynews中新游戏
    iOS消息推送机制的实现
  • 原文地址:https://www.cnblogs.com/tengpan-cn/p/5399944.html
Copyright © 2020-2023  润新知