当浏览器请求网页时,它会向 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请求包括:一个请求行,多个消息头,以及内容实体