当浏览器请求网页时,它会向 Web 服务器发送特定信息,这些信息不能被直接读取,因为这些信息是作为 HTTP 请求的头的一部分进行传输的。
我的问题都在代码里了,所以我在我不懂得地方都加了解释
源代码:
package ServletTest;
import java.io.*;
import java.util.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/ServletTestHttp")
public class ServletTestHttp extends HttpServlet {
private static final long serialVersionUID = 1L;
public ServletTestHttp() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String doType = new String(
"<!DOCTYPE html>" +
"<html>"+
"<head><title>ServletHttp测试</title></head>"+
"<body>"+
"<form>"+
"<table width = \"100%\" border = \"1\">"+
"<tr width = 100%>"+
"<td align = \"center\">Head名称</td>"+
"<td align = \"center\">Head值</td>"+
"</tr>"
);
out.print(doType);
Enumeration headerNames = request.getHeaderNames();
//Enumeration是枚举集合,request.getHeaderNames()返回一个Enumeration类型的数据,获取头信息
while(headerNames.hasMoreElements()) {//判断头信息是否还有下一个信息
String paraNames = (String)headerNames.nextElement();
//获取下一个元素,并强制转换成String类型的数据
String paraValues = (String)request.getHeader(paraNames);
//request.getHeader("头信息")
out.print("<tr width = \"100%\">"
+ "<td>"+paraNames + "</td>"
+ "<td>"+paraValues + "</td>"
+"</tr>");
}
out.print("</table>"+"</form>"+"</body>"+"</html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
在这个地方新建一个xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>ServletTestHttp</servlet-name><!-- 类名 -->
<servlet-class>/StartMyJSP/ServletTest</servlet-class><!-- 所在的包名 -->
</servlet>
<servlet-mapping>
<servlet-name>ServletTestHttp</servlet-name><!-- 类名 -->
<url-pattern>/StartMyJSP/ServletTestHttp</url-pattern><!-- 访问的网址 -->
</servlet-mapping>
</web-app>
=============================分割线=============================分割线==================================================
上次在学习Servlet的HTTP请求的时候,对HTTP协议有一定的困惑。所以就找了一下关于HTTP的相关信息
一,什么是HTTP请求?
客户端连接上服务器后,向服务器请求web资源称为客户端向服务器发送了一个HTTP请求。HTTP请求包括:一个请求行,多个消息头,以及内容实体