Возникновениеиобработкаошибок
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Пример 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, просмотров: 241.