目录



请求行用来说明请求类型和要访问的资源以及所使用的HTTP版本,格式如下:
请求类型 请求的路径 协议的版本(1.1)
请求头是紧接着请求行(即第一行)之后的部分,用来说明服务器要使用的附加信息,
格式 (key:value)如下:
主机 请求长度 请求的浏览器相关信息
空白行就是请求头部的空行,即使后面的请求数据为空则必须有空行。请求体也叫请求数据,可以添加任意的其他数据。
POST /task01_demo01/demo1.html HTTP/1.1
Host: localhost:8088
Content-Length: 21
Cache-Control: max-age=0
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64)name=scott&pwd=123456
响应行用来说明HTTP协议版本号和状态码以及状态消息,格式如下:
协议的版本(1.0 1.1) 状态码 (200 成功 404 路径错误 500 服务错误) 状态信息
响应头用来说明客户端要使用的一些附加信息,格式(key:value)。
空白行就是响应头部的空行,即使后面的请求数据为空则必须有空行。响应体用来服务器返回给客户端的文本信息。
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 588
Date: Thu, 08 Sep 2021 12:59:54 GMT
示例1
这是一个HTML页面

- <Connector port="8080" protocol="HTTP/1.1"
- connectionTimeout="20000"
- redirectPort="8443" />
- <role rolename="manager-gui"/>
- <user username="admin" password="123456" roles="manager-gui"/>
-
- <servlet>
-
- <servlet-name> HelloServlet servlet-name>
-
- <servlet-class> com.ak.studyServlt01.HelloServlet servlet-class>
- servlet>
-
- <servlet-mapping>
-
- <servlet-name> HelloServlet servlet-name>
-
- <url-pattern> /hello url-pattern>
- servlet-mapping>
http://localhost:8080/工程路径/url-pattern的内容
(1)基本概念
(2)常用的方法
| 方法声明 | 功能介绍 |
| void init(ServletConfig config) | 由servlet容器调用,以向servlet指示servlet正在被放入服务中 |
| void service(ServletRequest req,ServletResponse res) | 由servlet容器调用,以允许servlet响应请求 |
| ServletConfig getServletConfig() | 返回ServletConfig对象,该对象包含此servlet的初始化和启动参数 |
| String getServletInfo() | 返回有关servlet的信息,如作者、版本和版权 |
| void destroy() | 由servlet容器调用,以向servlet指示该servlet正在退出服务 |
(1)基本概念
(2)常用的方法
| 方法声明 | 功能介绍 |
| abstract void service(ServletRequest req,ServletResponse res) | 由servlet容器调用允许servlet响应请求 |
(1)基本概念
(2)常用的方法
| 方法声明 | 功能介绍 |
| void doGet(HttpServletRequest req,HttpServletResponse resp) | 处理客户端的GET请求 |
| void doPost(HttpServletRequest req,HttpServletResponse resp) | 处理客户端的POST请求 |
| void init() | 进行初始化操作 |
| void service(HttpServletRequest req,HttpServletResponse resp) | 根据请求决定调用doGet还是doPost方法 |
| void destroy() | 删除实例时释放资源 |

