阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

过滤器概述

84次阅读
没有评论

共计 1317 个字符,预计需要花费 4 分钟才能阅读完成。

1、什么是过滤器

过滤器 JavaWeb 三大组件之一,它与 Servlet 很相似!不它过滤器是用来拦截请求的,而不是处理请求的。

当用户请求某个 Servlet 时,会先执行部署在这个请求上的 Filter,如果 Filter“放行”,那么会继承执行用户请求的 Servlet;如果 Filter 不“放行”,那么就不会执行用户请求的 Servlet。

其实可以这样理解,当用户请求某个 Servlet 时,Tomcat 会去执行注册在这个请求上的 Filter,然后是否“放行”由 Filter 来决定。可以理解为,Filter 来决定是否调用 Servlet!当执行完成 Servlet 的代码后,还会执行 Filter 后面的代码。

过滤器概述

2、过滤器入门

其实过滤器与 Servlet 很相似,我们回忆一下如何写的第一个 Servlet 应用!写一个类,实现 Servlet 接口!没错,写过滤器就是写一个类,实现 Filter 接口。

public class HelloFilter implements Filter {public void init (FilterConfig filterConfig) throws ServletException {} public void doFilter (ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {System.out.println("Hello Filter"); } public void destroy () {}}

第二步也与 Servlet 一样,在 web.xml 文件中部署 Filter:

<filter> <filter-name>helloFilter</filter-name> <filter-class>com.tyschool.filter.HelloFilter</filter-class> </filter> <filter-mapping> <filter-name>helloFilter</filter-name> <url-pattern>/index.jsp </url-pattern> </filter-mapping>

应该没有问题吧,都可以看懂吧!

当用户访问 index.jsp 页面时,会执行 HelloFilter 的 doFilter() 方法!在我们的示例中,index.jsp 页面是不会被执行的,如果想执行 index.jsp 页面,那么我们需要放行!

public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {System.out.println("filter start..."); chain.doFilter(request, response); System.out.println("filter end..."); }

过滤器概述

有很多同学总是错误的认为,一个请求在给客户端输出之后就算是结束了,这是不对的!其实很多事情都需要在给客户端响应之后才能完成!

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-06-06发表,共计1317字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中