首先要明确。Filter是JSP2.0里面的东西 ,顾名思义,也就是过滤器的意思
和你说说如何用吧。要用Filter就得在web.xml中配置
例:
//配置方法和配置普通的Servlet一样的哦
<filter>
????? <filter-name>PrivFilter</filter-name>
????? <filter-class>com.myPriv.filter.PrivFilter</filter-class>
?? </filter>
<filter-mapping>
??? <filter-name>PrivFilter</filter-name>
??? <url-pattern>/resource/*</url-pattern>
</filter-mapping>
//com.myPriv.filter.PrivFilter是这个过滤器所在的位置。当然这个过滤器必须实现接口javax.servlet.Filter。
然后就可以在过滤器这个接口方法中增加过滤条件了
public void doFilter(ServletRequset request, ServletResponse response,FilterChain chain)
thows ServletException, IOException{
}
然后你可以把过滤条件写出来,写在doFilter方法里面
我这里写一个简单的例子:
public void doFilter(ServletRequest req, ServletResponse res,
?? FilterChain chain) throws IOException, ServletException {
?? HttpServletRequest request = (HttpServletRequest) req;
?? HttpServletResponse response = (HttpServletResponse) res;
?? HttpSession session=request.getSession();
?? ServletContext application=session.getServletContext();
??
????? if(session.getAttribute("userSession")==null)
????? {
?????? response.sendRedirect("error/priv_error.jsp");
?????? return;
????? }
????? else
????? {
?????? chain.doFilter(request, response);
????? }
}
在上面的这个过滤方法中,如果session.getAttribute("userSession")==null)那就跳转到错误页面。如果不为空,则继续
所以
chain.doFilter(request, response);的意思就是跳转到下个页面,
明白了吧?
------------------------
java会在处理每一个Servlet时都走一次Filter的。所以你不必担心你的过滤不起作用了
而且chain.doFilter(request.response);
是必须的。没有他,程序就不会继续了:)他是让你的request和response继续运行哦