Servlet如何读取HTTP头信息呢?

Java-教程王 Servlet 发布时间:2021-08-12 09:37:19 阅读数:13719 1

Http头信息简介说明

HTTP头信息是浏览器请求服务端时所发送给服务器端的数据,
HTTP头信息中常见的内容如:Cookie,Content-Length等
那么在Servlet中如何获取这些头信息的内容呢?下文将通过示例的方式讲述其具体的实现方式,如下所示:
实现思路:
    Servlet对外提供了一些读取HTTP头的方法,
这些方法在HttpServletRequest对象中,具体的方法详情如下所示:
keyId 方法名称 & 备注信息
1 Cookie[] getCookies()
返回一个数组,包含客户端发送该请求的所有的 Cookie 对象。
2 Enumeration getAttributeNames()
返回一个枚举,包含提供给该请求可用的属性名称。
3 Enumeration getHeaderNames()
返回一个枚举,包含在该请求中包含的所有的头名。
4 Enumeration getParameterNames()
返回一个 String 对象的枚举,包含在该请求中包含的参数的名称。
5 HttpSession getSession()
返回与该请求关联的当前 session 会话,或者如果请求没有 session 会话,则创建一个。
6 HttpSession getSession(boolean create)
返回与该请求关联的当前 HttpSession,或者如果没有当前会话,且创建是真的,则返回一个新的 session 会话。
7 Locale getLocale()
基于 Accept-Language 头,返回客户端接受内容的首选的区域设置。
8 Object getAttribute(String name)
以对象形式返回已命名属性的值,如果没有给定名称的属性存在,则返回 null。
9 ServletInputStream getInputStream()
使用 ServletInputStream,以二进制数据形式检索请求的主体。
10 String getAuthType()
返回用于保护 Servlet 的身份验证方案的名称,例如,"BASIC" 或 "SSL",如果JSP没有受到保护则返回 null。
11 String getCharacterEncoding()
返回请求主体中使用的字符编码的名称。
12 String getContentType()
返回请求主体的 MIME 类型,如果不知道类型则返回 null。
13 String getContextPath()
返回指示请求上下文的请求 URI 部分。
14 String getHeader(String name)
以字符串形式返回指定的请求头的值。
15 String getMethod()
返回请求的 HTTP 方法的名称,例如,GET、POST 或 PUT。
16 String getParameter(String name)
以字符串形式返回请求参数的值,或者如果参数不存在则返回 null。
17 String getPathInfo()
当请求发出时,返回与客户端发送的 URL 相关的任何额外的路径信息。
18 String getProtocol()
返回请求协议的名称和版本。
19 String getQueryString()
返回包含在路径后的请求 URL 中的查询字符串。
20 String getRemoteAddr()
返回发送请求的客户端的互联网协议(IP)地址。
21 String getRemoteHost()
返回发送请求的客户端的完全限定名称。
22 String getRemoteUser()
如果用户已通过身份验证,则返回发出请求的登录用户,或者如果用户未通过身份验证,则返回 null。
23 String getRequestURI()
从协议名称直到 HTTP 请求的第一行的查询字符串中,返回该请求的 URL 的一部分。
24 String getRequestedSessionId()
返回由客户端指定的 session 会话 ID。
25 String getServletPath()
返回调用 JSP 的请求的 URL 的一部分。
26 String[] getParameterValues(String name)
返回一个字符串对象的数组,包含所有给定的请求参数的值,如果参数不存在则返回 null。
27 boolean isSecure()
返回一个布尔值,指示请求是否使用安全通道,如 HTTPS。
28 int getContentLength()
以字节为单位返回请求主体的长度,并提供输入流,或者如果长度未知则返回 -1。
29 int getIntHeader(String name)
返回指定的请求头的值为一个 int 值
30 int getServerPort()
返回接收到这个请求的端口号
31 int getParameterMap()
将参数封装成 Map 类型

Servlet获取http头信息的示例分享

 
package servlet01;

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("/helloWorld")
public class ServletHelloWorld extends HttpServlet {

	private static final long serialVersionUID = 888;

	private String msg;

	@Override
	public void init() throws ServletException {
		// TODO Auto-generated method stub
		super.init();
		msg = "java265.com is Java WebSite.";
	}

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		resp.setContentType("text/html");

		String urlInfo = "";
		if (req.getParameter("urlInfo") != null) {
			urlInfo = new String(req.getParameter("urlInfo").getBytes("ISO-8859-1"), "UTF-8");
		}
		// 输出获取的值
		PrintWriter o = resp.getWriter();
		o.println("<h4>" + msg + "</h4>");
		o.println("<h5>GetParameter:" + urlInfo + "</h5>");

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

		o.println("<table>\n");
		while (headerNames.hasMoreElements()) {
			String paramName = (String) headerNames.nextElement();
			o.print("<tr><td>" + paramName + "</td>\n");
			String paramValue = req.getHeader(paramName);
			o.println("<td> " + paramValue + "</td></tr>\n");
		}
		o.println("</table>");

	}

}


运行效果如图所示:
Servlet读取HTTP头信息示例分享
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/Servlet/202108/182.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者