J2EE中的过滤器

1. Servlet过滤器基础
Servlet
过滤器是Servlet的一种特殊用法,主要用来完成一些通用的操作。比如编码的过滤,判断用户的登陆状态等等。Servlet过滤器的适用场合:

A
.认证过滤

B
.登录和审核过滤

C
.图像转换过滤

D
.数据压缩过滤

E
.加密过滤

F
.令牌过滤

G
.资源访问触发事件过滤

Servlet
过滤器接口的构成:

所有的Servlet过滤器类都必须实现javax.servlet.Filter接口。这个接口含有3个过滤器类必须实现的方法:

方法 说明

init(FilterConfig cfg)
这是Servlet过滤器的初始化方法,性质等同与servletinit方法。

doFilter(ServletRequest,ServletResponse,FilterChain)
完成实际的过滤操作,当请求访问过滤器关联的URL时,Servlet容器将先调用过滤器的doFilter方法。FilterChain参数用于访问后续过滤器

destroy() Servlet
容器在销毁过滤器实例前调用该方法,这个方法中可以释放Servlet过滤器占用的资源。,性质等同与servletdestory()方法。

Servlet
过滤器的创建步骤:

A
.实现javax.servlet.Filter接口的servlet

B
.实现init方法,读取过滤器的初始化函数

C
.实现doFilter方法,完成对请求或过滤的响应

D
.调用FilterChain接口对象的doFilter方法,向后续的过滤器传递请求或响应

F.
web.xml中配置
Filter
2.
使用过滤器处理中文问题

  
当用用户登陆页面输入帐号时,如果输入是中文,后台servlet再次输出这个内容时,可能就会是乱码,这是因为serlvet中默认是以ISO-8859-1格式编码的,如果后台有多个Servlet,多个参数,这样就不合适,这个问题,我们可以通过一个过滤器统一解决,使后台的输出输出都支持中文!将ISO-8859-1转码为GBK的那段代码!

3.
使用过滤器认证用户:

每个过滤器也可以配置初始化参数,可以将不需要过滤的地址配置到这个Filter的配置参数中,过滤时,如果请求地址在配置参数中,则放行,这样就避免了在程序中硬编码。每个Filter中初始化时,都可以得到配置对象,在Filter中配置二个不需要过滤的地址,一个是登陆页面,一个是执行登陆认证的servlet

 

package test.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 Guolvqi implements Filter {


	public void destroy() {
	

	}


	public void doFilter(ServletRequest arg0, ServletResponse arg1,
			FilterChain arg2) throws IOException, ServletException {
		arg0.setCharacterEncoding("UTF-8");
		arg1.setCharacterEncoding("UTF-8");
		arg2.doFilter(arg0, arg1);
	}


	public void init(FilterConfig arg0) throws ServletException {


	}

}

 

 

<filter>
		<filter-name>Guolvqi</filter-name>
		<filter-class>test.util.Guolvqi</filter-class>
    </filter>
    <filter-mapping>
    	<filter-name>Guolvqi</filter-name>
    	<url-pattern>/*</url-pattern>
    </filter-mapping>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值