java过滤器——filter的使用和配置

在做DRP的过程中用到了filter。前几天昌哥和欢姐在小会议室向我们介绍了AOP的思想,用到filter时觉得它们两者特别相似。

如下图:

在我们正常的编程中,每一条线,都是从上到下依次调用,而filter是在每一个完整的调用中横着“切了一刀”。通过配置,它可以对任意代码路径进行过滤。

这里就以转码/设置字符集为例,简单了解一下如何使用filter。

建立Filter

CharsetEncodingFilter.java

package com.drp.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;

/**采用filter统一处理filter
 * @author Danny
 *
 */
public class CharsetEncodingFilter implements Filter {

	@Override
	public void destroy() {}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		System.out.println("CharsetEncodingFilter---->>>>Filter开始");
		request.setCharacterEncoding("utf-8");    //设置字符集
		chain.doFilter(request, response);    //继续执行
                System.out.println("CharsetEncodingFilter---->>>>Filter结束");
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {}

}

配置filter

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

  <filter>
  	<filter-name>CharsetEncodingFilter</filter-name>
  	<filter-class>com.drp.filter.CharsetEncodingFilter</filter-class>
  </filter>
  <filter-mapping><!-- 此filter对所有的jsp页面都有过滤效果 -->
  	<filter-name>CharsetEncodingFilter</filter-name>
  	<url-pattern>*.jsp</url-pattern>
  </filter-mapping>
</web-app>

此处配置所起的作用是,此filter对所有的jsp页面都有设置字符集的效果,当每次访问jsp页面时,都会执行filter中的doFilter()方法,因此每次访问jsp页面前后,都可以在Console中看到doFilter方法输出的 “ CharsetEncodingFilter---->>>>Begin ” 和 “CharsetEncodingFilter---->>>>End ”。

至此,无论访问哪个jsp页面,都会事先设置其字符集,不用分别对每个页面都进行设置了。

时间: 2024-12-21 01:33:40

java过滤器——filter的使用和配置的相关文章

Java过滤器Filter的原理及配置_学习笔记

Filter中文意思为过滤器.顾名思义,过滤器可在浏览器以及目标资源之间起到一个过滤的作用.例如:水净化器,可以看成是生活中的一个过滤器,他可以将污水中的杂质过滤,从而使进入的污水变成净水. 对于WEB应用来说,过滤器是一个驻留在服务器中的WEB组件,他可以截取客户端和WEB资源之间的请求和响应信息. WEB资源可能包括Servlet.JSP.HTML页面等 创建一个新的Filter文件 配置web.xml文件.Filter的配置和Servlet的配置很像,但是Filter的<url-patte

servlet和jsp页面过滤器Filter的作用及配置

刚刚有个朋友问我,Servlet的过滤器有什么作用? 现在发个帖子说明一下,            过滤器是一个对象,可以传输请求或修改响应.它可以在请求到达Servlet/JSP之前对其进行预处理,而且能够在响应离开Servlet /JSP之后对其进行后处理.所以如果你有几个Servlet/JSP需要执行同样的数据转换或页面处理的话,你就可以写一个过滤器类,然后在部署描述文 件(web.xml)中把该过滤器与对应的Servlet/JSP联系起来.你可以一个过滤器以作用于一个或一组servlet

java过滤器Filter笔记

一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术之一,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp,Servlet, 静态图片文件或静态html文件等进行拦截,从而实现一些特殊的功能.例如实现URL级别的权限访问控制.过滤敏感词汇.压缩响应信息等一些高级功能. Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter.通过Fi

java 过滤器Filter中chain.doFilter()之前和之后代码的执行顺序

过滤器拦截到响应url的请求后会先执行doFilter()方法中chain.doFilter()之前的代码,然后执行下一个过滤器或者servelt.紧接着执行chain.doFilter()之后的代码. 一下为两个过滤器的执行顺序: 过滤器一: package com.rskd_yswb.lib.filter; import javax.servlet.*; import java.io.IOException; public class HttpRequestAndResponseFilter

XSS过滤JAVA过滤器filter 防止常见SQL注入

Java项目中XSS过滤器的使用方法. 简单介绍: XSS : 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的. sql注入所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执

Java过滤器Filter使用详解

过滤器 过滤器是处于客户端与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器对请求进行修改.判断等,把不符合规则的请求在中途拦截或修改.也可以对响应进行过滤,拦截或修改响应. 如图,浏览器发出的请求先递交给第一个filter进行过滤,符合规则则放行,递交给filter链中的下一个过滤器进行过滤.过滤器在链中的顺序与它在web.xml中配置的顺序有关,配置在前的则位于链的前端.当请求通过了链中所有过滤器后就可以访问资源文件了,如果不能通过,则可能在中间某个过滤器中被处理掉.

过滤器filter的配置

推荐:Servlet之Filter详细讲解 多个filter拦截的同一个请求,按web.xml配置顺序进行过滤 返回的响应的从最后配置的filter开始过滤 具体配置步骤: 编写Filter实现类 1 package cn.kihyou.b2c.filter; 2 3 import java.io.IOException; 4 5 import javax.servlet.Filter; 6 import javax.servlet.FilterChain; 7 import javax.ser

Java中Filter过滤器的使用

过滤器过滤器是处于客户端与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器对请求进行修改.判断等,把不符合规则的请求在中途拦截或修改.也可以对响应进行过滤,拦截或修改响应.如下图,浏览器发出的请求先递交给第一个filter进行过滤,符合规则则放行,递交给filter链中的下一个过滤器进行过滤.过滤器在链中的顺序与它在web.xml中配置的顺序有关,配置在前的则位于链的前端.当请求通过了链中所有过滤器后就可以访问资源文件了,如果不能通过,则可能在中间某个过滤器中被处理掉.过滤

【java web】过滤器filter

一.过滤器简介 过滤器filter依赖于servlet容器 所谓过滤器顾名思义是用来过滤的,Java的过滤器能够为我们提供系统级别的过滤,也就是说,能过滤所有的web请求, 这一点,是拦截器无法做到的.在Java Web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或 者struts的action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者struts