测试开发进阶——Servlet ——Servlet 客户端 HTTP 请求——Servlet 服务器 HTTP 响应

常见http头信息如下:

Servlet 读取 HTTP 头的方法

下面的方法可用在 Servlet 程序中读取 HTTP 头。这些方法通过 HttpServletRequest 对象可用。

 

 

 

=============================================

HTTP Header 请求实例

下面的实例使用 HttpServletRequest 的 getHeaderNames() 方法读取 HTTP 头信息。

该方法返回一个枚举,包含与当前的 HTTP 请求相关的头信息。

一旦我们有一个枚举,我们可以以标准方式循环枚举,使用 hasMoreElements() 方法来确定何时停止,使用 nextElement() 方法来获取每个参数的名称。

//导入必需的 java 库
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

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("/DisplayHeader")

//扩展 HttpServlet 类
public class DisplayHeader extends HttpServlet {

    // 处理 GET 方法请求的方法
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应内容类型
response.setContentType("text/html;charset=UTF-8");

PrintWriter out = response.getWriter();


String title = "HTTP Header 请求实例 - 菜鸟教程实例";


String docType = "<!DOCTYPE html> "; out.println(docType + "<html> " + "<head><meta charset="utf-8"><title>" + title + "</title></head> "+ "<body bgcolor="#f0f0f0"> " + "<h1 align="center">" + title + "</h1> " + "<table width="100%" border="1" align="center"> " + "<tr bgcolor="#949494"> " + "<th>Header 名称</th><th>Header 值</th> "+ "</tr> ");

Enumeration headerNames = request.getHeaderNames();

while(headerNames.hasMoreElements())
{ String paramName = (String)headerNames.nextElement(); out.print("<tr><td>" + paramName + "</td> "); String paramValue = request.getHeader(paramName); out.println("<td> " + paramValue + "</td></tr> "); } out.println("</table> </body></html>"); }


// 处理 POST 方法请求的方法 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{ doGet(request, response); }
}

  

以上测试实例是位于 TomcatTest 项目下,对应的 web.xml 配置为:

<?xml version="1.0" encoding="UTF-8"?>  
<web-app>  
  <servlet>  
    <!-- 类名 -->  
    <servlet-name>DisplayHeader</servlet-name>  
    <!-- 所在的包 -->  
    <servlet-class>com.runoob.test.DisplayHeader</servlet-class>  
  </servlet>  
  <servlet-mapping>  
    <servlet-name>DisplayHeader</servlet-name>  
    <!-- 访问的网址 -->  
    <url-pattern>/TomcatTest/DisplayHeader</url-pattern>  
  </servlet-mapping>  
</web-app>

  

现在,调用上面的 Servlet,访问 http://localhost:8080/TomcatTest/DisplayHeader 会产生以下结果:

==========================================================

Servlet 服务器 HTTP 响应

正如前面的章节中讨论的那样,当一个 Web 服务器响应一个 HTTP 请求时,

响应通常包括一个状态行、一些响应报头、一个空行和文档。一个典型的响应如下所示:

状态行包括 HTTP 版本(在本例中为 HTTP/1.1)、一个状态码(在本例中为 200)、一个对应于状态码的短消息(在本例中为 OK)。

下表总结了从 Web 服务器端返回到浏览器的最有用的 HTTP 1.1 响应报头,您会在 Web 编程中频繁地使用它们:

 

设置 HTTP 响应报头的方法

下面的方法可用于在 Servlet 程序中设置 HTTP 响应报头。这些方法通过 HttpServletResponse 对象可用。

 

 

HTTP Header 响应实例

您已经在前面的实例中看到 setContentType() 方法,

下面的实例也使用了同样的方法,此外,我们会用 setIntHeader() 方法来设置 Refresh 头。

//导入必需的 java 库
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

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("/Refresh")

//扩展 HttpServlet 类
public class Refresh extends HttpServlet {

    // 处理 GET 方法请求的方法
      public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException
      {
// 设置刷新自动加载时间为 5 秒 response.setIntHeader("Refresh", 5);


// 设置响应内容类型 response.setContentType("text/html;charset=UTF-8");
//使用默认时区和语言环境获得一个日历 Calendar cale = Calendar.getInstance();

//将Calendar类型转换成Date类型 Date tasktime=cale.getTime();
//设置日期输出的格式 SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");


//格式化输出 String nowTime = df.format(tasktime);
PrintWriter out = response.getWriter();
String title = "自动刷新 Header 设置 - 菜鸟教程实例";
String docType = "<!DOCTYPE html> "; out.println(docType + "<html> " + "<head><title>" + title + "</title></head> "+ "<body bgcolor="#f0f0f0"> " + "<h1 align="center">" + title + "</h1> " + "<p>当前时间是:" + nowTime + "</p> "); }

// 处理 POST 方法请求的方法 public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException
{ doGet(request, response); } }

  

以上测试实例是位于 TomcatTest 项目下,对应的 web.xml 配置为:

<?xml version="1.0" encoding="UTF-8"?>  
<web-app>  
  <servlet>  
     <!-- 类名 -->  
    <servlet-name>Refresh</servlet-name>  
    <!-- 所在的包 -->  
    <servlet-class>com.runoob.test.Refresh</servlet-class>  
  </servlet>  
  <servlet-mapping>  
    <servlet-name>Refresh</servlet-name>  
    <!-- 访问的网址 -->  
    <url-pattern>/TomcatTest/Refresh</url-pattern>  
    </servlet-mapping>  
</web-app> 

  

现在,调用上面的 Servlet,每隔 5 秒会显示当前系统时间。只要运行 Servlet 并稍等片刻,即可看到如下的结果:

原文地址:https://www.cnblogs.com/xiaobaibailongma/p/15323745.html