• 测试开发进阶——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 并稍等片刻,即可看到如下的结果:

  • 相关阅读:
    spring中的异步事件
    spring中的事件 applicationevent 讲的确实不错
    freemark2pdf
    使用Ajax生成的Excel文件并下載
    1.智帮校园App功能概况
    MVC4 Controller器同名问题
    MVC 数据验证
    补丁惹的祸-ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService
    .Net MVC4 加.html后缀报404问题
    VS2012常用快捷建(必备)
  • 原文地址:https://www.cnblogs.com/xiaobaibailongma/p/15323745.html
Copyright © 2020-2023  润新知