5.2.6 获得HTTP请求消息头的各个方法的演示

优质
小牛编辑
135浏览
2023-12-01

本例将演示如何使用在HttpServletRequest接口中定义的方法来获得HTTP请求消息头。

例子 : 获得HTTP请求头信息的各个方法的演示

1. 编写HeaderInfo类

HeaderInfo类负责获得并输出HTTP请求消息头的所有字段名及字段值,该类的实现代码如下:

package chapter5;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HeaderInfo extends HttpServlet
{
    public void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException
    {
        response.setContentType("text/html; charset=UTF-8");
        PrintWriter out = response.getWriter();
        // 返回HTTP请求头的Content-Length字段的值
        out.println("getContentLength:" + request.getContentLength() + "</br>");
        // 返回HTTP请求头的Content-Type字段的值       
        out.println("getContentType:" + request.getContentType() + "</br>");
        // 通常从HTTP请求头的Content-Type字段中提取       
        out.println("getCharacterEncoding:" + request.getCharacterEncoding() + "</br>");
        out.println("<br/><b>HTTP响应头信息</b><br/>");
        java.util.Enumeration headers = request.getHeaderNames();
        while(headers.hasMoreElements())
        {
            String header = headers.nextElement().toString();
            out.println(header + ":" + request.getHeader(header) + "</br>");           
        }
        // 如果有多个同名的字段,可以使用getHeaderNames方法来同名字段的所有值
    }
}

2. 配置HeaderInfo类

HeaderInfo类的配置代码如下:

<servlet>
    <servlet-name>HeaderInfo</servlet-name>
    <servlet-class>chapter5.HeaderInfo</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>HeaderInfo</servlet-name>
    <url-pattern>/HeaderInfo</url-pattern>
</servlet-mapping>

3. 查看输出的HTTP请求消息头

在浏览器地址栏中输入如下的URL:

http://localhost:8080/demo/HeaderInfo

浏览器中显示的结果如图5.9所示。

09

图5.9 输出HTTP请求消息头