Servlet客户端HTTP请求

当浏览器请求网页时,它会向 Web 服务器发送特定信息,这些信息不能被直接读取,因为这些信息是作为 HTTP 请求的头的一部分进行传输的。

下面的实例使用 HttpServletRequest 的 getHeaderNames() 方法读取 HTTP 头信息。该方法返回一个枚举,包含与当前的 HTTP 请求相关的头信息。

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

代码如下:

//导入必需的 java 库

package com.test.servlet;

 

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;

 

/**

 * Servlet implementation class DisplayHeader

 */

@WebServlet("/DisplayHeader")

//扩展 HttpServlet 类

public class DisplayHeader extends HttpServlet {

    private static final long serialVersionUID = 1L;

 

    // 处理 GET 方法请求的方法

    protected 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> \n";

            out.println(docType +

            "<html>\n" +

            "<head><meta charset=\"utf-8\"><title>" + title + "</title></head>\n"+

            "<body bgcolor=\"#f0f0f0\">\n" +

            "<h1 align=\"center\">" + title + "</h1>\n" +

            "<table width=\"60%\" border=\"0.5\" align=\"center\">\n" +

            "<tr bgcolor=\"#949494\">\n" +

            "<th>Header 名称</th><th>Header 值</th>\n"+

            "</tr>\n");

        Enumeration<String> headerNames = request.getHeaderNames();

        while(headerNames.hasMoreElements()) {

            String paramName = (String)headerNames.nextElement();

            out.print("<tr><td>" + paramName + "</td>\n");

            String paramValue = request.getHeader(paramName);

            out.println("<td> " + paramValue + "</td></tr>\n");

        }

        out.println("</table>\n</body></html>");

    }

 

    // 处理 POST 方法请求的方法

    protected void doPost(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        doGet(request, response);

    }

}

以上测试实例是位于testmod项目com.test.servlet包下,对应的 web.xml 配置为:

<?xml version="1.0" encoding="UTF-8"?>

<web-app> 

  <servlet> 

    <!-- 类名 --> 

    <servlet-name>DisplayHeader</servlet-name> 

    <!-- 所在的包 --> 

    <servlet-class>com.test.servlet.DisplayHeader</servlet-class> 

  </servlet> 

  <servlet-mapping> 

    <servlet-name>DisplayHeader</servlet-name> 

    <!-- 访问的网址 --> 

    <url-pattern>/servlet/DisplayHeader</url-pattern> 

  </servlet-mapping>

</web-app>

    配置好xml之后,则调用上面的 Servlet,浏览器访问 http://localhost:8080/testmod/servlet/DisplayHeader 页面会显示以下结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值