不明白Filter过滤器怎么用,大家帮帮我

问题描述:

不明白Filter过滤器怎么用,大家帮帮我
首先问一个问题,FilterChain参数是做什么用的?假如我就有一个过滤器,FilterChain.doFilter(request,response);这句话是不是必须写?
还有如果有几个过滤器,用FilterChain.doFilter(request,response)调用下一个过滤器的时候,Java怎么知道调用的顺序呢?难道是按照web.xml文件里配置的顺序么?我是新手,请教诸位大侠!
谢谢您的回答,我再问一个问题,就是
/resource/*这个映射地址怎么写?您这里写的/resource/*是什么意思?不是随便写吧?

我来给你简单的说一下吧:)
首先要明确.Filter是JSP2.0里面的东西 ,顾名思义,也就是过滤器的意思
和你说说如何用吧.要用Filter就得在web.xml中配置
例:
//配置方法和配置普通的Servlet一样的哦
PrivFilter
com.myPriv.filter.PrivFilter
PrivFilter
/resource/*
//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继续运行哦
--------------------------------
这个你就可接写/*
好了.它是说对哪些范围起作里这个过滤器