JavaWeb学习-Servlet系列-19-HttpServletRequest获取请求头内容

这一篇来学习HttpServletRequest对请求头的相关操作,其实一共就两个方法学习,第一个是得到请求头中具体属性的值,第二个方法就是得到全部属性,返回是一个枚举类型。

 

1.得到某一个请求头中的name的值

这里name我通过User-Agent来演示,这个值告诉我们请求的浏览器是什么类型,主要可以明显看出来是IE,Firefox,Chrome。

package com.anthony.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class ServletDemo4 extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//获取请求头某一个name的值, 例如User-Agent
		String browser = req.getHeader("User-Agent");
		System.out.println(browser);
		if(browser.toLowerCase().contains("msie")) {
			System.out.println("你使用的是IE浏览器。");
		}else if(browser.toLowerCase().contains("firefox")) {
			System.out.println("你使用的是火狐浏览器。");
		}else if(browser.toLowerCase().contains("chrome")) {
			System.out.println("你使用的是谷歌浏览器。");
		}else {
			System.out.println("你使用的是其他浏览器。");
		}


	}
	
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req, resp);
	}
	
}

部署到tomcat,我用火狐浏览器访问,打印日志如下

Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Firefox/60.0
你使用的是火狐浏览器。

 

2.得到全部请求头的names

先把上面代码抽取成方法test1(),然后来写获取全部names并遍历这个枚举对象。

package com.anthony.servlet;

import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class ServletDemo4 extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//test1(req);
		//获取全部请求头中names
		Enumeration headerNames = req.getHeaderNames();
		while(headerNames.hasMoreElements()) {
			String e = (String)headerNames.nextElement();
			System.out.println(e + ":" + req.getHeader(e));
		}
	}


	private void test1(HttpServletRequest req) {
		//获取请求头某一个name的值, 例如User-Agent
		String browser = req.getHeader("User-Agent");
		System.out.println(browser);
		if(browser.toLowerCase().contains("msie")) {
			System.out.println("你使用的是IE浏览器。");
		}else if(browser.toLowerCase().contains("firefox")) {
			System.out.println("你使用的是火狐浏览器。");
		}else if(browser.toLowerCase().contains("chrome")) {
			System.out.println("你使用的是谷歌浏览器。");
		}else {
			System.out.println("你使用的是其他浏览器。");
		}
	}
	
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req, resp);
	}
	
}

部署到tomcat服务器,然后测试下效果

host:localhost:8080
user-agent:Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Firefox/60.0
accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
accept-language:en-US,zh-CN;q=0.7,en;q=0.3
accept-encoding:gzip, deflate
cookie:jenkins-timestamper-offset=-28800000
connection:keep-alive
upgrade-insecure-requests:1
cache-control:max-age=0

 

3.getHeaders(name)

如果一个请求头中有多个name相同的可以使用这个方法,例如前面我们介绍setHeader()可以设置多个重复的encoding等于UTF-8,我们就可以使用这个方法,这个方法一般用处不大。

你可能感兴趣的:(JavaWeb学习-Servlet系列-19-HttpServletRequest获取请求头内容)