JavaWeb三大组件

Java Web 三大组件

一 Servlet

已总结:运行在服务器端口的小程序 Servlet

二 Filter

2.1 概念

用户访问服务器资源时,Filter过滤器可以将请求拦截下来,完成一些特殊的功能,比如说登录验证、统一编码处理、敏感字符过滤……

2.2 快速上手
  1. 定义一个类,实现接口Filter。不需要导入jar包,引入资源 import javax.servlet.*;

  2. 复写方法:init()doFilter()destroy()doFilter() 编写过滤代码后一定要调用 chain.doFilter(req, resp); 继续处理请求

  3. 配置拦截路径,用 web.xml 文件配置或者注解 @WebFilter(...)

2.3 更多使用
2.3.1 Filter过滤器执行流程

Filter过滤器执行流程

2.3.2 Filter过滤器的生命周期方法
  • init() :在服务器启动后,会创建 Filter 对象,然后调用 init 方法。只执行一次。用于加载资源。
  • doFilter() :每一次请求被拦截资源时,会执行。执行多次。
  • destroy() :在服务器关闭后,Filter 对象被销毁。如果服务器是正常关闭,则会执行 destroy 方法。只执行一次。用于释放资源。
2.3.3 Filter过滤器配置详解
拦截路径,有四种:说明
具体资源路径,如:/index.jsp只有访问 index.jsp 资源时过滤器才会执行。
拦截目录,如:/user/*访问 /user 下的所有资源时,过滤器都会被执行。
后缀名拦截,如:*.jsp访问所有后缀名为 .jsp资源时,过滤器都会被执行。
拦截所有资源:/*访问所有资源时,过滤器都会被执行。

还可以通过资源请求方法拦截,如写在注解中的拦截方法:@WebFilter(value = "/*", dispatcherTypes = DispatcherType.FORWARD)

  • DispatcherType.REQUEST,默认值,浏览器直接请求资源。
  • DispatcherType.FORWARD,转发访问资源。
  • DispatcherType.INCLUDE,包含访问资源。
  • DispatcherType.ERROR,错误跳转资源。
  • DispatcherType.ASYNC,异步访问资源。
2.3.4 多个Filter过滤器执行拦截的先后顺序

假如现在有两个Filter过滤器:Filter1.javaFilter2.java,都使用的注解配置 @WebFilter("/*") ,此时Filter过滤器的执行顺序按照类名的字符串比较规则比较,值小的先执行:先执行 Filter1.java ,再执行 Filter2.java ,然后去访问资源 Servlet / .jsp ,拿到资源后原路返回,依次执行 Filter2.javaFilter1.java

如果是使用的 web.xml 文件配置过滤器,那么要看 <filter-mapping> 标签中哪个过滤器在前,哪个在后,在前的先执行。

三 Listener

3.1 概念

是一个事件监听机制。

事件:一件事情。

事件源:事件发生的地方。

监听器:一个对象。

注册监听:将事件、事件源、监听器绑定在一起。当事件源上发生某个事件后,执行监听器代码。

3.2 ServletContextListener

有好几种Listener,其中最常用的是 ServletContextListener ,用来监听 ServletContext 对象的创建和销毁。

ServletContextListener中的方法说明
void contextInitialized(ServletContextEvent sce)ServletContext对象创建后会调用该方法(该方法一般用来加载资源文件applicationContext.xml)
void contextDestroyed(ServletContextEvent sce)ServletContext对象被销毁之前会调用该方法

快速上手使用 ServletContextListener

  1. 定义一个类,实现接口 ServletContextListener

  2. 复写方法

  3. 配置。通过注解配置:@WebListener

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值