前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >过滤器概述

过滤器概述

作者头像
星哥玩云
发布2022-09-14 21:06:38
2750
发布2022-09-14 21:06:38
举报
文章被收录于专栏:开源部署开源部署

1、什么是过滤器

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

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

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

image20200418154129717.png
image20200418154129717.png

2、过滤器入门

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

代码语言:javascript
复制
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:

代码语言:javascript
复制
  <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页面,那么我们需要放行!

代码语言:javascript
复制
	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..."); 
	}
image20200418154308176.png
image20200418154308176.png

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、什么是过滤器
  • 2、过滤器入门
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档