1. 程式人生 > >HttpServletRequest獲取請求訊息

HttpServletRequest獲取請求訊息

HttpServletRequest物件代表客戶端的請求,當客戶端通過HTTP協議訪問伺服器時,HTTP請求頭中的所有資訊都封裝在這個物件中,通過這個物件提供的方法,可以獲得客戶端請求的所有資訊。  其實只要知道,HTTP的所有請求資訊都會在這個物件中,就很容易獲取各種各樣的資訊了,這可以為以後搭建架構的時候,建立很重要的基礎。

直接寫程式碼,寫一個controller,把常用資訊都打印出來就知道了:

package controller;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping(value="/request")
public class RequestController {
	

	
	
	   @RequestMapping(value="/getInfo",method = RequestMethod.GET)
	    public String upload(HttpServletRequest request){

		   System.out.println("Protocol: " + request.getProtocol());
		    System.out.println("Scheme: " + request.getScheme());
		    System.out.println("Server Name: " + request.getServerName());
		    System.out.println("Server Port: " + request.getServerPort());
		    System.out.println("Protocol: " + request.getProtocol());
		    System.out.println("Remote Addr: " + request.getRemoteAddr());
		    System.out.println("Remote Host: " + request.getRemoteHost());
		    System.out.println("Character Encoding: " + request.getCharacterEncoding());
		    System.out.println("Content Length: " + request.getContentLength());
		    System.out.println("Content Type: " + request.getContentType());
		    System.out.println("Auth Type: " + request.getAuthType());
		    System.out.println("HTTP Method: " + request.getMethod());
		    System.out.println("Path Info: " + request.getPathInfo());
		    System.out.println("Path Trans: " + request.getPathTranslated());
		    System.out.println("Query String: " + request.getQueryString());
		    System.out.println("Remote User: " + request.getRemoteUser());
		    System.out.println("Session Id: " + request.getRequestedSessionId());
		    System.out.println("Request URI: " + request.getRequestURI());
		    System.out.println("Servlet Path: " + request.getServletPath());
		    System.out.println("Accept: " + request.getHeader("Accept"));
		    System.out.println("Host: " + request.getHeader("Host"));
		    System.out.println("Referer : " + request.getHeader("Referer"));
		    System.out.println("Accept-Language : " + request.getHeader("Accept-Language"));
		    System.out.println("Accept-Encoding : " + request.getHeader("Accept-Encoding"));
		    System.out.println("User-Agent : " + request.getHeader("User-Agent"));
		    System.out.println("Connection : " + request.getHeader("Connection"));
		    System.out.println("Cookie : " + request.getHeader("Cookie"));
		    System.out.println("Created : " + request.getSession().getCreationTime());
		    System.out.println("LastAccessed : " + request.getSession().getLastAccessedTime());

	        return null;


	    }
	    
	 
}



打印出來的訊息:

Protocol: HTTP/1.1
Scheme: http
Server Name: localhost
Server Port: 8080
Protocol: HTTP/1.1
Remote Addr: 0:0:0:0:0:0:0:1
Remote Host: 0:0:0:0:0:0:0:1
Character Encoding: UTF-8
Content Length: -1
Content Type: null
Auth Type: null
HTTP Method: GET
Path Info: null
Path Trans: null
Query String: null
Remote User: null
Session Id: null
Request URI: /u3-ssm-t51//request/getInfo
Servlet Path: /request/getInfo
Accept: image/gif, image/jpeg, image/pjpeg, application/x-ms-application, application/xaml+xml, application/x-ms-xbap, */*
Host: localhost:8080
Referer : null
Accept-Language : zh-CN
Accept-Encoding : gzip, deflate
User-Agent : Mozilla/5.0 (Windows NT 6.2; Win64; x64; Trident/7.0; rv:11.0) like Gecko
Connection : Keep-Alive
Cookie : null
Created : 1542116352763
LastAccessed : 1542116352763

在未來的架構設計中,可以利用反射,根據request的資訊進行封裝成自己想要的資訊,然後進行相關驗證。