目录
一、HttpServlet
① init() 方法
② service() 方法
③ destroy() 方法
④ doGet()方法
⑤ doPost()方法
⑥ doPut/deDelete/doOptions
常见面试题: 请你谈谈Servlet的生命周期
二、Http请求:HttpServletRequest
1. 获取请求行信息
2. 获取请求头信息(header信息)
3. 获取 form 表单的数据(queryString或者body信息)
三、Http响应:HttpServletResponse
1. 设置响应行的信息
2. 设置响应头信息
3. 设置响应体信息
四、大致总结
一、HttpServlet
① init() 方法
在 Servlet 的生命期中,仅执行一次 init() 方法。它是在服务器装入 Servlet 时执行(也就是HttpServlet实例化之后)。 无论有多少客户机访问 Servlet,都不会重复执行 init() 。
② service() 方法
service() 方法是 Servlet 的核心。每当一个客户请求一个HttpServlet 对象,该对象的service() 方法就要被调用,而且传递给这个方法一个"请求"(ServletRequest)对象和一个"响应"(ServletResponse)对象作为参数。 在 HttpServlet 中已存在 service() 方法。缺省的服务功能是调用与 HTTP 请求的方法相应的 do 功能。
③ destroy() 方法
destroy() 方法仅执行一次,即在服务器停止执行该方法。有可能会调用不到,比如杀进程或者电脑直接断电。
④ doGet()方法
收到GET请求的时候调用(由service方法调用,Tomcat收到请求,会先调用Service,再调用doxxx,实际开发中很少重写Service,一般重新doxxx方法即可)
⑤ doPost()方法
收到POST请求的时候调用(由service方法调用)
⑥ doPut/deDelete/doOptions
收到其他请求的时候调用 (由service方法调用)
常见面试题: 请你谈谈Servlet的生命周期
二、Http请求:HttpServletRequest
1. 获取请求行信息
返回值 | 方法名 | 描述 |
---|---|---|
String | getMethod() | 该方法用于获取 HTTP 请求方式(如 GET、POST 等) |
String | getRequestURI() | 该方法用于获取请求行中的资源名称部分,即位于 URL 的主机和端口之后,参数部分之前的部分 |
String | getQueryString() | 该方法用于获取请求行中的参数部分,也就是 URL 中“?”以后的所有内容 |
String | getContextPath() | 返回指示请求上下文的请求URI部分 |
String | getRemoteAddr() | 该方法用于获取客户端的 IP 地址 |
2. 获取请求头信息(header信息)
返回值类型 | 方法声明 | 描述 |
---|---|---|
Enumeration | getHeaderNames() | 返回一个枚举,包含请求中所有的头名(.header的头名) |
String | getHeader(String name) | 通过头名返回头名的值(如这个头名有多个,只返回第一个) |
Enumeration | getHeaders(String name) | 该方法返回指定头名所有的值(适用于有这个头名有多个) |
返回值类型 | 方法声明 | 描述 |
---|---|---|
String | getContentType() | 该方法用于获取 Content-Type 头字段的值。 |
int | getContentLength() | 该方法用于获取 Content-Length 头字段的值 。 |
String | getCharacterEncoding() | 该方法用于返回请求消息的字符集编码 。 |
3. 获取 form 表单的数据(queryString或者body信息)
返回值类型 | 方法声明 | 功能描述 |
---|---|---|
Enumeration | getParameterNames ( ) | 以枚举集合的形式返回请求中所有参数名 |
String | getParameter(String name) | 返回指定参数名的参数值 |
String [ ] | getParameterValues (String name) | 以字符串数组的形式返回指定参数名的所有参数值(HTTP 请求中可以有多个相同参数名的参数) |
三、Http响应:HttpServletResponse
1. 设置响应行的信息
返回值类型 | 方法 | 描述 |
---|---|---|
void | setStatus(int status) | 用于设置 HTTP 响应消息的状态码,并生成响应状态行。 |
2. 设置响应头信息
返回 | 方法 | 描述 |
---|---|---|
void | addHeader(String name,String value) | 添加一个有名称和值的header,存在也不覆盖,继续添加 |
void | setHeader (String name,String value) | 添加一个有名称和值的header,存在直接覆盖 |
void | addIntHeader(String name,int value) | 增加 值为 int 类型的响应头字段,不覆盖 |
void | setIntHeader(String name, int value) | 设置 值为 int 类型的响应头字段,覆盖 |
void | setContentType(String type) | 设置 Servlet 输出内容的 MIME 类型 和 字符编码格式。 |
void | setCharacterEncoding(String charset) | 设置输出内容 的字符编码格式。 |
3. 设置响应体信息
返回值类型 | 方法 | 描述 |
---|---|---|
void | sendRedirect | 重定向URL |
OutputStream | getOutputStream() | 向body中写入二进制格式数据 |
PrintWriter | getWriter() | 向body中写入 文本 格式数据 |