benutzerdefinierte 503-Fehler-Seite geworfen vom servlet java
Dies ist ziemlich einfach und unkompliziert. Ich möchte zu werfen, ein 503-Fehler von der servlet-Seite.
response.sendError(503);
Wenn dieser geworfen wird, muss ich es auf einen benutzerdefinierten Fehlerseiten -. Im Grunde ein 503-Fehler-Seite selbst, aber mit ein paar Modifikationen.
Sagen, ich habe 503.html
, und ich fügte
<error-page>
<error-code>503</error-code>
<location>/503.html</location>
</error-page>
in web.xml
.
Erstellte ich eine war-Datei, mit einem servlet die Würfe der 503 Fehler, und web.xml
mit diesem Inhalt. Ich hielt die 503.html
im übergeordneten Ordner. (Sollte ich es woanders ?)
Verwendete ich die app in der WLS, aber dieser Brauch 503.html
ist nicht immer Treffer. Ich bin immer der generische 503-Fehler.
Bin ich etwas fehlt?
Mein code ist unten:
webapp1.Krieg
->web-inf
->web-inf->Klassen->prject4->Class1.class
->web-inf->jsp->Fehler->custom.html
web.xml
<?xml version="1.0"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>Class1</servlet-name>
<servlet-class>project2.Class1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Class1</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<error-page>
<error-code>503</error-code>
<location>/WEB-INF/jsp/error/custom.html</location>
</error-page>
</web-app>
class1.java
public class Class1 extends HttpServlet
{
private ServletConfig config;
public void init(ServletConfig config)throws ServletException
{
this.config=config;
}
public void service (HttpServletRequest request, HttpServletResponse response)
throws IOException
{
response.setContentType("text/html");
ServletOutputStream l_out = response.getOutputStream();
response.sendError(503);
}
}
- Was meinst du mit "übergeordneten Ordner"? wenn Sie es konfiguriert als "/503.html" Sie sollten die html-Seite direkt unter dem root-Ordner.
- ja die /503.html ist immer direkt auf den root-Ordner, Seite an Seite mit dem WEB-INF-Ordner.
- Bitte ziehen Sie Ihre Datei-Struktur.
- geändert die Frage.
- sind Sie mit WL als application-server mit einem anderen web-server?
- Nein , bin mit wls als der server. bereitstellen von Anwendungen auf einem verwalteten server direkt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, das war ein kleinerer Fehler, die ich nicht herausfinden, in der Anfang.
In meinem
web.xml
den servlet-mapping wurde gegeben, als/*
, das verursacht eine Endlosschleife Zustand, wie es wirft den gleichen code, für die es gemappt wurde. So musste ich passen Sie die servlet-mapping, so dassClass1
nicht anzeigen, um eventuelle Fehler Seiten - wie sagen/images/*
.Und dann begann sich alles gut funktioniert. 🙂
Sie können auch versuchen, den Umgang mit benutzerdefinierten Error-Handler.
Einer separaten Klasse, um Fehler zu behandeln. Dies kann den Umgang mit verschiedenen Arten von Fehlern.
Sie können Funktionen hinzufügen, um log-stacktrace, E-Mails senden, wenn etwas falsch ist etc.
Wenn Sie mithilfe von Maven, wie das Projekt " Bau " - Werkzeug, dann wird es Aussehen in der src/main/webapp-Verzeichnis, so zum Beispiel unsere config sieht wie folgt aus:
und unsere error404.html sitzt in den Ordner:
${PROJECT_NAME}/src/main/webapp/WEB-INF/jsp/error/
Wenn Ihr nicht mit Maven-der Pfad in die Lage, eine Basis-Verzeichnis, wo Sie Ihre index.jsp
Denke ich, es gibt eine minimale Grenze für die Anzahl bytes, die Ihre benutzerdefinierte Fehlerseite hat. Die untere Grenze ist in der Regel 512 Bytes. Sehen Wichtiger Hinweis für Ihre Benutzerdefinierte Fehlerseiten. Ich habe gesehen, dass dieses Verhalten in Google-Chrome auch bei der Verwendung von Tomcat.
%h %l %u %t "%r" %s %b
. Wenn der Statuscode 404 zurück, wenn Sie die benutzerdefinierte Fehlerseite, es bedeutet, es konnte nicht finden, Ihre Seite und der browser zeigte seine default. Mehr @ tomcat 5.5 Referenz-docs