HttpServletRequest对象(二)获取请求消息头的相关方法

当请求Servelt时,需要通过请求头向服务器传递附加信息,例如,客户端可以接收的数据类型、压缩方式、语言等。为此在HttpServletRequest接口中,定义了一系列用于获取HTTP请求头字段的方法

2.获取请求消息头的相关方法

HttpServletRequest获取请求消息头的相关方法:

方法声明功能描述
String getHeader(String name)该方法用于获取一个指定头字段的值,如果请求消息中没有包含指定的头字段,则 getHeader() 方法返回 null;如果请求消息中包含多个指定名称的头字段,则 getHeader() 方法返回其中第一个头字段的值
Enumeration getHeaders(String name)该方法返回一个 Enumeration 集合对象,该集合对象由请求消息中出现的某个指定名称的所有头字段值组成。在多数情况下,一个头字段名在请求消息中只出现一次,但有时可能会出现多次
Enumeration getHeaderNames()该方法用于获取一个包含所有请求头字段的 Enumeration 对象
int getIntHeader(String name)该方法用于获取指定名称的头字段,并且将其值转为 int 类型。需要注意的是,如果指定名称的头字段不存在,则返回值为 -1;如果获取到的头字段的值不能转为 int 类型,则将发生 NumberFormatException 异常
long getDateHeader(String name)该方法用于获取指定头字段的值,并将其按 GMT 时间格式转换为一个代表日期/时间的长整数,该长整数是自 1970 年 1 月 1 日 0 时 0 分 0 秒算起的以毫秒为单位的时间值
String getContentType()该方法用于获取 Content-Type 头字段的值,结果为 String 类型
int getContentLength()该方法用于获取 Content-Length 头字段的值,结果为 int 类型
String getCharacterEncoding()该方法用于返回请求消息的实体部分的字符集编码,通常是从 Content-Type 头字段中进行提取,结果为 String 类型

通过案例学习

使用getHeaderNames()获取请求消息头信息

创建servlet类RequestHeadersServlet

public class RequestHeadersServlet extends HttpServlet {
	public void doGet(HttpServletRequest request,
        HttpServletResponse response)throws ServletException, IOException {
			response.setContentType("text/html;charset=utf-8");
			PrintWriter out = response.getWriter();
	         // 获取请求消息中所有头字段
			Enumeration headerNames = request.getHeaderNames();
			// 使用循环遍历所有请求头,并通过getHeader()方法获取一个指定名称的头字段
			while (headerNames.hasMoreElements()) {
				String headerName = (String) headerNames.nextElement();
				out.print(headerName + " : "
	                       + request.getHeader(headerName)+ "<br>");
			}
		}
		public void doPost(HttpServletRequest request,
	        HttpServletResponse response)throws ServletException, IOException {
			doGet(request, response);
		}
}

运行结果:
在这里插入图片描述

拓展:

运行效果还需配合html页面实现

public class DownManagerServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, 
        HttpServletResponse response)throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
	         // 获取referer头的值
			String referer = request.getHeader("referer"); 
	         // 获取访问地址
			String sitePart = "http://" + request.getServerName();
			// 判断referer头是否为空,这个头的首地址是否以sitePart开始的
			if (referer != null && referer.startsWith(sitePart)) {
				// 处理正在下载的请求
				out.println("dealing download ...");
			} else {
				// 非法下载请求跳转到download.html页面
				RequestDispatcher rd = request
						.getRequestDispatcher("/download.html");
				rd.forward(request, response);
			}
		}
		public void doPost(HttpServletRequest request,
	        HttpServletResponse response)throws ServletException, IOException {
			doGet(request, response);
		}
}

Referer防盗链

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
  JSP共有以下9个内置的对象:   request 用户端请求,此请求会包含来自GET/POST请求的参数   response 网页传回用户端的回应   pageContext 网页的属性是在这里管理   session 与请求有关的会话期   application servlet 正在执行的内容   out 用来传送回应的输出   config servlet的构架部件   page JSP网页本身   exception 针对错误网页,未捕捉的例外      request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, 和session数据的有用的方法。    response表示HttpServletResponse对象,并提供了几个用于设置送回 浏览器的响应的方法(如cookies,信息等)    out对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。    pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关对象的API,并且包装了通用的servlet相关功能的方法。    session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息    applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息    config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。    page表示从该页面产生的一个servlet实例

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心醉瑶瑾前

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值