type
status
date
slug
summary
tags
category
icon
password
一. Servlet
1. 什么是 Servlet ?
Java Servlet 是运行在服务器上的程序,Servlet 本身是一个接口,多数人所说的 Servlet 泛指一个实现了此接口的类,用于扩展基于 HTTP 协议的 web服务器(如 Tomcat,就是一个Servlet容器 ),从而实现网页上的一些交互功能。交互的实现:客户端通过 HTTP 协议发送请求到服务器,服务器调用 Servlet 对请求生成响应后返回给客户端。
SpringBoot 内置了三种 Servlet容器
- Tomcat:默认web服务器,最稳定,最好
- Jetty:最垃圾
- Undertow:更适用于IO密集型服务器,性能和Tomcat差不多
2. Servlet 原理
Servlet 生命周期:
- 初次访问,调用 init() 和 service() 方法
- 后续访问,调用 service() 方法
- 关闭 Tomcat 服务器,调用 destroy() 方法
ServletConfig 接口
Tomcat 实现了 ServletConfig 接口,提供此对象,从而调用 init() 方法初始化 Servlet
ServletContext 接口(三大域对象之一,另外两个是request,session)
Tomcat 实现 ServletContext 接口,该对象是一个全局的储存信息的空间,被称为 Servlet应用程序,它提供了所有 Servlet 所共有的各种资源和功能的访问(即共享),交互时所有用户共用一个 ServletContext 对象可以节省空间,提高效率。
ServletContext 和 request 可以实现 Servlet 之间的通讯
使用request域,request对象会随着请求的结束而结束,资源会被回收(最常用)
使用ServletContext会消耗大量的资源
ServletContext 里保存的对象被称为属性(Attribute),以下方法负责处理属性
GenericServlet 抽象类
GenericServlet 类实现了 Servlet和ServletConfig 接口,对其中的所有方法提供了默认实现,从而简化了代码的维护
HttpServlet 抽象类
HttpServlet 扩展了 GenericServlet,提供了两个 service() 的重写方法,同时定义了7个do方法,分别为:doGet,doPost,doHead,doPut,doTrace,doOptions,doDelete
其中,doGet 和 doPost 方法最常用,这就是为什么我们自己定义一个Servlet,它继承 HttpServlet 后不需要自己重写 service 方法而只需要重写 doGet 或 doPost 方法的原因
3. HTTP协议
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网应用最广泛的一种网络协议,它是TCP/IP协议的一个应用层协议
4. 请求 和 响应
HttpServletRequest 接口
提供了获得请求行、请求头、请求体里各类信息的方法
service中默认使用ISO-8859-1编码,要解决中文乱码,则:
doGet方法中:parameter = newString(parameter.getbytes("iso8859-1"),"utf-8");
doPost方法中:request.setCharacterEncoding("UTF-8");
HttpServletResponse 接口
提供各种响应错误代号,常见404,500等
以流的方式加载请求数据到response缓冲区,随后由Tomcat返回响应到客户端
二. Filter(过滤器)
1. 什么是 Filter?
在客户端和Servlet容器间添加过滤器,可以拦截web资源,并在服务器获取请求前和客户端获取响应前指定特殊功能
2. 编写过滤器
- 实现 Filter接口,重写 doFilter()方法
- 在 web.xml 中配置 filter
- SpringBoot中没有filter的配置文件,则在Filter上使用 @WebFilter 注解,在启动类上加 @ServletComponentScan(basePackages=“全包名”)
Filter 生命周期
- filter对象创建时执行 init() 方法初始化
- 每次拦截到请求,就执行过滤方法 doFilter()
- 服务器关闭,执行 destroy() 方法销毁
3. Interceptor(拦截器)
SpringMVC中使用拦截器,它是过滤器的升级版,使用方法如下
- 实现 HandlerInterceptor接口 并重写方法
- 在 springmvc.xml 中配置拦截器
- SpringBoot没有配置文件,则写一个配置类,实现 WebMvcConfigurer接口
三. Listener(监听器)
1. 什么是 Listener?
监听器可以监听web中对象的创建、销毁、增加,修改,删除等动作的发生,然后通过回调函数进行响应处理
2. Servlet 监听器
- Author:风之旅人
- URL:https://www.hrmi.fun//article/java-web-api
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!