过滤器在web开发中的应用

在现在的web开发中,使用Filter来完成一些支撑性的工作是普遍的。甚至一些web框架就是建立在其之上的。如struts2。没有filter这些框架就无法工做。
没记错的话,filter应是servlet2.3之后加入的新功能。一般的filter都要实现javax.servlet.Filter接口
一般性代码如下:


public class MyFilter implements Filter{
FilterConfig filterConfig = null; //缺省的配置对象
String includeURL = ""; //自定义的参数(在web.xml配置)


/**
* 初始化Filter(在web容器启动时执行)
*/
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
includeURL = filterConfig.getInitParameter("includeURL");
}



/**
* 过滤请求,用户提交请求时起作用
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest)request;
HttpServletResponse res = (HttpServletResponse)response;
HttpSession session = req.getSession();


String currUrl = req.getRequestURL().toString();
includeURL = new StringBuffer("http://").append(req.getHeader("host")).append(req.getContextPath()).toString()+includeURL;
//do some things

//当前工作全部完成后,将请求放开给过滤器链的下一filter
chain.doFilter(req, res);
}

/**
* 当filter销毁时执行
*/
public void destroy() {
filterConfig = null;
includeURL = null;
}
}


前面提到过filter是依赖servlet的,所以最后还要在web.xml进行配置:

<filter>
<filter-name>myFilter</filter-name>
<filter-class>com.myapp.filter.MyFilter</filter-class>
<init-param>
<param-name>includeURL</param-name>
<param-value>/index.jsp</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>myFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值