仪器社区

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

寇谥涣 2017-11-24
首先问一个问题,FilterChain参数是做什么用的?假如我就有一个过滤器,FilterChain.doFilter(request,response);这句话是不是必须写? 还有如果有几个过滤器,用FilterChain.doFilter(request,response)调用下一个过滤器的时候,Java怎么知道调用的顺序呢?... 首先问一个问题,FilterChain参数是做什么用的?假如我就有一个过滤器,FilterChain.doFilter(request,response);这句话是不是必须写? 还有如果有几个过滤器,用FilterChain.doFilter(request,response)调用下一个过滤器的时候,Java怎么知道调用的顺序呢?难道是按照web.xml文件里配置的顺序么?我是新手,请教诸位大侠!
评论
全部评论
lushan12207
我来给你简单的说一下吧:)
首先要明确。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继续运行哦
--------------------------------
这个你就可接写/*
好了。它是说对哪些范围起作里这个过滤器
5 0 2017-11-25 0条评论 回复
吉武养冠
Filter不是jsp2.0中特有的,2.0和3.0里面都有,只不过在2.0中用过滤器需要用xml配置文件,而在3.0中不需要配置文件,一般eclipse会为你默认生成:@WebFilter("/Filter").
4 0 2018-07-01 0条评论 回复
您可能感兴趣的社区主题
加载中...
发布 评论