Lösungsideen und Implementierungsschritte für das Problem, dass CSS und JS nach einem Struts2-Sprung ungültig werden

Lösungsideen und Implementierungsschritte für das Problem, dass CSS und JS nach einem Struts2-Sprung ungültig werden
Wenn die JSP angezeigt wird, zu der nach der Ausführung der Struts2-Aktion gesprungen wird, funktioniert das CSS nicht. Nehmen wir als Beispiel das Projekt, bei dem ich Probleme habe:
Die Aktionen sind wie folgt:

Code kopieren
Der Code lautet wie folgt:

<Aktionsname="Listenbenutzer" Klasse="Listenbenutzeraktion">
<Ergebnis>/Benutzer/Benutzerliste.jsp</Ergebnis>
</Aktion>

( Hinweis : Die Funktion von listUser besteht darin, alle Benutzer zu finden und sie dann in userList.jsp unter Benutzern anzuzeigen. Da Spring verwendet wird, ist die „listUserAction“ hier der in applicationContext.xml konfigurierte Name.)
Die CSS-Einstellungen in userList.jsp sind wie folgt :

Code kopieren
Der Code lautet wie folgt:

<link href="../css/style.css" rel="stylesheet" type="text/css" />

( Hinweis : Die Verzeichnishierarchie sieht folgendermaßen aus: Unter WebRoot befinden sich Benutzer- und CSS-Ordner. Wenn also die JSP unter Benutzern style.css aufrufen möchte, muss sie mit ../ zum Stammverzeichnis gehen und dann den CSS-Ordner suchen.)
Wenn das Programm jedoch nach erfolgreicher Ausführung von listUser zu /users/userList.jsp springt, funktioniert /css/style.css nicht. Wenn jsp direkt in der Adressleiste angezeigt wird, kann es normal angezeigt werden.
Die im Internet gefundene Methode besagt, dass für CSS ein absoluter Pfad verwendet werden soll :

Code kopieren
Der Code lautet wie folgt:

<link href="http://blog.163.com/<%=request.getContextPath%>/css/style.css" rel="stylesheet" type="text/css" />

Dies hat jedoch einen offensichtlichen Nachteil: Die Portabilität ist eingeschränkt.
Versuchen Sie, das Ergebnis in <result>userList.jsp</result> zu ändern und dann jsp in das Stammverzeichnis zu legen. Dann tritt dieses Problem nicht mehr auf. Zu diesem Zeitpunkt ist die Ursache des Problems fast bekannt, d. h., die Aktion befindet sich im Stammverzeichnis. Sie können es beim Ausführen des Programms an der Adressleiste erkennen, d. h., der Namespace befindet sich im Stammverzeichnis, und dann wird „../css/style.css“ natürlich nicht gefunden.
Sobald Sie das Problem verstanden haben, wird es leicht sein, die Lösung zu finden. Suchen Sie das Paket, in dem listUser konfiguriert ist, und fügen Sie namespace="/users" hinzu. Dies ist die Zeit

Code kopieren
Der Code lautet wie folgt:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts-Konfiguration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<Streben>
<package name="Benutzer" extends="struts-default" namespace="/Benutzer">
......
<Aktionsname="Listenbenutzer" Klasse="Listenbenutzeraktion">
<Ergebnis>/Benutzer/Benutzerliste.jsp</Ergebnis>
</Aktion>
......
</Paket>
</vertrauen>

Starten Sie dann den Server neu, OK, es wird normal angezeigt! Gleichzeitig können wir auch sehen, dass in der Adressleiste vor der Aktion ein zusätzliches „/users“ steht und beim Springen zum verbundenen Video auch „/users/userList.jsp“ steht, was die Konsistenz wahrt und das Problem löst.

<<:  Lassen Sie uns ausführlich über die Richtung der langsamen SQL-Optimierung in MySQL sprechen

>>:  Schnelle Implementierung der Schritte zur Bereitstellung von Docker-Images in Intellij IDEA

Artikel empfehlen

So simulieren Sie eine Aufzählung mit JS

Vorwort Im aktuellen JavaScript gibt es kein Konz...

HTML implementiert problemlos abgerundete Rechtecke

Frage: Wie erreiche ich mit Div+CSS und Positioni...

Beispiel für den Aufbau eines Jenkins-Dienstes mit Docker

Ziehen Sie das Bild root@EricZhou-MateBookProX: D...

Detaillierte Erklärung der wichtigsten Einzigartigkeit von v-for in Vue

Inhaltsverzeichnis 1. DOM-Diff 2. Fügen Sie Eleme...

Axios Sekundärkapselungsbeispiel Demo im Projekt

1. Warum verpacken? Erleichtert das Aufrufen von ...

Vertieftes Verständnis davon in JavaScript

Vertieftes Verständnis davon in Js JavaScript Ber...

So verwenden Sie Vue zum Entwickeln öffentlicher Account-Webseiten

Inhaltsverzeichnis Projekthintergrund Start Erste...

Welche Vorteile bietet die Verwendung des B+-Baumindex in MySQL?

Bevor wir dieses Problem verstehen, schauen wir u...

Detailliertes Installationstutorial für Zabbix 4.04 (basierend auf CentOS 7.6)

1. Vorbereitung vor der Installation: 1.1 JDK ins...

So bereinigen Sie Daten in einer MySQL-Onlinedatenbank

Inhaltsverzeichnis 01 Szenarioanalyse 02 Funktion...

Lösung für das Problem des Sitzungsverlusts bei Nginx

Bei der Verwendung von Nginx als Reverse-Proxy fü...

So aktivieren Sie den Fernzugriff in Docker

Docker-Daemon-Socket Der Docker-Daemon kann über ...