发出GET请求的主要方式:
(1)在浏览器输入URL按回车
(2)点击超链接
(3)点击submit按钮,提交
发出POST请求的方法如下:
点击submit按钮,提交
(1)基本概念
(2)常用的方法
| 方法声明 | 功能介绍 |
| String getParameter(String name) | 以字符串形式返回请求参数的值,如果该参数不存在,则返回空值 |
| String[] getParameterValues(String name) | 返回一个字符串对象数组,其中包含给定请求参数所具有的所有值,如果该参数不存在,则返回空值 |
| Enumeration getParameterNames() | 返回包含此请求中包含的参数名称的字符串对象的枚举。如果请求没有参数,则方法返回空枚举 |
| Map | 返回请求参数的键值对,一个键可以对应多个值 |
| String getRemoteAddr() | 返回发送请求的客户端或最后一个代理的IP地址 |
| int getRemotePort() | 返回发送请求的客户端或最后一个代理的端口号 |
(1)基本概念
(2)常用的方法
| 方法声明 | 功能介绍 |
| String getRequestURI() | 返回此请求的资源路径信息 |
| StringBuffer getRequestURL() | 返回此请求的完整路径信息 |
| String getMethod() | 返回发出此请求的HTTP方法的名称,例如GET、POST |
| String getQueryString() | 返回路径后面请求中附带的参数 |
| String getServletPath() | 返回此请求中调用servlet的路径部分 |
(1)基本概念
(2)常用方法
| 方法声明 | 功能介绍 |
| PrintWriter getWriter() | 返回可向客户端发送字符文本的PrintWriter对象 |
| String getCharacterEncoding() | 获取响应内容的编码方式 |
| void setContentType(String type) | 如果尚未提交响应,则设置发送到客户端响应的内容类型。内容类型可以包括字符编码规范,例如text/html;charset=UTF-8 |
(1)基本概念
(2)常用的方法
| 方法声明 | 功能介绍 |
| void sendRedirect(String location) | 使用指定的重定向位置URL向客户端发送临时重定向响应 |
- // 继承HttpServlet
- public class HelloWorld extends HttpServlet {
- // 重写HttpServlet中的doGet方法
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
- // 设置响应输出编码,避免中文乱码
- response.setContentType(“text/html;charset=utf-8”);
- // 获取响应输出流
- PrintWriter out= response.getWriter();
- // 利用输出流输出信息
- out.println(“<html><body> Hello world!</body></html>”);
- //关闭流
- out.close();
- }
- }
接收之前设置编码方式:
request.setCharacterEncoding(“utf-8”)
提示:
必须在调用request.getParameter(“name”)之前设置
将接收到的中文乱码重新编码:
// 接收到get请求的中文字符串
String name = request.getParameter("name");
// 将中文字符重新编码,默认编码为ISO-8859-1
String userName = new String(name.getBytes(“ISO-8859-1”),“utf-8");
(1)基本概念
(2)配置方式
-
- <servlet>
- <servlet-name>actionservletservlet-name>
- <servlet-class>com.hyq.demo01.ActionServletservlet-class>
-
- <init-param>
-
- <param-name>configparam-name>
-
- <param-value>struts.xmlparam-value>
- init-param>
- servlet>
(3)常用的方法
| 方法声明 | 功能介绍 |
| String getServletName() | 返回Servlet的别名 |
| String getInitParameter(String name) | 返回包含初始化参数值的字符串,如果该参数不存在,则返回null |
| Enumeration getInitParameterNames() | 将servlet的初始化参数的名称作为字符串对象的枚举返回,如果servlet没有初始化参数,则返回空枚举 |
| ServletContext getServletContext() | 返回对调用方正在其中执行的ServletContext的引用 |
(1)基本概念
(2)配置方式
-
- <context-param>
- <param-name>usernameparam-name>
- <param-value>scottparam-value>
- context-param>
- <context-param>
- <param-name>passwordparam-name>
- <param-value>tigerparam-value>
- context-param>
(3)常用的方法
| 方法声明 | 功能介绍 |
| String getInitParameter(String name) | 返回包含初始化参数值的字符串,如果该参数不存在,则返回null |
| Enumeration getInitParameterNames() | 将servlet的初始化参数的名称作为字符串对象的枚举返回,如果servlet没有初始化参数,则返回空枚举 |
| String getRealPath(String path) | 返回包含给定虚拟路径的实际路径的字符串 |
| String getContextPath() | 返回与此上下文关联的主路径 |
| InputStream getResourceAsStream(String path) | 将位于指定路径的资源作为InputStream对象返回 |
| void setAttribute(String name, Object object) | 将指定的属性名和属性值绑定到当前对象 |
| Object getAttribute(String name) | 根据执行的属性名获取属性值 |
| void removeAttribute(String name) | 删除指定的属性名信息 |