tomcat服務(wù)器把http請(qǐng)求信息封裝到HttpServletRequest對(duì)象中隧土。
開發(fā)者通過HttpServletRequest對(duì)象得到http請(qǐng)求信息豹绪。
常用方法:
請(qǐng)求行:
request.getMethod()闪萄; 請(qǐng)求方式
request.getRequestURI() 請(qǐng)求資源
request.getRequestURL()
request.getProtocol() 協(xié)議版本
請(qǐng)求頭:
request.getHeader("name"): 根據(jù)請(qǐng)求頭獲取請(qǐng)求值
request.getHeaderNames(): 獲取所有請(qǐng)求頭名稱
實(shí)體內(nèi)容:
request.getInputStream();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//:獲取請(qǐng)求行信息
System.out.println("請(qǐng)求方法:"+request.getMethod());
System.out.println("請(qǐng)求URI:"+request.getRequestURI());
System.out.println("請(qǐng)求URL:"+request.getRequestURL());
System.out.println("請(qǐng)求協(xié)議版本:"+request.getProtocol());
//:獲取請(qǐng)求頭信息
System.out.println("獲取某一頭信息:"+request.getHeader("Accept-Encoding"));
// System.out.println("一個(gè)頭信息多個(gè)值:");request.getHeaders(xxx);
System.out.println("獲取所有頭信息:");
Enumeration en = request.getHeaderNames();
while(en.hasMoreElements()){
String name=(String) en.nextElement();
System.out.println(name+":"+request.getHeader(name));
}
//:獲取實(shí)體內(nèi)容
InputStream in = request.getInputStream();
byte[] buf = new byte[1024];
int len = 0;
while( (len=in.read(buf))!=-1 ){
String str = new String(buf,0,len);
System.out.print(str);
}
}
結(jié)論: service方法和doXXX方法的關(guān)系?
- service方法是程序的入口。我們的代碼邏輯就在這個(gè)方法被調(diào)用到鹰贵。
- 在HttpServlet的service方法源碼中注竿,根據(jù)不同請(qǐng)求方式調(diào)用了不同的doXX方法茄茁,
所以我們?cè)陂_發(fā)servlet的時(shí)候,就不需要去覆蓋service方法巩割,而是去doXX方法裙顽。
因?yàn)間et和post是最常用的的兩種請(qǐng)求方式,所以只需要覆蓋doGet和doPost方法即可宣谈!
userAgent的作用:
userAgent可以識(shí)別出瀏覽器的所屬性設(shè)備:
- chrome瀏覽器
- firefox瀏覽器
- ie
- iphone
- ......
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
String userAgent = request.getHeader("user-agent");
if(userAgent.contains("Firefox")){
response.getWriter().write("你正在使用火狐瀏覽器");
}else if(userAgent.contains("Chrome")){
response.getWriter().write("你正在使用谷歌瀏覽器");
}else if(userAgent.contains("Trident")){
response.getWriter().write("你正在是IE瀏覽器");
}else{
response.getWriter().write("識(shí)別不了的瀏覽器");
}
}
referer的作用:
referer表示當(dāng)前的請(qǐng)求資源來自哪里愈犹;
可以用來判斷用戶是否是通過廣告頁(yè)面進(jìn)來的;