为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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

2 回答

?
米脂

TA贡献1836条经验 获得超3个赞

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



查看完整回答
反对 回复 2022-01-04
?
忽然笑

TA贡献1806条经验 获得超5个赞

Filter不是jsp2.0中特有的,2.0和3.0里面都有,只不过在2.0中用过滤器需要用xml配置文件,而在3.0中不需要配置文件,一般eclipse会为你默认生成:@WebFilter("/Filter").

查看完整回答
反对 回复 2022-01-04
  • 2 回答
  • 0 关注
  • 244 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信