编码拦截器

流程:
web.xml

<filter>
		<filter-name>CharsetEncodingFilter</filter-name>
		<filter-class>com.zte.util.CharsetEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>gbk</param-value>
		</init-param>
</filter>
	
	<filter-mapping>
		<filter-name>CharsetEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

(1)写web.xml,tomcat一启动,创建两个config
实现ServletConfig的接口类对象
实现FilterConfig的接口类对象
(2)读取web.xml组件,将filter组件的初始化参数封装到config中
(3)tomcat继续读取filter,通过filter-class到WEBINFO/classes中找到filter包对应的classes文件中找到filter对象
(4)执行init,把封装的初始化参数注入
(5)在init()中拿到cofig初始化参数,将参数传给filter组件的实例全局化变量
(6)通过表单发请求(post),调用doFilter()处理
(7)下传demo01.jsp,客户端跳转,输出内容

public void init(FilterConfig config) throws ServletException {
		this.encoding = config.getInitParameter("encoding");
		System.out.println("encoding=" + encoding);
	}

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
			FilterChain chain) throws IOException, ServletException {
            //造型
		HttpServletRequest request = (HttpServletRequest)servletRequest;
		HttpServletResponse response = (HttpServletResponse)servletResponse;
		//System.out.println("CharsetEncodingFilter.doFilter()");
		//设置字符集
            //this.encoding从实例全局化变量拿编码方式
		request.setCharacterEncoding(this.encoding);只能对表单里的汉字做编码
		//System.out.println("--------doFilter begin----------");
		//下传,如果继续执行其他的操作,必须显示的执行如下语句
		chain.doFilter(request, response);
		//System.out.println("--------doFilter end----------");
	}
 public void destroy() {
		System.out.println("CharsetEncodingFilter.destroy()");
	}

缺点:直对post请求的汉字处理
编码拦截器与业务没有关系,可以通过第三方插件部署,具有通用性

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值