引言
本篇博文为 Servlet 技术的常见概念及相关细节梳理,意在重学 Java 查漏补缺。
博文随时会进行更新,补充新的内容并修正错漏,该系列博文旨在帮助自己巩固扎实 Java 技能。
毕竟万丈高楼,基础为重,借此督促自己时常温习回顾。
一、概念
Servlet 是 JavaEE 规范之一(接口)
Servlet 是 JavaWeb 三大组件之一
Servlet 程序
Filter 过滤器
Listener 监听器
Servlet 是运行在服务器上的一个 Java 程序,它可以接收客户端发来的请求并响应数据给客户端
二、实现 Servlet 程序
2.1、实现 Servlet 接口
编写一个实现 Servlet 接口的类
实现 service 方法,处理请求并响应数据
web.xml 配置 Servlet 程序的访问地址
2.2、继承 HttpServlet
编写类,继承 HttpServlet
重写 doGet 或 doPost 方法
web.xml 配置 Servlet 程序的访问地址
三、生命周期
第一次访问,创建 Servlet 程序时创建
执行 Servlet 构造器方法
执行 init 初始化方法
每次访问时调用
执行 service 方法
web 工程停止时调用
执行 destroy 销毁方法
四、继承体系
五、常用类/接口
5.1、ServletConfig
Servlet 程序的配置信息类
Servlet 程序和 ServletConfig 对象均由 Tomcat 负责创建
Servlet 程序默认为第一次访问时创建,每个 Servlet 程序创建时便创建一个对应的 ServletConfig 对象传递给 init 方法
常用方法:
String getServletName();
获取 Servlet 程序别名 的值
String getInitParameter(String val1);
获取初始化参数 init-param
ServletContext getServletContext();
获取 ServletContext 对象
5.2、ServletContext
ServletContext 为一个接口,表示 Servlet 上下文对象
一个 web 工程只有一个 ServletContext 对象实例
ServletContext 对象是一个域对象
ServletContext 在 web 工程部署启动时创建,在 web 工程停止时销毁
5.3、HttpServletRequest
只要有请求进入 Tomcat 服务器,Tomcat 便会将请求携带的 HTTP 协议信息进行解析并封装到 Request 对象中,传递给 service 方法(doGet 或 doPost)
可以通过 HttpServletRequest 对象获取到所有请求的信息
常用方法:
getRequestURI()
获取请求的资源路径
getRequestURL()
获取请求的统一资源定位符(绝对路径)
getRemoteHost()
获取客户端的 IP
getHeader(String val1)
获取请求头
getParameter()
获取请求参数
getParameterValues()
获取请求参数(多个值时使用 checkbox)
在处理 POST 请求时
httpServletRequest.setCharacterEncoding("UTF-8");
设置请求体的字符集为 UTF-8 从而解决 POST 请求中文乱码问题
在获取请求参数之前调用才有效
getMethod()
获取请求方法
setAttribute(key, value)
设置域数据
getAttribute(key)
获取域数据
getRequestDispatcher()
获取请求转发对象
5.3.1、请求转发
5.4、HttpServletResponse
只有有请求进入 Tomcat 服务器,Tomcat 便会创建一个 Response 对象传递给 Servlet 程序
可以通过 HttpServletResponse 对象设置需要返回给客户端的信息
通过流将数据传递给客户端
六、HTTP 协议
客户端与服务端之间通信,数据传输需要遵守的规则
数据 -> 报文
客户端给服务端发送数据 -> 请求
服务端给客户端发送数据 -> 响应
6.1、GET 请求
6.2、POST 请求
6.3、响应
6.3.1、常见响应码
响应码
英文含义
中文含义
200
OK
请求成功
301
Moved Permanently
所请求的页面已转移到一个新的 URL
302
Found
所请求的页面已临时转移到一个新的 URL
401
Unauthorized
所请求的页面需要认证登录
403
Forbidden
禁止访问所请求的页面
404
Not Found
服务器无法找到所请求的页面
405
Method Not Allowed
在请求中指定的方法时不允许的
500
Internal Server Error
未完成的请求,服务器遇到了一个意外的情况
502
Bad Gateway
未完成的请求,服务器从上游服务器收到无效响应
503
Service Unavailable
未完成的请求,服务器暂时超载或死机
504
Gateway Timeout
网关超时
6.3.2、常见 MIME 类型
MIME 即 HTTP 协议中的数据类型
全称:Multipurpose Internet Mail Extensions『多功能 Internet 邮件扩充服务』
格式为:『大类型/小类型』并与某一种文件的扩展名相对应
文件类型
扩展名
MIME 类型
超文本标记语言文本
.html
text/html
普通文本
.txt
text/plain
RTF 文本
.rtf
application/rtf
GIF 图形
.gif
image/gif
JPEG 图形
.jpeg, .jpg
image/jpeg
au 声音文件
.au
audio/basic
MIDI 音乐文件
.mid, .midi
audio/midi, audio/x-midi
RealAudio 音乐文件
.ra, .ram
audio/x-pn-realaudio
MPEG 文件
.mpg, .mpeg
video/mpeg
AVI 文件
.avi
video/x-msvideo
GZIP 文件
.gz
application/x-gzip
TAR 文件
.tar
application/x-tar