JSP Exception Handling – Tutorial

Um Ausnahmen zu behandeln, die von der JSP-Seite geworfen werden, benötigen wir lediglich eine Fehlerseite und definieren die Fehlerseite in JSP mit der JSP-Seitendirektive.

JSP Exception Handling – JSP-Fehlerseite

Um eine JSP-Fehlerseite zu erstellen, müssen wir das Attribut page directive attribute isErrorPage auf true setzen, dann können wir auf das implizite Objekt exception in der JSP zugreifen und es verwenden, um eine angepasste Fehlermeldung an den Client zu senden.

Konfiguration der JSP-Fehlerseite

Wir müssen das Attribut der Seitendirektive errorPage setzen, um die JSP zu definieren, die jede Ausnahme behandelt, die von der JSP-Service-Methode geworfen wird. Wenn die JSP-Fehlerseite in Servlet-Code übersetzt wird, erweitert sie org.apache.jasper.runtime.HttpJspBase in Tomcat.

Konfiguration des Deployment Descriptors für Fehlerseiten

Meistens haben wir eine gemeinsame Fehlerseite, die wir für alle JSPs verwenden möchten, sodass wir sie, anstatt sie in allen JSPs einzeln zu konfigurieren, in web.xml mit dem Element error-page definieren können. Wir können die JSP-Fehlerseite auch so konfigurieren, dass sie andere Fehlercodes wie 404 behandelt. Lassen Sie uns sehen, wie all dies in einer Webanwendung zusammenpasst. Wir werden eine einfache Webanwendung JSPExceptionHandling erstellen.

Der Einstiegspunkt der Anwendung ist index.jsp, dessen Code unten angegeben ist.

<%@ page language="java" contentType="text/html; charset=US-ASCII"
    pageEncoding="US-ASCII"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Login Page</title>
</head>
<body>
<form action="login.jsp" method="post">
<strong>User ID</strong>:<input type="text" name="id"><br>
<strong>Password</strong>:<input type="password" name="password"><br>
<input type="submit" value="Login">
</form>
</body>
</html>


Wenn wir das Formular absenden, wird die Anfrage an login.jsp gesendet, der Code ist wie folgt.

<%@ page language="java" contentType="text/html; charset=US-ASCII"
    pageEncoding="US-ASCII" errorPage="error.jsp"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>User Home Page</title>
</head>
<body>
<%
	String user = request.getParameter("id");
	String pwd = request.getParameter("password");
	
	if(user == null || "".equals(user) || pwd == null || "".equals(pwd)){
		throw new ServletException("Mandatory Parameter missing");
	}
	
%>

<%-- do some DB processing, not doing anything for simplicity --%>
Hi <%=user %>
</body>
</html>


Beachten Sie, dass, wenn Eingabeparameter null oder leer sind, eine ServletException mit einer angemessenen Nachricht geworfen wird und die errorPage als error.jsp definiert ist, deren Code wie folgt ist.

<%@ page language="java" contentType="text/html; charset=US-ASCII"
    pageEncoding="US-ASCII" isErrorPage="true"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Error Page</title>
</head>
<body>
<% if(response.getStatus() == 500){ %>
<font color="red">Error: <%=exception.getMessage() %></font><br>

<%-- include login page --%>
<%@ include file="index.jsp"%>
<%}else {%>
Hi There, error code is <%=response.getStatus() %><br>
Please go to <a href="/index.jsp">home page</a>
<%} %>
</body>
</html>


Beachten Sie, dass der Wert des Attributs der Seitendirektive isErrorPage true ist. Wenn Anwendungsressourcen Ausnahmen werfen, ist der Fehlercode 500, der Code ist geschrieben, um sowohl Anwendungsebene-Ausnahmen als auch Fehler wie 404 – Seite nicht gefunden zu behandeln. Beachten Sie auch die Verwendung der Include-Direktive, um dem Benutzer im Falle einer Ausnahme die Login-Seite zu präsentieren. Hier ist die web.xml, in der wir die Fehlerseite für die Anwendung definieren.

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns="https://java.sun.com/xml/ns/javaee" xsi:schemaLocation="https://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>JSPExceptionHandling</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
   </welcome-file-list>
   
   <error-page>
   <error-code>404</error-code>
   <location>/error.jsp</location>
   </error-page>
   
   <error-page>
   <exception-type>java.lang.Throwable</exception-type>
   <location>/error.jsp</location>
   </error-page>
   
</web-app>


Wenn wir die oben genannte Anwendung ausführen, erhalten wir folgende Seiten als Antwort. Login-Seite, JSP-Fehlerseite für Ausnahmen und JSP-Fehlerseite für den Fehlercode 404.

Das ist alles zu JSP Exception Handling in JSP-Seiten, es ist sehr einfach zu implementieren und wir sollten es nutzen, um sicherzustellen, dass wir alle Ausnahmen und Fehlercodes behandeln und eine nützliche Antwort an den Client senden, anstatt die Standardfehlerseite des Containers.

Kostenlosen Account erstellen

Registrieren Sie sich jetzt und erhalten Sie Zugang zu unseren Cloud Produkten.

Das könnte Sie auch interessieren: