【JavaWeb】---->三大组件

本文概述了Servlet接口的创建与配置,如何通过注解和web.xml定义访问路径;接着介绍了Filter的作用,包括拦截器配置和生命周期,以及过滤器链的执行顺序;最后讲解了Listener,重点是ServletContextListener的使用和配置。掌握这些,提升你的Web开发理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Servlet接口

  Servlet是运行在服务器端的小程序,Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则。

1、Servlet的创建

  1. 创建JavaEE项目
  2. 定义一个类,实现Servlet接口
  3. 实现接口中的抽象方法
  4. 配置Servlet

2、配置Servlet

web.xml

   <servlet>
       <servlet-name>demo1</servlet-name>
       <servlet-class>web.servlet.servletDemo1</servlet-class>
   </servlet> 
    <servlet-mapping>
        <servlet-name>demo1</servlet-name>
        <url-pattern>/demo1</url-pattern>
    </servlet-mapping>

注解配置

urlpartten:Servlet访问路径
一个Servlet可以定义多个访问路径 : @WebServlet({“/d4”,“/dd4”,“/ddd4”})

@WebServlet({"/A1", "/A2"})

路径定义规则:

  1. /xxx:路径匹配
  2. /xxx/xxx:多层路径,目录结构
  3. *.do:扩展名匹配

3、Servlet的体系结构

Servlet – 接口

GenericServlet – 抽象类

HttpServlet – 抽象类

GenericServlet:

将Servlet接口中其他的方法做了默认空实现,只将service()方法作为抽象

将来定义Servlet类时,可以继承GenericServlet,实现service()方法即可

HttpServlet(推荐使用):

对http协议的一种封装,简化操作

  1. 定义类继承HttpServlet
  2. 复写doGet/doPost方法

点此进入Servlet详解

二、Filter:过滤器

  当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。一般用于完成通用的操作,如:登录验证、统一编码处理、敏感字符过滤。

1、 使用步骤

  1. 定义一个类,实现接口Filter
  2. 复写方法
  3. 配置拦截路径

2、 配置详解

拦截路径配置

1、具体资源路径:/index.jsp   只有访问index.jsp资源时,过滤器才会被执行
2、拦截目录: /user/*	 	 访问/user下的所有资源时,过滤器都会被执行
3、后缀名拦截:*.jsp		访问所有后缀名为jsp资源时,过滤器都会被执行
4、拦截所有资源:/*		访问所有资源时,过滤器都会被执行

拦截方式配置

  1. 注解配置
    设置dispatcherTypes属性,有以下值:
1、REQUEST:默认值。浏览器直接请求资源
2、FORWARD:转发访问资源
3、 INCLUDE:包含访问资源
4、 ERROR:错误跳转资源
5、ASYNC:异步访问资源
  1. Web.xml配置
    设置标签即可

3、过滤器链

  过滤器链就是同时配置多个过滤器:如果有两个过滤器,过滤器A和过滤器B,那么它们的执行顺序如下
   过滤器A—>过滤器B—>资源执行—>过滤器B—>过滤器A

过滤器先后顺序
1. 注解配置:
按照类名的字符串比较规则比较,值小的先执行,如:AFilter和BFilter比较第一个字符,A比B小所以A先执行。

2. web.xml配置
谁定义在上边谁先执行

4、过滤器的生命周期方法

//@WebFilter("/*")//访问所有资源前都会执行该过滤器
public class FilterDemo1 implements Filter {

    //在服务器启动后,会创建Filter对象,然后调用init方法,只执行一次,用于加载资源
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        Filter.super.init(filterConfig);
    }

    //在服务器关闭后,Filter对象被销毁。如果服务器是正常关闭,则会执行destory方法,只执行一次
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

        //放行
        chain.doFilter(request, response);
    }

    //每一次请求被拦截资源时,会执行,执行多次
    @Override
    public void destroy() {
        Filter.super.destroy();
    }
}

5、过滤器的执行流程

   执行过滤器—>执行放行后的资源—>回来执行过滤器放行代码下边的代码

三、Listener:监听器

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

ServletContextListener

  ServletContextListener用于监听ServletContext对象的创建和销毁。
主要方法如下:

@WebListener
public class ContextLoaderListener implements ServletContextListener {
	//ServletContext对象创建后会调用该方法
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {}
    //ServletContext对象被销毁之前会调用该方法
    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
    }
    }

使用步骤:

  1. 定义一个类,实现ServletContextListener接口
  2. 复写方法
  3. 配置
    1、web.xml配置
<listener>
        <listener-class>cn.intcast.web.listener.ContextLoaderListener</listener-class>
    </listener>
	2、注解配置: @WebListener
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值