Heim  >  Artikel  >  Java  >  Erklärung des Pfadproblems, nachdem Servlet zur JSP-Seite gesprungen ist

Erklärung des Pfadproblems, nachdem Servlet zur JSP-Seite gesprungen ist

巴扎黑
巴扎黑Original
2017-07-17 13:49:262222Durchsuche

1. Phänomen und Konzept

1. Problem

Wenn das Servlet an die JSP-Seite weitergeleitet wird, wird der Pfad des Servlets auf der Browseradresse angezeigt bar. Wenn der Hyperlink der JSP-Seite immer noch relativ zur Adresse der JSP-Seite ist und sich das Servlet und die JSP-Seite nicht im selben Ordner befinden, liegt ein Pfadverwechslungsproblem vor.

2. Absolutes Pfadkonzept

Ein Pfad relativ zum contextPath (dem Kontext der aktuellen Webanwendung).

Lösung: Verwenden Sie absolute Pfade anstelle relativer Pfade für Hyperlinks. Wenn / das Stammverzeichnis der Site darstellt, fügen Sie contextPath davor hinzu.

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

2. Zusammenfassung der Bedeutung von „/“ in der JavaWeb-Entwicklung

1 Anwendungen Root-Pfad

'/' stellt http://localhost:8080/contextPath/ dar: die von Servlet verarbeitete Adresse

1) Weiterleitung: request.getRequestDispatcher("/path/b.jsp").forword(request, Response);

2) Zuordnung des Servlet-Zugriffspfads in der web.xml-Datei

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

3) '/' in verschiedenen benutzerdefinierten Tags.

2. Der Stammpfad der Website

'/' stellt http://localhost:8080/ dar: die vom Browser verarbeitete Adresse

1) Hyperlink: /TestServlet">To B

2) Aktion im Formular-Tag:

/b.jsp">

3) Weiterleitung: Response.sendRedirect("/b.jsp");


3. Probleme mit dem Site-Stammverzeichnis und dem CSS-Pfad (JSP ist ein serverseitiges Programm, die Adresse ändert sich und beim Verweis wird im Allgemeinen der relative Pfad zum Site-Stammverzeichnis verwendet)
Wir nennen einen relativen Pfad wie diesen /test/… einen relativen Pfad relativ zum Site-Stammverzeichnis.
Wenn Sie CSS in eine JSP einführen und deren relativer Pfad relativ zur aktuellen JSP-Datei ist und Sie die JSP in einem Servlet weiterleiten, das sich vom Pfad der JSP unterscheidet, werden Sie feststellen, dass der CSS-Stil nicht funktioniert überhaupt. . Dies liegt daran, dass der CSS-Pfad beim Weiterleiten im Servlet der relative Pfad zum Servlet und nicht der JSP-Pfad ist. Daher können Sie derzeit keinen solchen Pfad in JSP verwenden: oder Relative HTML-Pfade ähnlich wie href="one.css" und ../../one.css sind relativ zu der Datei, die auf dieses CSS verweist ( a. jsp) relativer Pfad. Bei der Weiterleitung in einem Servlet handelt es sich um einen relativen Pfad zu diesem Servlet. Da der JSP-Pfad und der Servlet-Pfad unterschiedlich sind, muss ein solcher Verweis falsch sein.
Zu diesem Zeitpunkt müssen Sie also das Site-Stammverzeichnis verwenden, das das Verzeichnis relativ zu http://192.168.0.1/ ist und mit „/“ beginnt.
Daher sollte der obige Fehler in ein Verzeichnis relativ zum Site-Stammverzeichnis ähnlich wie href="/test/one.css" korrigiert werden. Auf diese Weise ist der relative Pfad nach der Weiterleitung des Servlets in der JSP relativ zum Site-Stammverzeichnis und der definierte CSS-Stil kann korrekt verwendet werden.


Seitensprungproblem:

Forward ist hoch, Redirect ist niedrig, weil der Prozess der Redirect ist wie folgt: Anfrage1 wird an den Server gesendet, der Server wird an den Client zurückgegeben und dann

Anfrage2 wird an den Server gesendet. Die Weiterleitung wird jedoch nur auf der Serverseite verarbeitet und ist für die Clientseite transparent Übertragungen sind effizient.

Geltungsbereich:
Da für request.setAttribute() das von ihm übertragene Objekt nur innerhalb der Anforderung vorhanden ist, führt die Redirect-Methode dazu, dass das von der Anforderung übertragene Objekt vorhanden ist verloren.


Das obige ist der detaillierte Inhalt vonErklärung des Pfadproblems, nachdem Servlet zur JSP-Seite gesprungen ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn