Pendant le processus de développement d'applications, s'il existe plusieurs applications, elles seront généralement intégrées via un portail de portail. Ce portail est l'entrée de toutes les applications. Une fois que l'utilisateur se connecte au portail et entre un autre système, il a besoin d'une connexion unique similaire (SSO). Lors de la saisie de chaque sous-système, il n'a pas besoin de se connecter à nouveau. Bien sûr, vous pouvez implémenter des fonctions similaires via un logiciel de connexion unique professionnel, ou vous pouvez écrire des jetons de base de données par vous-même, etc. En fait, il existe une autre méthode relativement simple, qui est de résumer la demande de l'utilisateur connecté via le portail, de l'écrire sur le HTTP en tête, puis de transférer la demande à chaque sous-système, et chaque sous-système qui obtient le nom de l'utilisateur de la tête HTTP Vérification.
Plusieurs méthodes de traitement de l'en-tête HTTP sont résumées:
Utiliser HttpServleRequest
Importer javax.servlet.http.httpservletRequest; // ... demande privée httpservletRequest; // Obtenir des en-têtes de demande Private Map <String, String> gethedersInfo () {map <string, string> map = new HashMap <String, String> (); Énumération Headernames = request.geTheadernames (); while (headernames.hasmoreElements ()) {String key = (String) headernames.nextElement (); String Value = request.GetHeader (key); map.put (clé, valeur); } retour de la carte; }Un exemple typique est le suivant:
"en-têtes": {"host": "yihaomen.com", "acceptation-codage": "gzip, dégonfler", "x-forward-for": "66.249.xx", "x-forwarded-proto": "http", "user-agent": "mozilla / 5.0 (compatible; googlebot / 2.1; + http: //www.google.com/bot.html) "," x-request-start ":" 1389158003923 "," accepter ":" * / * "," connexion ":" close "," x-forwarded-port ":" 80 "," From ":" googlebot (at) googlebot.com "}}Obtenir un agent utilisateur
Importer javax.servlet.http.httpservletRequest; // ... demande privée httpservletRequest; String privé getUserAgent () {return request.getheader ("user-agent"); }Un exemple typique est le suivant:
Mozilla / 5.0 (compatible; googlebot / 2.1; + http: //www.google.com/bot.html)
Exemple d'utilisation de Spring MVC pour obtenir une en-tête 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. 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.ModlandView; @ Cramper @ "/ sitep classe SiteController {@autowired private httpServLetRequest request; @Requestmapping (value = "/{input:.+}", méthode = requestMethod.get) public ModelandView GetDomain (@PathVariable ("input") String Input) {ModelandView ModelView = new ModelAndView ("result"); ModelView.AddObject ("User-Agent", GetUserAgent ()); ModelView.AddObject ("En-têtes", GethedersInfo ()); return ModelView; } // Obtenir une chaîne privée de l'agent utilisateur getUserAgent () {return request.getheader ("user-agent"); } // Obtenir des en-têtes de demande Private Map <String, String> gethersInfo () {map <string, string> map = new HashMap <String, String> (); Énumération Headernames = request.geTheadernames (); while (headernames.hasmoreElements ()) {String key = (string) headername.NextElement (); String Value = request.GetHeader (key); map.put (clé, valeur); } retour de la carte; }}Certaines personnes peuvent dire que l'en-tête HTTP peut être simulé, vous pouvez donc construire un système pour les tromper. Oui, c'est vrai. Ainsi, lorsque vous utilisez un en-tête HTTP pour le passer, vous devez vous rappeler que toutes les demandes doivent être traitées via le portail et transmises vers chaque sous-système, et ce problème ne se produira pas. Parce que le portail intercepte d'abord toutes les demandes initiées par l'utilisateur. S'il s'agit d'un utilisateur construit, il n'y a pas d'enregistrement dans la session du portail et il passera toujours à la page de connexion. S'il est enregistré dans la session Protal et qu'il y a également des enregistrements dans l'en-tête HTTP, c'est un utilisateur légal dans le sous-système, puis vous pouvez gérer la logique métier en fonction de certaines exigences.
JSP / Java obtient l'exemple d'informations d'en-tête HTTP (demande)
<% // header.jspout.println ("protocole:" + request.getProtoCol () + "<br>"); out.println ("schéma:" + request.getscheme () + "<br>"); out.println ("nom du serveur:" + request.getServername: "+" <br> "); out.println (" Server Port: "+" <br> "); Out.Println (" Server Port: "+" <br> "); request.getServerport () + "<br>"); out.println ("protocole:" + request.getProtoCol () + "<br>"); out.println ("Server info:" + getServletConfig (). GetServletContext (). Getserverfo () "<br>"); + "<br>"); out.println ("hôte distant:" + request.getRemoteHost () + "<br>"); out.println ("Encoding de caractères:" + request.getCharotteRencoding () + "<br>"); Out.println ("Content Length:" + contenu Type: ") +" <br> "); request.getContentType () + "<br>"); out.println ("Auth Type:" + request.getAuthType () + "<br>"); out.println ("Http Méthode:" + Path InfoMethod () + "<br>"); Out.println ("Path Info:" + request.getpathinfo () + "<br>"); out.println ("path trans:" + request.getPathTranslated () + "<br>"); out.println ("Query String:" + request.getQueryString () + "<br>"); out.println ("User. request.getRequetedSessionId () + "<br>"); out.println ("URL de la demande:" + request.getRequestrl () + "<br>"); out.println ("request uri:" + request.getRequestruri () + "<br>"); out.println ("Servlet Path:" + request.getServletpath () + + "<br>"); out.println ("créé:" + session.getcreationtime () + "<br>"); out.println ("lastaccessed:" + session.getLastAssedTime () + "<br>"); out.println ("LastAssed:" + Session.getLastAcsedTime () + "<br>"); Out.printl (accepte: ") +" <br> "); request.getheader ("accepter") + "<br>"); out.println ("hôte:" + request.getheader ("host") + "<br>"); out.println ("référer:" + request.getheader ("référer") + "<br>"); out.println ("accept-language:" + request.gethEader (")") "<br>"); out.println ("accepter-codage:" + request.getheader ("accepter-coding") + "<br>"); out.println ("user-agent:" + request.getheader ("user-agent") + "<br>"); out.println ("connexion:" + request.getheadder ("connexion") + + "<br>"); out.println ("cookie:" + request.getheader ("cookie") + "<br>");%>Notes sur request.getheader ("référente")
request.getheader ("référer") obtient l'adresse du visiteur. Ce n'est que lorsque vous accédez à la page actuelle via un lien que vous pouvez obtenir l'adresse de la page précédente; Sinon, la valeur de request.getheader ("référence") est nul, et la page actuelle est ouverte via Window.open ou entrez directement l'adresse est également nul.
Ce qui précède est le contenu complet de plusieurs méthodes (incontournable) pour obtenir l'obtention de l'en-tête httprequest de Java que vous avez été apportée par l'éditeur. J'espère que cela vous sera utile et soutenir Wulin.com plus ~