javaweb-Servlet与过滤器
文章目录
- javaweb-Servlet与过滤器
- 一、Servlet:server applet
- 二、Servlet做了什么?
- 三、Servlet是什么?
- 四、jsp与Servlet关系
- 五、Servlet API
- 1.主要Servlet API介绍
- 2.如何创建Servlet
- 3.Servlet中主要方法
- 4.ServletRequest
- 5.ServletResponse
- 6.ServletConfig
- 六、Servlet生命周期
- Servlet部署与运行
- Servlet生命周期各个阶段
- 七、Servlet继承结构
- 1.Servlet规范接口
- 2、ServletConfig配置接口
- 3、GenericServlet抽象类
- 八、过滤器
- 1、过滤器概述
- 2.过滤器的生命周期
- 过滤器链的使用
一、Servlet:server applet
*概念:运行在服务器端口的小程序
*Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则(接口)
*将我们自定义一个类,实现Servlet接口,复写方法
二、Servlet做了什么?
本身不做任何业务处理
只是接收请求并决定调用哪个JavaBean去处理请求
确定用哪个页面来显示处理返回的数据
三、Servlet是什么?
Server+Applet,是一种服务器端的Java应用程序
只有当一个服务器端的程序使用了Servlet API的时候,这个服务端的程序才能称之为Servlet
四、jsp与Servlet关系
Servlet是运行在服务器端的Java应用程序
五、Servlet API
1.主要Servlet API介绍
javax.servlet.Servlet接口
所有Java Servlet的基础接口类,规定了必须由Servlet具体类实现的方法集javax.servlet.GenericServlet类
是Servlet的通用版本,是一种与协议无关的Servlet
javax.servlet.http.HttpServlet类
在GenericServlet基础上扩展的基于Http协议的Servlet
2.如何创建Servlet
实现Servlet
接口继承GenericServlet类
继承HttpServlet类
3.Servlet中主要方法
init():Servlet的初始化方法,仅仅会执行一次
service():处理请求和生成响应
destroy():在服务器停止并且程序中的Servlet对象不再使用的时候调用,只执行一次
4.ServletRequest
封装客户的请求信息
作用相当于JSP内置对象request
5.ServletResponse
创建响应信息,将处理结果返回给客户端
作用相当于JSP内置对象response
6.ServletConfig
包含了Servlet的初始化参数信息
六、Servlet生命周期
-
简单的叙述生命周期,就是对象在容器中从开始创建到销毁的过程
-
Servlet对象是Servlet容器
创建
的,生命周期方法都是由容器(目前我们使用的是Tomcat)调用
的Servlet部署与运行
修改web.xml(部署描述文件)
添加:把Servlet内部名映射到一个Servlet类名
添加:把用户访问的URL映射到Servlet的内部名
注意:与中的必须一致
Servlet生命周期各个阶段
加载和实例化
初始化
处理请求
销毁
生命周期 | 谁来做 | 何时做 |
---|---|---|
实例化 | Servlet 容器 | 当 Servlet 容器启动或者容器检测到客户端请求时 |
初始化 | Servlet 容器 | 实例化后,容器调用 Servlet 的 init() 初始化对象 |
处理请求 | Servlet 容器 | 得到客户端请求并做出处理时 |
销毁 | Servlet 容器 | 当程序中的****Servlet 对象不再使用的时候, 或者 Web 服务器停止运行的时候 |
生命周期 | 对应方法 | 执行时机 | 执行次数 |
---|---|---|---|
构造对象 | 构造器 | 第一次请求或者容器启动 | 1 |
初始化 | init() | 构造完毕后或者容器启动 | 1 |
处理服务 | service(req, resp). | 每次请求 | 多次 |
销毁 | destory() | 容器关闭 | 1 |
七、Servlet继承结构
抽象父类HttpServlet
的类图
1.Servlet规范接口
init方法
容器在构造servlet对象后,自动调用的方法
容器负责实例化一个ServletConfig对象,并在调用该方法时传入
ServletConfig对象可以为Servlet 提供初始化参数
service方法
处理请求并做出响应的服务方法,每次请求产生时由容器调用
容器创建一个ServletRequest对象和ServletResponse对象,容器在调用service方法时,传入这两个对象
destroy方法
Servlet实例在销毁之前调用的方法
public interface Servlet {
// 初始化方法
void init(ServletConfig config) throws ServletException;
// 获取ServletConfig对象
ServletConfig getServletConfig();
// service(服务)
void service(ServletRequest req, ServletResponse res) throws ServletException, IOException;
// 获取servlet的信息,例如作者、版本和版权。默认返回空字符串
String getServletInfo();
// destroy(销毁)
void destroy();
}
2、ServletConfig配置接口
public interface ServletConfig {
// 获取Servlet的名称
String getServletName();
// 获取上下文ServletContext对象
ServletContext getServletContext();
// 获取初始化参数
String getInitParameter(String name);
// 获取初始化的参数列表--可以理解为Iterable迭代去
Enumeration<String> getInitParameterNames();
}
3、GenericServlet抽象类
omcat创建ServletConfig对象,并且调用init方法,传入config
init和destroy方法都是空实现,子类去实现,调用时机tomcat来把握
ServletConfig对象可以获取此Servlet的初始化参数和全局上下文对象
service核心方法这里依然只是声明,需要子类去重写
八、过滤器
1、过滤器概述
Filter,即过滤器,是JAVAEE技术规范之一,作用目标资源的请求进行过滤的一套技术规范,是Java Web项目中最为实用的技术之一
Filter接口定义了过滤器的开发规范,所有的过滤器都要实现该接口
Filter的常用应用包括但不限于: 登录权限检查,解决网站乱码,过滤敏感字符,日志记录,跨域的处理…
过滤器
是向Web应用程序的请求和响应添加功能的Web服务组件过
滤器可以统一地集中处理请求和响应
使用过滤器技术实现对请求数据的过滤
2.过滤器的生命周期
实例化
初始化:init()
过滤:doFilter()
销毁:destroy()
-
过滤器作为web项目的组件之一,和Servlet的生命周期类似,略有不同
-
没有servlet的load-on-startup的配置,
默认就是系统启动立刻构造
过滤器链的使用
- 一个web项目中,可以同时定义
多
个过滤器 - 多个过滤器对同一个资源进行过滤时,工作位置有
先后
,整体形成一个工作链,称之为过滤器链
- 一个web项目中,可以同时定义
阶段 | 对应方法 | 执行时机 | 执行次数 |
---|---|---|---|
创建对象 | 构造器 | web应用启动时 | 1 |
初始化方法 | void init(FilterConfig filterConfig) | 构造完毕 | 1 |
过滤请求 | void doFilter(ServletRequest , ServletResponse , FilterChain ) | 每次请求 | 多次 |
销毁 | default void destroy() | web应用关闭时 | 1次 |
| 构造完毕 | 1 |
| 过滤请求 | void doFilter(ServletRequest , ServletResponse , FilterChain ) | 每次请求 | 多次 |
| 销毁 | default void destroy() | web应用关闭时 | 1次 |