Java Web——Filter过滤器



     Filter(过滤器技术),常用于web开发中对web资源,如JSPServlet,静态图片等进行过滤、拦截的作用。通过过滤器可实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。

Filter开发步骤:

1、创建java类实现Filter接口,并创建doFilter方法。

2、在web.xml文件中使<filter><filter-mapping>元素对编写的filter类进行注册,并设置它所能拦截的资源。

Filter实施原理:

     在提交request请求到JSP中间,创建一个Filter类,界面提交的任何请求,均通过Filter先进行过滤,再提交到JSP中,执行相应操作。

Filter应用实例——JSP字符集设置:

     在DRP系统中,为防止界面乱码,每个JSP页面在提交的时,都会在服务端代码里写上编码格式,如Request.setCharacterEncoding("GB18030");其调用流程如下:

     浏览器向Tomcat提交请求,服务器创建HttpServletRequestHttpServletReseponce对象,传到JSP页面中,页面通过设置字符集Request.setCharacterEncoding("GB18030")取得表单参数。

     这样做的唯一特点就是:一行代码,不断重复;也就是程序有多少个JSP页面,就会重复多少次Request.setCharacterEncoding("GB18030")

利用Filter过滤器实现设置字符集操作:

1、创建CharSetEncodingFilter类,实现Filter接口,同时编写doFilter方法

public class CharSetEncodingFilter implements Filter {

	//private String encoding; //通过encoding参数在配置文件中设定具体编码值
	
	public void destroy() {
		
	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {		
		//设置字符集
		request.setCharacterEncoding("GB18030");   //1、具体值
		//request.setCharacterEncoding("encoding");  //2、获取配置文件中的encoding值,以传参的形式获取
		
		//继续执行,有filter就调用别的filter,没有就直接传表单到jsp
		chain.doFilter(request, response);
	}

	public void init(FilterConfig filterConfig) throws ServletException {
		
		//this.encoding=filterConfig.getInitParameter("encoding"); //初始化,获得encoding参数值

	}

2、在web.xml文件中使用<filter><filter-mapping>元素对编写的filter类进行注册,并设置它所能拦截的资源。

<filter>
  	<filter-name>CharSetEncodingFilter</filter-name>
  	<filter-class>com.drp.util.CharSetEncodingFilter</filter-class>
  	
  	<init-param>
  		<param-name>encoding</param-name>
  		<param-value>GBK</param-value>   通过encoding配置字符集类型  ,也可通过直接<filter-name> 
  	</init-param>
  	
  </filter>
 
 <filter-mapping>
 	<filter-name>CharSetEncodingFilter</filter-name>
 	<url-pattern>*.jsp</url-pattern>
 </filter-mapping>
其中,在Web.xml文件中配置Filter的作用范围有如下几个常用配置:

<url-pattern>*.jsp</url-pattern>对所有的JSP进行过滤

<url-pattern>/servlet/*</url-pattern>servlet文件夹下的JSP进行过滤

<url-pattern>/*</url-pattern>对所有文件进行过滤

<url-pattern>*.jsp</url-pattern>

Filter在应用中的优势:

     通过在Filter中进行设置,过滤验证提交的表单,通过的才传给JSP,不管提交多少个表单,在Filter这一层统统进行过滤验证,一劳永逸。并且,Filter过滤服务在表单和JSP之间独立存在着,与两者均不存在耦合关系,只通过Servlet进行初始化创建,所以不仅可以多个叠加建立,以Filter链的形式,创建多层防护,而且还可热插拔,要或不要都显得易操作好处理;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值