博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
J2EE (三) Filter详解
阅读量:7112 次
发布时间:2019-06-28

本文共 2167 字,大约阅读时间需要 7 分钟。

  1. 简介
    1. Filter这个词第一个看到时以为是化学里面的漏斗呢,因为所学专业经常在实验室里面做一些实验,对于这个印象也比较深刻,作为常识大家也知道利用沙子/漏斗/纱布,可以将浑浊的水过滤为很干净的水,看下面如:
      1.  
    1. 计算机中这样定义:Filter 技术是servlet 2.3 新增加的功能。servlet2.3是sun公司于2000年10月发布的,它的开发者包括许多个人和公司团体,充分体现了sun公司所倡导的代码开放性原则。在众多参与者的共同努力下,servlet2.3比以往功能都强大了许多,而且性能也有了大幅提高。
  1. 原理
    1. Web开发中HttpServletRequestHttpServletReponse是两个重要的对象,当Request/Reponse在客户端与服务器端进行传输的过程中,filter对这两个对象进行过滤,这里不仅仅是单纯的过滤掉一些东西,更主要的是增加一些功能/服务。
    2. 我们做的只是在Web.xml配置文件中声明一下,也可以称filter为声明式服务。
    1. filter也是让Tomcat容器管理,Tomcat对其进行初始化和赋值
  1. 例子:设置字符集
    1. 在没有提出filter概念之前,我们需要往每一个编辑的页面上添加一句设置编码方式的代码如
      1. 代码
      2. request.setCharacterEncoding("GB18030");
    1. 如果我们的系统需要几千个页面那么每个页面都要写上这个功能,会很麻烦,倘若需要改动编码方式时会更麻烦,filter给我们解决了这个问题。下面为具体实现
      1. Filter class
        1. 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;/** * 设置字符集 * @author LLS * */public class CharSetEncodingFilter implements Filter {	//保存编码 方式 	private String encoding=null;		@Override	public void destroy() {		// TODO Auto-generated method stub	}	@Override	public void doFilter(ServletRequest request, ServletResponse reponse,			FilterChain chain) throws IOException, ServletException {							//统一设置字符集		request.setCharacterEncoding("GB18030");		//向下传递		chain.doFilter(request, reponse);			}	@Override	public void init(FilterConfig filterConfig) throws ServletException {		//通过 配置 文件取得初始化参数		this.encoding=filterConfig.getInitParameter("encoding");			}}
      1. Web.xml
        1.   
          CharSetEncodingFilter
          com.bjpowernode.drp.util.filter.CharSetEncodingFilter
          encoding
          GB18030
          CharSetEncodingFilter
          *.jsp
  1. 应用广泛
    1. 它的功能并不是只有这些,它给我们提供了一种思想让我们可以自由选择增加和删除一些功能功能,在程序调用过程中横向向程序里面注入代码段,注入新功能,提高了可扩展的灵活性。

转载于:https://www.cnblogs.com/lilongsheng/archive/2013/05/25/3226046.html

你可能感兴趣的文章
如何查看ubuntu下显卡驱动是否已经成功安装
查看>>
机器学习日报 【干货】
查看>>
没有沟通不畅这一说
查看>>
引用与指针
查看>>
u-boot第二阶段简要讲解
查看>>
weblogic9.2 console 图形监控wldf控制台扩展
查看>>
Java基础之泛型
查看>>
Mysql insert into...select...不产生锁问题
查看>>
PHP之文档转换的代码
查看>>
elasticsearch6 设置分片数及副本数
查看>>
MongoDB的简单学习3-固定集合和GridFS
查看>>
spring 发送 email
查看>>
如何制作含校验码的流水条码?
查看>>
openstack对接vcenter问题集合
查看>>
什么是BFC
查看>>
第二周工作总结:C++
查看>>
使用CentOS DVD作为默认yum源
查看>>
DB2常用命令
查看>>
Gtk-Message: Failed to load module "canberra-gtk-module"
查看>>
用于应付输入错误时的一段关键代码
查看>>