응용 프로그램을 개발하는 과정에서 여러 응용 프로그램이있는 경우 일반적으로 포털 포털을 통해 통합됩니다. 이 포털은 모든 응용 프로그램의 입구입니다. 사용자가 포털에 로그인하여 다른 시스템에 들어가면 유사한 단일 사인온 (SSO)이 필요합니다. 각 서브 시스템을 입력 할 때 다시 로그인 할 필요가 없습니다. 물론, 전문적인 단일 사인온 소프트웨어를 통해 유사한 기능을 구현하거나 직접 데이터베이스 토큰을 작성할 수 있습니다. 실제로, 또 다른 비교적 간단한 방법이 있습니다.이 방법은 포털을 통해 로그인 사용자 메시지를 캡슐화하고 HTTP 헤더에 찍은 다음 각 하위 시스템에 요청을 전달하는 것입니다.
HTTP 헤더를 다루는 몇 가지 방법이 요약되어 있습니다.
httpservletrequest를 활용하십시오
import javax.servlet.http.httpservletrequest; // ... 개인 httpservletRequest 요청; // 요청 헤더 가져 오기 개인 맵 <string, string> getheadersInfo () {map <string, String> map = new Hashmap <String, String> (); 열거 HEADERNAMES = request.getheAderNames (); while (headernames.hasmoreElements ()) {String key = (string) headernames.nextElement (); 문자열 값 = request.getheader (키); map.put (키, 값); } 리턴 맵; }일반적인 예는 다음과 같습니다.
"헤더": { "host": "yihaomen.com", "accept-encoding": "gzip, deflate", "x-forwarded-for": "66.249.xx", "x-forwarded-proto": "http", "user-agent": "Mozilla/5.0; Googlebot/2.1; +http : //www.google.com/bot.html) ","x-request-start ":"1389158003923 ","수락 ":"*/*","연결 ":"close ","x-forwarded-port ":"80 ","googlebot.com "}}사용자 에이전트를 얻으십시오
import javax.servlet.http.httpservletrequest; // ... 개인 httpservletRequest 요청; 개인 문자열 getUserAgent () {return request.getheader ( "user-agent"); }일반적인 예는 다음과 같습니다.
Mozilla/5.0 (호환 가능한; GoogleBot/2.1; +http : //www.google.com/bot.html)
Spring MVC를 사용하여 HTTPRequest 헤더를 얻는 예입니다
import java.util.enumeration; import java.util.hashmap; import java.util.map; import javax.servlet.http.httpservletrequest; import org.springframework.beans.beans.beans.beans.beans.beans.beans.beans.beans.beans.beans.beans.beans.beans.beans org.springframework.web.bind.annotation.pathvariable; import org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.bind.annotation.requestmethod; import org.springframework.web.servlet.modver.modview; 클래스 sitecontroller {@autowired private httpservletrequest 요청; @requestmapping (value = "/{input:.+}", method = requestMethod.get) public modelandView getDomain (@PathVariable ( "input") 문자열 입력) {modelAndView modelView = new ModelAndView ( "result"); ModelView.addObject ( "사용자-에이전트", getUserAgent ()); ModelView.addObject ( "헤더", getheadersinfo ()); 리턴 모델 뷰; } // 사용자 에이전트를 가져옵니다. 개인 문자열 getUserAgent () {return request.getheader ( "user-agent"); } // 요청 헤더 가져 오기 개인 맵 <string, String> getheadersInfo () {map <string, String> map = new Hashmap <String, String> (); 열거 HEADERNAMES = request.getheAderNames (); while (headernames.hasmoreElements ()) {String key = (string) headernames.nextElement (); 문자열 값 = request.getheader (키); map.put (키, 값); } 리턴 맵; }}어떤 사람들은 HTTP 헤더를 시뮬레이션 할 수 있다고 말할 수 있으므로이를 속이는 시스템을 구성 할 수 있습니다. 예, 그건 사실입니다. 따라서 HTTP 헤더를 사용하여 그만한 가치가있는 경우, 모든 요청은 포털을 통해 처리되고 각 서브 시스템으로 전달되어야 하며이 문제는 발생하지 않습니다. 포털은 먼저 사용자가 시작한 모든 요청을 가로 채기 때문입니다. 구성된 사용자 인 경우 포털 세션에는 레코드가 없으며 로그인 페이지로 이동합니다. Protal 세션에 기록되어 있고 HTTP 헤더에도 레코드가있는 경우 서브 시스템의 합법적 인 사용자이며 일부 요구 사항에 따라 비즈니스 로직을 처리 할 수 있습니다.
JSP/Java는 HTTP 헤더 정보 (요청) 예제를 얻습니다
<%// header.jspout.println ( "프로토콜 :" + request.getProtocol () + "<br>"); out.println ( "scheme :" + request.getScheme () + "<br>"); out.println ( "서버 이름 :" + request.getServerName () <br> "; out.port :" + " +" + " +"); request.getServerport () + "<br>"); out.println ( "프로토콜 :" + request.getProtocol () + "<br>"); out.println ( "서버 정보 :" + getServletConfig (). "<br>"); out.println ( "원격 호스트 :" + request.getRemoteHost () + "<br>"); out.println ( "문자 인코딩 :" + request.getCharacterEncoding () + "<br>"); out.println ( "content length :" + request.getContentLength () + "); request.getContentType () + "<br>"); out.println ( "auth type :" + request.getauthtype () + "<br>"); out.println ( "http method :" + request.getMethod () + "<br>"); out.println ( "Path Info :" + request.get.get. getspathinfo () + 요청. "<br>"); out.println ( "Path Trans :" + request.getPathTransLated () + "<br>"); out.println ( "query string :" + request.getQueryString () + "<br>"); out.println ( "remote user :" + request.getRemoteUser () <br> " request.getRequestedSessionId () + "<br>"); out.println ( "request url :" + request.getRequestUrl () + "<brquestUrl () +"<brquestUrl () + "<br>"); out.println ( "request.getRequesturi () +"<br> "); out.println ("servlet. "<br>"); out.println ( "생성 :" + session.getCreationTime () + "<br>"); out.println ( "lastAccessed :" + session.getLastAccedtime () + "<br>"); out.println ( "lastAccessed :" + ccessed : " + ccessed :" + escreds.getlastaccedtime () + "<brn ("); request.getheader ( "accept") + "<br>"); out.println ( "host :" + request.getheader ( "host") + "<br>"); out.println ( " + requester :" + requester : " +"<br> "); out.println ("reccept-language : ")) "<br>"); out.println ( "수락-인코딩 :" + request.getheAder ( "허용 인코딩") + "<br>"); out.println ( "user-agent :" + request.getheader ( "user-agent")) + "<br>"); println ( "연결 :" + requester ( "connection :"). "<br>"); out.println ( "쿠키 :" + request.getheader ( "쿠키") + "<br>");%>request.getheader에 대한 메모 ( "참조")
request.getheader ( "Cereper")는 방문자의 주소를 가져옵니다. 링크를 통해 현재 페이지에 액세스 할 때만 이전 페이지의 주소를 얻을 수 있습니다. 그렇지 않으면, request.getheader ( "Cereper")의 값은 null이고 현재 페이지는 Window를 통해 열립니다. 주소를 열거 나 직접 입력하는 것도 null입니다.
위의 것은 편집자가 가져온 Java에서 HTTPRequest 헤더를 얻기위한 여러 방법 (필수)의 전체 내용입니다. 나는 그것이 당신에게 도움이되기를 바랍니다.