系列文章目录
Servlet 的运行原理_crazy_xieyi的博客-CSDN博客
如何创建一个Servlet项目(Maven)?_crazy_xieyi的博客-CSDN博客
Tomcat下载、安装及使用介绍_crazy_xieyi的博客-CSDN博客
文章目录
- 一、HttpServlet
- 二、HttpServletRequest
- 三、HttpServletResponse
一、HttpServlet
我们写 Servlet 代码的时候, 首先第一步就是先创建类, 继承自 HttpServlet, 并重写其中的某些方法。
方法名称 | 调用时机 |
init
|
在 HttpServlet 实例化之后被调用一次
|
destory
|
在 HttpServlet 实例不再使用的时候调用一次
|
service
|
收到 HTTP 请求的时候调用
|
doGet
|
收到 GET 请求的时候调用(由 service 方法调用)
|
doPost
|
收到 POST 请求的时候调用(由 service 方法调用)
|
doPut/doDelete/doOptions/…
|
收到其他请求的时候调用(由 service 方法调用)
|
我们实际开发的时候主要重写 doXXX 方法, 很少会重写 init / destory / service 。注意: HttpServlet 的实例只是在程序启动时创建一次. 而不是每次收到 HTTP 请求都重新创建实例。
那么Servlet的生命周期是多少呢?
Servlet在实例化之后调用一次 init 方法;Servlet在每次收到请求的时候调用一次service;Servlet在销毁之前调用一次destory。
二、HttpServletRequest
当 Tomcat 通过 Socket API 读取 HTTP 请求(字符串), 并且按照 HTTP 协议的格式把字符串解析成
HttpServletRequest 对象。
方法 | 描述 |
String getProtocol()
|
返回请求协议的名称和版本
|
String getMethod()
|
返回请求的 HTTP 方法的名称,例如,GET、POST 或 PUT
|
String getRequestURI()
|
从协议名称直到 HTTP 请求的第一行的查询字符串中,返回该请求的 URL 的一部分
|
String getContextPath()
|
返回指示请求上下文的请求 URI 部分
|
String getQueryString()
|
返回包含在路径后的请求 URL 中的查询字符串
|
Enumeration
getParameterNames()
|
返回一个 String 对象的枚举,包含在该请求中包含的参数的名称
|
String getParameter(String
name)
|
以字符串形式返回请求参数的值,或者如果参数不存在则返回 null
|
String[]
getParameterValues(String
name)
|
返回一个字符串对象的数组,包含所有给定的请求参数的值, 如果参数不存在则返回 null
|
Enumeration
getHeaderNames()
|
返回一个枚举,包含在该请求中包含的所有的头名
|
String getHeader(String
name)
|
以字符串形式返回指定的请求头的值
|
String
getCharacterEncoding()
|
返回请求主体中使用的字符编码的名称
|
String getContentType()
|
返回请求主体的 MIME 类型,如果不知道类型则返回 null
|
int getContentLength()
|
以字节为单位返回请求主体的长度,并提供输入流,或者如果 长度未知则返回 -1。
|
InputStream
getInputStream()
|
用于读取请求的 body 内容. 返回一个 InputStream 对象
|
通过这些方法可以获取到一个请求中的各个方面的信息,
请求对象是服务器收到的内容, 不应该修改. 因此上面的方法也都只是 “读” 方法, 而不是 “写”
方法。
三、HttpServletResponse
Servlet 中的 doXXX 方法的目的就是根据请求计算得到相应, 然后把响应的数据设置到
HttpServletResponse 对象中。然后 Tomcat 就会把这个 HttpServletResponse 对象按照 HTTP 协议的格式, 转成一个字符串, 并通过 Socket 写回给浏览器。
方法 | 描述 |
void setStatus(int sc)
|
为该响应设置状态码
|
void setHeader(String name,
String value)
|
设置一个带有给定的名称和值的 header. 如果 name 已经存在, 则覆盖旧的值
|
void addHeader(String
name, String value)
|
添加一个带有给定的名称和值的 header. 如果 name 已经存在, 不覆盖旧的值, 并列添加新的键值对
|
void setContentType(String
type)
|
设置被发送到客户端的响应的内容类型
|
void
setCharacterEncoding(String
charset)
|
设置被发送到客户端的响应的字符编码(MIME 字符集)例如,UTF-8
|
void sendRedirect(String
location)
|
使用指定的重定向位置 URL 发送临时重定向响应到客户端
|
PrintWriter getWriter()
|
用于往 body 中写入文本格式数据
|
OutputStream
getOutputStream()
|
用于往 body 中写入二进制格式数据
|
注意
: 响应对象是服务器要返回给浏览器的内容, 这里的重要信息都是程序猿设置的. 因此上面的方
: 响应对象是服务器要返回给浏览器的内容, 这里的重要信息都是程序猿设置的. 因此上面的方
法都是 “写” 方法。对于状态码/响应头的设置要放到 getWriter / getOutputStream 之前. 否则可能设置失效。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/94459.html