HttpServletRequest獲取請求訊息
阿新 • • 發佈:2018-12-21
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的資訊進行封裝成自己想要的資訊,然後進行相關驗證。