Рубрики
Без рубрики

Обработка исключений JSP – Страница ошибок JSP

Обработка исключений JSP, пример страницы ошибок JSP, обработка исключений в JSP, страница ошибок, директива страницы ошибок, web.xml , 404, пример кода 500.

Автор оригинала: Pankaj Kumar.

Обработка исключений в JSP выполняется страницами исключений JSP.

Обработка исключений в JSP

Некоторое время назад я написал пост об обработке исключений сервлетов и о том, зачем нам это нужно. То же объяснение применимо и к страницам JSP, и именно поэтому Java EE обеспечивает четкий подход к обработке исключений в JSP с использованием страниц ошибок JSP.

Для обработки исключений, создаваемых страницей JSP, все, что нам нужно, – это страница ошибок и определение страницы ошибок в JSP с помощью директивы страницы jsp .

Страница ошибки JSP

Чтобы создать страницу ошибки JSP, нам нужно установить атрибут директивы страницы isErrorPage значение true, затем мы можем получить доступ к исключению неявному объекту jsp в JSP и использовать его для отправки клиенту настроенного сообщения об ошибке.

Конфигурация страницы ошибок JSP

Нам нужно задать директиву страницы ErrorPage атрибут, чтобы определить JSP, который будет обрабатывать любое исключение, создаваемое методом службы JSP. Когда страница ошибки JSP преобразуется в код сервлета, она расширяет org.apache.jasper.runtime.HttpJspBase в Tomcat.

Конфигурация дескриптора развертывания Страницы Ошибок

В большинстве случаев у нас есть общая страница ошибок, которую мы хотим использовать для всех JSP, поэтому вместо того, чтобы настраивать ее во всех JSP по отдельности, мы можем определить страницу ошибок в web.xml с ошибка-страница элемент. Мы можем настроить страницу ошибок JSP для обработки других кодов ошибок, таких как 404.

Давайте посмотрим, как все это сочетается в веб-приложении.

Мы создадим простое веб-приложение для обработки исключений JSP, структура проекта которого будет выглядеть следующим образом.

Точкой входа в приложение является index.jsp , код которого приведен ниже.

<%@ page language="java" contentType="text/html; charset=US-ASCII"
    pageEncoding="US-ASCII"%>





Login Page


User ID:
Password:

Когда мы отправим форму, запрос будет отправлен на login.jsp , код, как показано ниже.

<%@ page language="java" contentType="text/html; charset=US-ASCII"
    pageEncoding="US-ASCII" errorPage="error.jsp"%>





User Home Page


<%
	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 %>


Обратите внимание, что если входные параметры равны нулю или пусты, его исключение ServletException с соответствующим сообщением и страницей ошибок определяется как error.jsp код которого, как показано ниже.

<%@ page language="java" contentType="text/html; charset=US-ASCII"
    pageEncoding="US-ASCII" isErrorPage="true"%>





Error Page


<% if(response.getStatus() == 500){ %>
Error: <%=exception.getMessage() %>
<%-- include login page --%> <%@ include file="index.jsp"%> <%}else {%> Hi There, error code is <%=response.getStatus() %>
Please go to home page <%} %>

Обратите внимание, что значение атрибута isErrorPage директивы страницы равно true . Когда ресурсы приложения выдают исключения, код ошибки равен 500, код написан для обработки как исключений уровня приложения, так и ошибок, таких как 404 – страница не найдена.

Также обратите внимание на использование директивы include для предоставления пользователю страницы входа в систему в случае каких-либо исключений.

Вот это web.xml где мы определяем страницу ошибок для приложения.



  JSPExceptionHandling
  
    index.jsp
   
   
   
   404
   /error.jsp
   
   
   
   java.lang.Throwable
   /error.jsp
   
   

Теперь, когда мы запускаем вышеуказанное приложение, в качестве ответа мы получаем следующие страницы.

Страница входа в систему

Страница ошибки JSP для исключения

Страница ошибки JSP для кода ошибки 404

Это все для обработки исключений на страницах JSP, ее очень легко реализовать, и мы должны использовать ее, чтобы убедиться, что мы обрабатываем все исключения и коды ошибок и отправляем полезный ответ клиенту, а не на страницу ошибок по умолчанию контейнера.