IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> JavaWeb三大组件—Servlet&&Filter&&Listener -> 正文阅读

[系统运维]JavaWeb三大组件—Servlet&&Filter&&Listener

目录

Servlet

?概念

执行原理

?Servlet体系结构

Servlet中的生命周期方法

Servlet相关配置

Filter:过滤器

概念

作用

快速入门

过滤器细节

Listener:监听器


?



Servlet

?概念

  • Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。
  • 狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。
    ?

执行原理

  • 当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径
  • 查找web.xml文件,是否有对应的<url-pattern>标签体内容
  • 如果有,则找到对应的<serlet-class>全类名
  • tomcat会将字节码文件加载进内存,并创建其对象
  • 调用其方法

??

?Servlet体系结构

Servlet中的生命周期方法

  1. 被创建:执行init方法,只执行一次
    1. Servlet创建
      1. 默认情况下,第一次被访问时,Servlet被创建
      2. 可以配置执行Servlet的创建时机。在<servlet>标签下配置
        1. 第一次被访问时,创建。<load-on-startup>的值为负数
        2. ?在服务器启动时,创建。<load-on-startup>的值为0或正整数
    2. Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的
      1. 多个用户同时访问时,可能存在线程安全问题。
      2. 解决:尽量不要在Servlet中定义成员变量。即使定义了成员变量,也不要对修改值
  2. 提供服务:执行service方法,执行多次
    1. 每次访问Servlet时,Service方法都会被调用一次。
  3. 被销毁:执行destroy方法,只执行一次
    1. Servlet被销毁时执行。服务器关闭时,Servlet被销毁
    2. 只有服务器正常关闭时,才会执行destroy方法。
    3. destroy方法在Servlet被销毁之前执行,一般用于释放资源

Servlet相关配置

?

Filter:过滤器

概念

当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。

作用

一般用于完成通用的操作,如:登录验证、统一编码处理、敏感字符过滤...

快速入门

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

2. 复写方法

3. 配置拦截路径

  • ?? ? web.xml
<filter>
  <filter-name>demo1</filter-name>
<filter-class>cn.itcast.web.filter.FilterDemo1</filter-class>
    </filter>
    <filter-mapping>
       <filter-name>demo1</filter-name>
		<!-- 拦截路径 -->
	      <url-pattern>/*</url-pattern>
    </filter-mapping>
  • ? ? ?注解
   	@WebFilter("/*")//访问所有资源之前,都会执行该过滤器
   	//放行
   	 filterChain.doFilter(servletRequest,servletResponse);

过滤器细节

  • ?过滤器执行流程

? ? ? ? ? ?1.执行过滤器

???????????2.执行放行后的资源

? ? ? ? ? ?3.回来执行过滤器放行代码下边的代码

  • 过滤器生命周期方法
    • init:在服务器启动后,会创建Filter对象,然后调用init方法。只执行一次。用于加载资源
    • doFilter:每一次请求被拦截资源时,会执行。执行多次
    • destroy:在服务器关闭后,Filter对象被销毁。如果服务器是正常关闭,则会执行destroy方法。只执行一次。用于释放资源
  • 过滤器配置详解
    • 拦截路径配置

????????????????1. 具体资源路径: /index.jsp
????????????????2. 拦截目录: /user/*
????????????????3. 后缀名拦截: *.jsp?? ?
????????????????4. 拦截所有资源:/*

  • 拦截方式配置:资源被访问的方式
    • 设置dispatcherTypes属性
      ?? ?1. REQUEST:默认值。浏览器直接请求资源
      ?? ?2. FORWARD:转发访问资源
      ?? ?3. INCLUDE:包含访问资源
      ?? ?4. ERROR:错误跳转资源
      ?? ?5. ASYNC:异步访问资源
    • web.xml配置
      ?? ?设置<dispatcher></dispatcher>标签即可
  • 过滤器链(配置多个过滤器)
    • 执行顺序:如果有两个过滤器:过滤器1和过滤器2
      ?? ?1. 过滤器1
      ?? ?2. 过滤器2
      ?? ?3. 资源执行
      ?? ?4. 过滤器2
      ?? ?5. 过滤器1
    • 过滤器先后顺序问题
      ?? ? 注解配置:按照类名的字符串比较规则比较,值小的先执行
      ?? ?web.xml配置: <filter-mapping>谁定义在上边,谁先执行

Listener:监听器

  • 事件监听机制
    ?? ?事件:一件事情
    ?? ?事件源 :事件发生的地方
    ?? ?监听器 :一个对象
    ?? ?注册监听:将事件、事件源、监听器绑定在一起。 当事件源上发生某个事件后,执行监听器代码
  • ServletContextListener
    • 监听ServletContext对象的创建和销毁
    • 方法:
      ?? ?void contextDestroyed(ServletContextEvent sce)
      ?? ?void contextInitialized(ServletContextEvent sce)
  • 步骤
    • ?定义一个类,实现ServletContextListener接口
    • 复写方法
    • 配置
      ??
      <listener>				 
      <listener-class>
      cn.itcast.web.listener.ContextLoaderListener
      </listener-class>
      </listener>
      ?指定初始化参数<context-param>
      ?注解
      ?? ??? ? @WebListener
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-13 22:13:16  更:2022-03-13 22:17:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 2:24:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码