`
ll_feng
  • 浏览: 383056 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

过滤器在web开发中的应用

    博客分类:
  • j2ee
阅读更多
在现在的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>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics