Maison  >  Article  >  Java  >  Explication du problème de chemin après le passage du servlet à la page JSP

Explication du problème de chemin après le passage du servlet à la page JSP

巴扎黑
巴扎黑original
2017-07-17 13:49:262267parcourir

1. Phénomène et concept

1. Problème

Lorsque le servlet est transmis à la page JSP, le chemin du servlet est affiché sur l'adresse du navigateur. bar. et si le lien hypertexte de la page JSP est toujours relatif à l'adresse de la page JSP et que le servlet et la page JSP ne sont pas dans le même dossier, il y aura un problème de confusion de chemin.

2. Concept de chemin absolu

Un chemin relatif à contextPath (le contexte de l'application Web actuelle).

Solution : utilisez des chemins absolus au lieu de chemins relatifs pour les hyperliens. Si / représente le répertoire racine du site, ajoutez contextPath devant celui-ci.

<a href="<%= request.getContextPath() %>/TestServlet">To B</a>

2. Résumé de la signification de '/' dans le développement JavaWeb

1. applications Chemin racine

'/' représente http://localhost:8080/contextPath/ : l'adresse traitée par le Servlet

1) Redirection : request.getRequestDispatcher("/path/b.jsp").forword(request, réponse);

2) Mappage du chemin d'accès au servlet dans le fichier web.xml

<servlet-mapping><servlet-name>TestServlet</servlet-name><url-pattern>/TestServlet</url-pattern></servlet-mapping>

3) '/' dans diverses balises personnalisées.

2. Le chemin racine du site Web

'/' représente http://localhost:8080/ : l'adresse gérée par le navigateur

1) Lien hypertexte : /TestServlet">To B

2) Action dans la balise form :

/b.jsp">

3) Redirection : réponse.sendRedirect("/b.jsp");


3. Problèmes de répertoire racine du site et de chemin CSS (jsp est un programme côté serveur, l'adresse change et le chemin relatif vers le répertoire racine du site est généralement utilisé lors du référencement)
Nous appelons un chemin relatif comme celui-ci /test/… un chemin relatif relatif au répertoire racine du site.
Lors de l'introduction de CSS dans une jsp, si son chemin relatif est relatif au fichier jsp actuel et que vous transférez la jsp dans une servlet différente du chemin de la jsp, vous constaterez que le style css ne fonctionne pas du tout. En effet, le chemin CSS lors du transfert dans le servlet est le chemin relatif vers le servlet au lieu du chemin jsp. Vous ne pouvez donc pas utiliser un tel chemin dans jsp pour le moment : un .css" rel="stylesheet" type="text/css"> Les chemins relatifs HTML similaires à href="one.css" et ../../one.css sont relatifs au fichier qui fait référence à ce CSS ( a.jsp) chemin relatif. Lors du transfert dans un servlet, il s'agit d'un chemin relatif vers ce servlet. Étant donné que le chemin jsp et le chemin du servlet sont différents, une telle référence doit être erronée.
Donc à ce stade, vous devez utiliser le répertoire racine du site, qui est le répertoire relatif à http://192.168.0.1/ et commence par "/".
Par conséquent, l'erreur ci-dessus doit être corrigée vers un répertoire relatif au répertoire racine du site similaire à href="/test/one.css". De cette façon, une fois le servlet transféré et dans le jsp, le chemin relatif est relatif au répertoire racine du site et le style CSS défini peut être utilisé correctement.


Problème de saut de page :

Le transfert est élevé, la redirection est faible, car le processus de redirection C'est comme ça, request1 envoyée au serveur, le serveur revient au client, puis

request2 puis envoyé au serveur. Mais Forward n'est traité que côté serveur et est transparent côté client puisque Redirect en a deux. transmissions, il est efficace Faible.

Portée :
Parce que pour request.setAttribute(), la plage de survie de l'objet qu'il transporte est uniquement dans la requête, donc la méthode Redirect fera en sorte que l'objet transporté par la demande d'être perdue.


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn