JavaWebラーニング-Servletシリーズ-19-httpサーブレットRequestリクエストヘッダコンテンツの取得

3593 ワード

この記事では、HttpServeretRequestのリクエストヘッダに関する操作を学習します.実際には、リクエストヘッダの特定の属性の値を取得する2つの方法について学習します.2つ目の方法は、すべての属性を取得し、列挙タイプを返すことです.
 
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を取得
上のコードをメソッドtest 1()に抽出してから、すべての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)
1つのリクエストヘッダに複数のnameが同じ場合にこの方法を使用することができ、例えばsetHeader()が複数の重複encodingをUTF-8に等しく設定できるように説明した場合、この方法を使用することができ、この方法は一般的にはあまり役に立たない.