Comment le champ d'attribut d'un HttpServletRequest mappe à une requête HTTP brute ?

En Java, le champ d'attribut d'un objet HttpServletRequest peut être récupéré à l'aide de la méthode getAttribute :

String myAttribute = request.getAttribute("[parameter name]");

Où les données d'attribut HttpServletRequest sont stockées dans une requête HTTP brute ? C'est dans le corps de la demande ?

Par exemple, j'essaie de créer une demande HTTP GET raw qui sera envoyée à mon servlet à l'aide d'un programme client. Ma méthode de servlet.doGet() serait quelque chose comme ceci :

public void doGet(HttpServletRequest request, HttpServletResponse response)
{
     String myAttribute = request.getAttribute("my.username");
     ...
}

Où dois-je mettre les données « my.username » dans la demande HTTP brute afin que la chaîne « myAttribute » reçoit la valeur « John Doe » après l'attribution ?

répondre #1

Pour ajouter à la réponse de @ DRG, les attributs ne sont pas présents en aucune façon dans la requête HTTP comme elle se déplace sur le fil. Ils sont créés quand (par votre code) traitement de la demande. Un usage très commun est d'avoir un serveur défini (aka créer) certains attributs et puis vers l'avant à une JSP qui rendra l'utilisation de ces attributs. C'est une requête HTTP arrive et est envoyée à un Servlet. Le Servlet s'attache à certains attributs. Traitement côté serveur supplémentaire est effectué, éventuellement envoyer la page à une JSP, où les attributs sont utilisés. La réponse est générée dans la JSP. La requête HTTP et la réponse HTTP ne contiennent pas d'attributs. Les attributs sont des informations purement côté serveur de 100 %.

Lorsqu'une seule donnée requête HTTP terminée, les attributs sont disponibles pour le garbage collection (sauf si elles sont conservées dans un autre endroit, comme une session). Attributs ne sont associés à un objet de la demande unique.

répondre #2

Juste pour être clair je pense que la réponse de Jon @ ne rend parfaitement clair. Les valeurs de getAttribute et setAttribute sur HttpServletRequest ne se trouvent pas sur ce qu'est réellement envoyé sur le fil, ils sont côté serveur uniquement.

// only visible in this request and on the server
request.getAttribute("myAttribute"); 

// value of the User-Agent header sent by the client
request.getHeader("User-Agent"); 

// value of param1 either from the query string or form post body
request.getParameter("param1");
répondre #3

Je pense qu'il est demande vraiment est « comment puis-je paramètres dans mon programme », pas d'attributs. Si c'est la question, envoyer des paramètres dans l'EEG demandent dans le cadre de l'URL (après un point d'interrogation, http://myhost.com/myapp?name=joe&age=26) puis les récupérer en utilisant request.getParameter("name") et request.getParameter("age"), ou tout ce que vous avez besoin.


Tags lesen

   
 
logo_banner