Пример 19. Возникновениеиобработкаошибок . JSP- страницы
Основнаястраница
<%@page contentType="text/html; charset=UTF-8"%>
<%@page errorPage="errorMessage.jsp"%>
<html><body>
<% if(true) throw new Exception("Something happened!");%>
</body></html>
Страница-обработчик
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page isErrorPage="true" %>
<html><body>
An error has occurred! Please, contact administrator.
<%someLogMethod(exception);%>
</body></html>
Пример 20. Возникновениеиобработкаошибок . Примерныйкодсервлетов
Основнаястраница
try {
pageContext = _jspxFactory.getPageContext(this, request,
response, "errorMessage.jsp", true, 8192, true);
if(true) throw new Exception("Something happened!");
} catch (Throwable t) {
_jspx_page_context.handlePageException(t);
}
Страница-обработчик
Throwable exception =
org.apache.jasper.runtime.JspRuntimeLibrary.getThrowable(request);
...
out.write("<html><body>\n");
out.write("An error has occurred! Please, contact administrator.\n");
someLogMethod(exception);
out.write("</body></html>\n");
Директива include
• Предназначена для включения в формируемый отклик содержимого другого файла.
• Включение статическое: происходит на этапе трансляции.
• Включаться могут как статические, так и динамические ресурсы.
• Существует специальный вид JSP-страниц – JSP Fragments (JSPF).
Пример 21. Директива include . JSP -страницы
Основнаястраница
<%@page contentType="text/html; charset=UTF-8"%>
<html><body>
<%@include file="WEB-INF/jspf/fragment.jspf" %>
</body></html>
Включаемаястраница
<%@ page pageEncoding="UTF-8" %>
Somefragmenttext
Пример 22. Директива include.Примерный код сервлетов
Основнаястраница
public final class index_jsp ... {
private static java.util.Vector _jspx_dependants;
static {
_jspx_dependants = new java.util.Vector(1);
_jspx_dependants.add("/WEB-INF/jspf/fragment.jspf");
}
public void _jspService(HttpServletRequest request,
HttpServletResponse response)
throws java.io.IOException, ServletException {
...
out.write("<html><body>\n");
out.write("Some fragment text\n");
out.write("</body></html>\n");
...
}
Стандартные объекты
• page
Ссылка на текущий объект (по сути – объект сервлета).
• config
Имеет тип javax.servlet.ServletConfig, позволяет получить контекст сервлета и параметры сервлета.
• application
Имеет тип javax.servlet.ServletContext, определяет контекст сервлета.
• pageContext
Имеет тип javax.servlet.jsp.PageContext, определяет контекст jsp-страницы.
• session
Имеет тип javax.servlet.http.HttpSession, представляет текущую сессию.
• request
Имеет тип javax.servlet.http.HttpServletRequest, представляет текущий запрос.
• response
Имеет тип javax.servlet.http.HttpServletResponse, представляет текущий отклик.
• out
Имеет тип javax.servlet.jsp.JspWriter, представляет поток для вывода, по функциональности схож с классом PrintWriter.
Пример 23. Стандартные объекты. Примерный код сервлета
PageContextpageContext = null ;
HttpSession session = null;
ServletContext application = null;
ServletConfig config = null;
JspWriter out = null;
Object page = this;
...
pageContext = _jspxFactory.getPageContext(this, request,
response, null, true, 8192, true);
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
Тэги <jsp:…>
• Являются еще одним средством управления ходом трансляции страницы.
• В основном предназначены для формата
JSP-документов.
• Позволяют:
l Описывать теги и их составляющие.
l Перенаправлять обработку запросов.
l Работать с компонентами JavaBeans.
l Включать в код страницы обращения к апплетам.
Тэги <jsp:include>
• <jsp:include page="inclPage">
• Включает в страницу статический или динамический ресурс.
• Включение происходит динамически, во время выполнения.
Пример 24.
<jsp:include page="{relativeURL | <%= expression %>}"
flush="true | false" >
<jsp:param name="parameterName"
value="{parameterValue|<%=expr%>}|${…}” />
</jsp:include>
JSP-страница
<html><body>
Before
<jsp:include page="simple.html"></jsp:include>
After
</ body ></ html >
Примерный код сервлета
out.write("<html><body>\n");
out.write("Before\n"); org.apache.jasper.runtime.JspRuntimeLibrary.include(request,
response, "simple.html", out, false);
out.write("\n");
out.write("After\n");
out.write("</body></html>\n");
Тэги <jsp:forward>
• <jsp:forward page="inclPage">
• Передает обработку запроса другому ресурсу.
• Могут быть указаны дополнительные параметры.
Пример 25.
<jsp:forward page="{relativeURL | <%= expression %>}">
<jsp:param name="parameterName"
value="{parameterValue|<%=expr%>}|%{…}” />
</jsp:forward>
JSP-страница
<html><body>
Before
<jsp:forward page="simple.html"></jsp:forward>>
After
</ body ></ html >
Примерный код сервлета
out.write("<html><body>\n");
out.write("Before\n");
if (true) {
_jspx_page_context.forward("simple.html");
return;
}
out.write("\n");
out.write("After\n");
out.write("</body></html>\n");
Дата: 2019-02-19, просмотров: 284.