Durante el proceso de desarrollo de aplicaciones, si hay múltiples aplicaciones, generalmente se integrarán a través de un portal. Este portal es la entrada a todas las aplicaciones. Una vez que el usuario inicia sesión en Portal y ingresa a otro sistema, necesita un inicio de sesión único similar (SSO). Al ingresar a cada subsistema, él o ella no necesita iniciar sesión nuevamente. Por supuesto, puede implementar funciones similares a través de un software profesional de inicio de sesión único, o puede escribir tokens de base de datos usted mismo, etc. De hecho, hay otro método relativamente simple, que es encapsular los mensajes del usuario iniciado a través del portal a través del portal de portal a través del encabezado HTTP, y luego reenviar la solicitud a cada subsistema y cada subsistema de subsistema obtiene el nombre del usuario de la verificación HTTP de la verificación HTTP.
Se resumen varios métodos para tratar con el encabezado HTTP:
Utilizar httpservletrequest
import javax.servlet.http.httpservletRequest; // ... solicitud privada httpservletrequest; // Obtener encabezados de solicitud MAP privado <String, String> getHeadersInfo () {map <string, string> map = new HashMap <String, String> (); Enumeration Headernames = request.getheadernames (); while (headernames.hasmoreElements ()) {string key = (string) headernames.nextelement (); Valor de cadena = request.getheader (clave); map.put (clave, valor); } mapa de retorno; }Un ejemplo típico es el siguiente:
"Encabezados": {"host": "yihaomen.com", "aceptar-ending": "gzip, deflate", "x-forwarded-for": "66.249.xx", "x-forwarded-proto": "http", "usuary-agente": "mozilla/5.0 (compatible; googlebot/2.1; +http: //www.google.com/bot.html) "," x-request-start ":" 1389158003923 "," aceptar ":"*/*"," conexión ":" cero "," x-forweded-port ":" 80 "," de ":" googlebot (at) googlebot.com "}}Obtener agente de usuario
import javax.servlet.http.httpservletRequest; // ... solicitud privada httpservletrequest; String private getUseragent () {return request.getheader ("user-agent"); }Un ejemplo típico es el siguiente:
Mozilla/5.0 (compatible; Googlebot/2.1; +http: //www.google.com/bot.html)
Ejemplo del uso de Spring MVC para obtener el encabezado httprequest
import java.util.enumeration; import java.util.hashmap; import java.util.map; import javax.servlet.http.httpservletrequest; import org.springframework.beans.factory.annotation.autowired; import org.springframework.stereotype.controller; import; org.springframework.web.bind.annotation.pathvariable; import org.springframework.web.bind.annotation.requestMapping; import org.springframework.web.bind.annotation.requestmethod; importar; org.springframework.web.servlet.modelandview;@controler@requestmapping ("/sitio") clase pública Sitecontroller {@AUTOWIREDIRDIRED HTTPSERVELTRETREQUEST solicitud; @RequestMapping (value = "/{inputput:.+}", método = requestmethod.get) public modelandView getDomain (@PathVariable ("Input") String Enume) {modelandView ModelView = new ModelAndView ("Result"); modelView.addoBject ("User-agent", getUseragent ()); ModelView.AdDObject ("Headers", GetHeadersInfo ()); return ModelView; } // Obtener una cadena privada de agente de usuario getUseragent () {return request.getheader ("user-agent"); } // Obtener encabezados de solicitud MAP privado <String, String> getHeadersInfo () {map <string, string> map = new HashMap <String, String> (); Enumeration Headernames = request.getheadernames (); while (headernames.hasmoreElements ()) {string key = (string) headernames.nextelement (); Valor de cadena = request.getheader (clave); map.put (clave, valor); } mapa de retorno; }}Algunas personas pueden decir que el encabezado HTTP puede simularse, por lo que puede construir un sistema para engañarlos. Sí, eso es cierto. Entonces, cuando se usa el encabezado HTTP para pasarlo, debe recordar que todas las solicitudes deben procesarse a través del portal y reenviarse a cada subsistema, y este problema no ocurrirá. Porque Portal primero intercepta todas las solicitudes iniciadas por el usuario. Si es un usuario construido, no hay registro en la sesión del portal y aún saltará a la página de inicio de sesión. Si se registra en la sesión de protección y también hay registros en el encabezado HTTP, entonces es un usuario legal en el subsistema, y luego puede manejar la lógica comercial de acuerdo con algunos requisitos.
JSP/Java obtiene Ejemplo de información del encabezado HTTP (solicitud)
<%// header.jspout.println ("Protocol:" + request.getProtocol () + "<br>"); out.println ("scheme:" + request.getScheme () + "<br>"); Out.Println ("Nombre del servidor:" + request.getServerName () + "<Br>"); Out.Println ("Servidor:" + Servidor: " +" Sold request.getServerPort () + "<br>"); out.println ("Protocol:" + request.getProTocol () + "<br>"); out.println ("Información del servidor:" + getServletConfig (). request.getRemoteAddr () + "<br>"); Out.println ("host remoto:" + request.getRemoteHost () + "<br>"); Out.println ("Encoding de caracteres:" + request.getCharAcToDing () + "<br>"); Out.Println ("Longitud de contenido:" + Sold.getCentCentLength () + "<br>"); out.println ("Tipo de contenido:" + request.getContentType () + "<br>"); out.println ("type de autenticación:" + request.getAuthType () + "<br>"); out.println ("http método:" + request.getMethod () + "<BR>"); Out.Println (" request.getPathInfo () + "<br>"); out.println ("ruta trans:" + request.getPathTranslated () + "<br>"); out.println ("String de consultación:" + request.getQueryString () + "<br>"); Out.Println ("Remote User:" + Sold.getRemoteuser () + ") "<br>"); out.println ("ID de sesión:" + request.getRequestedSessionId () + "<br>"); Out.println ("Solicitar url:" + request.getRequestUrl () + "<br>"); Out.Println ("Solicitar Uri:" + Soly.getRequesturi () + "<r>"); request.getServletPath () + "<br>"); out.println ("creado:" + session.getCreationTime () + "<br>"); out.println ("lastAccised:" + session.getLastAccessTime () + "<br>"); Out.Println ("LastAcessed:" + Session.getLastAcessEssTime () + "<BR>"); "<br>"); out.println ("aceptar:" + request.getheader ("aceptar") + "<br>"); out.println ("host:" + request.getheader ("host") + "<br>"); out.println ("referente:" + request.getheader ("referente") + "<r>"); request.getheader ("Acepting-Language") + "<br>"); out.println ("Acept-ending:" + request.getheader ("Aceptar-enoding") + "<br>"); out.println ("user-agent:" + request.getheader ("user-agent") + "<br>"); out. out.rintln ("Conexión" + " request.getheader ("conexión") + "<br>"); out.println ("cookie:" + request.getheader ("cookie") + "<br>");%>Notas sobre request.getheader ("referente")
request.getheader ("referente") obtiene la dirección del visitante. Solo al acceder a la página actual a través de un enlace puede obtener la dirección de la página anterior; De lo contrario, el valor de request.getheader ("referente") es nulo, y la página actual se abre a través de Window.open o ingrese directamente la dirección también es nula.
Lo anterior es el contenido completo de varios métodos (debe leer) para obtener el encabezado HttpRequest de Java que le trae el editor. Espero que sea útil para usted y apoye a Wulin.com más ~