重学Java - Servlet 简明教程

引言

本篇博文为 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 程序别名 <servlet-name> 的值
  • 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

完整思维导图地址:Servlet 简明教程

posted @ 2021-01-10 18:02  DMCs95  阅读(144)  评论(0编辑  收藏  举报