小白,不太明白Filter过滤器怎么用,请求大佬帮帮我

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

胡子哥哥
浏览 245回答 2
2回答

米脂

我来给你简单的说一下吧:)首先要明确。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继续运行哦--------------------------------这个你就可接写/*好了。它是说对哪些范围起作里这个过滤器

忽然笑

Filter不是jsp2.0中特有的,2.0和3.0里面都有,只不过在2.0中用过滤器需要用xml配置文件,而在3.0中不需要配置文件,一般eclipse会为你默认生成:@WebFilter("/Filter").
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python
Java