web.xml und Bilder

LL0rd

Erfahrenes Mitglied
Hi,

ich habe ein Problem. Ich möchte ein Servlet schreiben, dass in mehreren Sprachen laufen soll. Für den Anfang habe ich erstmal ein Servlet namens German erstellt, welches im Pfad /german laufen soll. Andere Sprachen werden dann unter /englisch, usw. laufen.

Nun möchte ich jedoch, dass die German auch dann reagiert, wenn ich direkt die Seite aufrufe, also einfach nur /. Aus diesem Grund habe ich folgenden Eintrag in der web.xml gemacht:

Code:
	<servlet-mapping>
		<servlet-name>German</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

doch nun habe ich das Problem, dass statt der Bilder unter /_img/logo.jpg auch das Servlet aufgerufen wird. Kann mir jemand vieleicht sagen, wie ich es unterbinden kann?
 
Hallo,

warum löst du das Ganze nicht mit Properties-Dateien? da brauchst du im Endeffekt nur ein Servlet mit einer URL.

MFG

zEriX
 
Es gibt da mehrere Gründe für. Zum einen kann es sein, dass die Website später für eine Sprache angepasst werden muss, wenn z.B. ein Text in der Landessprache plötzlich nicht mehr reinpasst. Zum anderen könnte es auch sein, dass eine Sprache auf einen anderen Server ausgelagert wird. Die eigentlichen Servlets haben eh nicht viel Content:

Code:
 public class German extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {

	private static final long serialVersionUID = 1L;
	public static PrintWriter writer;

	public German() {
		super();
	}   	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		MainClass.doGet(request, response,"German");
	}  	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		MainClass.doPost(request, response,"German");
	}   	  	    
}

Aber nun mal zurück zur Ausgangsfrage: Auch wenn ich das ganze auch mit Properties-Dateien löse, wie kann ich es schaffen, dass ein Servlet unter / läuft, aber bilder unter /_img erreichbar bleiben?
 
Um mal in die gleiche Kerbe zu schlagen wie Zerix: Einem Servlet kann man via Web.xml Parameter mitgeben z.B. einen Sprachcode. Abhängig davon kannst Du Deine Landesspezifischen Daten laden.

XML:
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>de.tutorials.action</servlet-class>
  <init-param>
    <param-name>Language</param-name>
    <param-value>german</param-value>
  </init-param>
  </servlet>

Laden kannst Du die Werte indem Du die Init-Methode des Servlets überschreibst und die Methode getInitParameter benützt.

Gruß
 
Zuletzt bearbeitet von einem Moderator:
Es gibt da mehrere Gründe für. Zum einen kann es sein, dass die Website später für eine Sprache angepasst werden muss, wenn z.B. ein Text in der Landessprache plötzlich nicht mehr reinpasst. Zum anderen könnte es auch sein, dass eine Sprache auf einen anderen Server ausgelagert wird. Die eigentlichen Servlets haben eh nicht viel Content:
Da du für jede Sprache eine Properties-Datei hast, ist das doch egal. Da kannst du jede Sprache individuell anpassen. Auch wenn es auf einen anderen Server ausgelagert wird ist das doch eigentlich kein Problem, die Prop-Dateien müssen nur mit.

Ich würde ein Servlet nie diese URL ("/") zuweisen. Bei sowas wird normal die index.html o.ä. aufgerufen. Du könntest von dieser dann zu deinem Servlet weiterleiten.

MFG

zEriX
 
Ich würde ein Servlet nie diese URL ("/") zuweisen. Bei sowas wird normal die index.html o.ä. aufgerufen. Du könntest von dieser dann zu deinem Servlet weiterleiten.

Dürfte ich nach dem Grund fragen? Eine Alternative zu meinem Problem wäre ja für den statischen Inhalt z.B. eine Subdomain anzulegen (static.domain.tdl) und dann dort auf die Bilder zu verweisen.
 
Zurück