lec-JSP-v001
.pdf17
JavaServer Pages (JSP)
Основы разработки корпоративных
WEB приложений на языке Java
ОБСУЖДАЕМЫЕ ВОПРОСЫ
•Факторы, обуславливающие
необходимость использования JSP
•Некоторые особенности механизма работы JSP страниц
•HTML страница с Java Script функцией для вызова JSP
•Разработка и использование простой JSP
ФАКТОРЫ ОБУСЛАВЛИВАЮЩИЕ НЕОБХОДИМОСТЬ ИСПОЛЬЗОВАНИЯ JSP
1.Java Server Page (JSP) страницы используются для генерирования структурированного текстового контента, представления данных приложения в типичном случае включающего HTML, XHTML, XML и т.п. с включением элементов какого-либо скрипт языка.
2.В большинстве случаев JSP используется для реализации презентационного слоя.
3.JSP страница при первом обращении к ней автоматически транслируется в исходный код сервлета, затем этот код также автоматически компилируется, и дальше его жизненный цикл таков же, как и у обычных сервлетов.
JSP СТРАНИЦЫ
•JSP страницы лучше всего использовать для контента, который частично фиксирован, с некоторыми элементами, которые заполняются динамически во время выполнения.
•JSP страницы не подходят для создания контента с резко изменяющейся структурой или для контроля маршрутизации запросов (используйте сервлеты).
•Основной мотивацией реализации презентационного слоя в JSP является упрощение и автоматизация его построения, а также разделение труда, так как JSP с пользовательскими XML тегами может разрабатывать web мастер.
JSP И ВНЕШНИЕ ОБЪЕКТЫ
В JSP странице можно получать доступ к различным внешним объектам, включая компоненты JavaBeans, загружаемые в данный контейнер сервлетов. JSP технология делает эти объекты доступными автоматически.
Такие объекты создаются и загружаются web контейнером неявно и содержат информацию специфическую для запроса, страницы, сеанса или приложения. Поведение большинства этих объектов определяется технологией сервлетов, лежащей в основе JSP технологии.
В нашей будущей странице тоже будет использоваться такой внешний компонент для работы с базой данных.
МЕХАНИЗМ РАБОТЫ JSP СТРАНИЦЫ
При первом обращении клиента к некоторой JSP странице, контейнер серлетов выполняет:
•генерацию класса сервлета, этой JSP страницы
•создание экземпляра этого класса-сервлета
•инициализацию сервлета методом jspInit().
При следующих обращениях к этой JSP-странице, контейнер вызывает метод _jspService(). Если контейнеру потребуется удалить сервлет JSP
страницы, то вызывается метод jspDestroy(), после чего сервлет освобождается.
Java код полученный при трансляции храниться на Tomcat в директории :
<CATALINA_HOME>\work\Standalone\localhost\<назв_прилож>
ПРОМЕЖУТОЧНЫЙ КОД
Название файла, содержащего код генерируется из названия файла, содержащего страницу добавлением суффикса _jsp.java.
При порождении ошибок в фазах трансляции и компиляции их можно увидеть только при первом вызове страницы. В этом случае сервер возвращает сообщение о
JasperException , а также сообщение, которое включает название JSP страницы и номер строки, где обнаружена ошибка.
JSP И ВНЕШНИЕ ОБЪЕКТЫ
ServletContext
application
ServletRequest ServletResponse
Application
Context
HttpSession
session
JSP Page |
|
Beans |
/Servlet |
|
|
|
|
|
|
|
|
PageContext
ПРОСТАЯ JSP
Рассматривая текст JSP страницы, легко увидеть, что основой
теперь стал HTML код. Вставки Java кода и директивы начинаются элементом
"<%" и заканчивается элементом "%>". JSP страницы в отличие от сервлетов описывать в дескрипторе приложения web.xml не обязательно (и не нужно).
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <%@ page import="javax.sql.DataSource,java.sql.*" %>
<%@ page import="org.bookstore.common.Glo" %> <%@ page session="true" %>
<%@ page contentType="text/html; charset=UTF-8" %> <jsp:useBean id="authBean" scope="session" class="org.bookstore.beans.AuthBean8"> <jsp:setProperty name="authBean"
property="dataSourceName" value="<%= Glo.getMainDSName()%>"/>
</jsp:useBean>
<jsp:setProperty name="authBean" property="*"/> <HTML>
<HEAD>
<TITLE>Книжная лавка</TITLE>
. . .
ПРОСТАЯ JSP (ОКОНЧАНИЕ)
. . .
<META HTTP-EQUIV=Content-type CONTENT="text/html; charset=UTF-8"> </HEAD>
<BODY BGCOLOR="#C0FDDD">
<H1>АВТОРЫ проживающие в <jsp:getProperty name="authBean" property="country"/></H1>
<TABLE BORDER=1 ALIGN=CENTER><TR BGCOLOR="#FFF0D8"> <TH>ID авт.</TH><TH>Фамилия</TH><TH>Имя</TH>
<%
ResultSet rs = authBean.getRst(); while (rs != null && rs.next())
{
out.println(
"<TR><TD>" + rs.getInt(1) + "</TD>"
+"<TD>" + rs.getString(2) + "</TD>"
+"<TD>" + rs.getString(3) + "</TD>\n</TR>");
}
authBean.allClose();
%>
</TABLE>
</BODY>
</HTML>