JavaWebラーニング-Servletシリーズ-19-httpサーブレットRequestリクエストヘッダコンテンツの取得
3593 ワード
この記事では、HttpServeretRequestのリクエストヘッダに関する操作を学習します.実際には、リクエストヘッダの特定の属性の値を取得する2つの方法について学習します.2つ目の方法は、すべての属性を取得し、列挙タイプを返すことです.
1.あるリクエストヘッダのnameの値を取得する
ここでnameはUser-Agentで実証します.この値は要求されたブラウザのタイプを教えてくれます.主にIE、Firefox、Chromeであることが明らかになります.
tomcatに配備し、火狐ブラウザでアクセスし、ログを印刷します.
2.すべてのリクエストヘッダのnamesを取得
上のコードをメソッドtest 1()に抽出してから、すべてのnamesを取得し、この列挙オブジェクトを遍歴するように書きます.
tomcatサーバに配備し、効果をテストします.
3.getHeaders(name)
1つのリクエストヘッダに複数のnameが同じ場合にこの方法を使用することができ、例えばsetHeader()が複数の重複encodingをUTF-8に等しく設定できるように説明した場合、この方法を使用することができ、この方法は一般的にはあまり役に立たない.
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に等しく設定できるように説明した場合、この方法を使用することができ、この方法は一般的にはあまり役に立たない.