Содержание
- 2. JSP Технология Java Server Pages (JSP) была разработана компанией Sun Microsystems, для создания страниц с динамическим
- 3. Содержимое Java Server Pages (теги HTML, теги JSP и скрипты) переводится в сервлет код-сервером. Этот процесс
- 4. 4. Полученный текст компилируется в файл *.class. 5. Вызываются методы init() и service() (doGet() или doPost()),
- 5. Рабочий цикл JSP имеет вид:
- 6. JSP-код Java заключается в специальные теги, которые указывают контейнеру, чтобы он использовал этот код для генерации
- 7. Директивы Директивы используются для установки параметров серверной страницы JSP и имеют общий вид:
- 8. Рассмотрим пример: contentType="text/html; pageEncoding="Cp1251" errorPage="errorjsp.jsp" info="директива info" import="java.util.*" %> Параметр language директивы page определяет используемый язык,
- 9. Директива include Директива include позволяет включать в код данной страницы JSP другие документы допустимых типов. При
- 10. jsp02.jsp was included in jsp01.jsp Запуск JSP: http://127.0.0.1:8080/FirstProject/jsp01.jsp Параметр errorPage указывает на страницу, переход к которой
- 11. contentType="text/html; charset=Cp1251" pageEncoding="Cp1251“ errorPage="errorjsp.jsp" %> throw new Exception("yesError"); %>
- 12. Страница, вызываемая при ошибках, может иметь статический вид errorjsp.jsp Exception Generated! Роль простейшей JSP может сыграть
- 13. Директива page Директива page задает глобальные настройки для JSP-страницы в контейнере JSP. Может использоваться несколько директив
- 14. 2. extends Задает класс, которому будет наследовать транслированная JSP-страница. В качестве значения этого атрибута должно задаваться
- 15. 4. session Задает, участвует ли страница в сеансе. Значением этого атрибута может быть true (участвует в
- 16. 5. buffer Задает размер буфера вывода, используемого неявным объектом out. Этот атрибут может иметь значение none
- 17. 6. autoFlush При установке значения true (значение по умолчанию) этот атрибут указывает, что буфер вывода, используемый
- 18. 7. isThreadSafe Определяет, обеспечивает ли страница безопасное выполнение потоков (thread safe). При задании значения true (по
- 19. 8. info Задает строку информации, описывающей страницу. Эта строка возвращается методом getServletlnfo сервлета. Этот метод может
- 20. 10.isErrorPage Определяет, является ли текущая страница, страницей обработки ошибок, которая будет вызываться в ответ на ошибку,
- 21. 11. conatantType Задает MIME-тип данных в ответе клиенту. По умолчанию используется тип text/html.
- 22. Объявления Блок объявлений содержит переменные Java и методы, которые вызываются в expression-блоке. Объявление не должно производить
- 23. Скриптлеты JSP поддерживает вживление Java-кода в скриптлет-блок. Скриптлеты обычно используют маленькие блоки кода и выполняются во
- 24. charset=Cp1251" pageEncoding="ISO-8859-5" %> 11 * 11 - 9 = if ("112".equals(request.getParameter("text"))){ %> Верно! ОШИБКА!
- 25. Выражения В качестве выражений используются операторы языка Java, которые вычисляются, после чего результат вычисления преобразуется в
- 26. %> simplecount.jsp Date localDate = new Date(); int hitCount = 0; %> Дата загрузки Сегодня Страница
- 27. Страницу посетили раз, начиная с System.out.println("до свидания"); %>
- 28. Неявные объекты JSP-страница всегда имеет доступ ко многим функциональным возможностям сервлета, создаваемым Web-контейнером по умолчанию. Неявный
- 29. pageContext – определяет контекст JSP-страницы и предоставляет доступ к неявным объектам. Объект класса javax.servlet.jsp.PageContext. Область видимости
- 30. Рассмотрим пример использования PageContext. synchronized (pageContext) { Class thisClass = getClass(); pageContext.setAttribute("thisClass", thisClass, PageContext.PAGE_SCOPE); System.out.println("Stored reference");
- 31. out – содержит выходной поток сервлета. Информация, посылаемая в этот поток, передается клиенту. Объект является экземпляром
- 32. Стандартные элементы action Действие Данное действие позволяет использовать экземпляр компонента JavaBean. Если экземпляр с указанным идентификатором
- 33. Действие Данное действие позволяет устанавливать значения полей указанного в атрибуте name объекта(имеется ввиду действие ). Рассмотрим
- 34. Действие Данное свойство получает значения полей указанного объекта, преобразует его в строку и отправляет в неявный
- 35. Jsp страница имеет вид( my.jsp): charset=Cp1251" pageEncoding="Cp1251“ import="java.lang.*" %> Hello.jsp В браузере HHH Hello
- 36. Для развертывания данного приложения необходимо: Создать папку myjsp в c:\tomcat\webapps\ Создать в myjsp директорию jsp и
- 37. Действие Данное действие позволяет включать файлы в генерируемую страницу при запросе страницы: flush=”true”/> Необязательный атрибут flush
- 38. Действие Данное действие позволяет передать запрос другой странице: Рассмотрим пример. Файл (my.jsp) charset=Cp1251" pageEncoding="Cp1251" import="java.lang.*" %>
- 39. Файл index.jsp %> Hello1.jsp
- 40. Действие Данное действие – замещается тэгом или , в зависимости от типа браузера, в котором будет
- 41. Атрибуты тега type – Тип компонента: компонент JavaBeans или applet code – Класс, который представляет компонент.
- 42. 7. hspace – пространство слева и справа от компонента, выраженное в пикселях 8. vspace – пространство
- 43. Рассмотрим пример: Using jsp:plugin to load an applet
- 44. Файл аплета ShapesApplet.java имеет вид: import java.applet.* ; import java.awt.event.*; import java.awt.* ; import java.awt.geom.* ;
- 45. public void paint( Graphics g ) { int xPoints[ ] ={55, 67, 109, 73, 83, 55,
- 46. Библиотека нестандартных тегов Пользовательские теги организуют в виде целой библиотеки, даже если в нее входит только
- 47. Описатель TLD библиотеки тегов. Шапка XMLSchema-instance" xsi:schemaLocation= "http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary20.xsd“ version="2.0" >
- 48. Описатель TLD библиотеки тегов 1.0 /sdo head sdotags.HeadTag JSP size false true
- 49. На странице JSP перед применением пользовательских тегов следует сослаться на библиотеку тегом например в этом случае
- 50. к каждой странице JSP всегда подключается библиотека с префиксом тегов jsp стандартные теги JSP входят в
- 51. если у тега есть тело, которое надо выполнить несколько раз, то надо реализовывать его расширение -интерфейс
- 52. есть готовые реализации указанных интерфейсов -класс TagSupport, реализующий интерфейс IterationTag есть BodyTagSupport -расширение TagSupport реализующий BodyTag
- 53. для создания тега с телом, которое надо предварительно преобразовывать, нужно реализовать интерфейс BodyTag или расширить класс
- 54. public int doStartTag() основной метод интерфейса Tag выполняет действия, предписанные открывающим тегом К нему сервлет обращается
- 55. public int doAfterTag() дополнительный метод интерфейса IterationTag позволяет повторно обрабатывать тело пользовательского тега будет выполнен перед
- 56. public int doEndTag() Метод интерфейса Tag После обращения к методу doStartTag сервлет обращается к методу doEndTag
- 57. Интерфейс BodyTag позволяет буферизовать выполнение тела элемента буферизация производится, если метод doStartTag() возвращает константу EVAL_ BODY_BUFFERED
- 58. информацию они получают из объекта класса PageContext, который всегда создается контейнером для выполнения любой страницы JSP
- 59. Для создания пользовательского тега без тела или с телом, не требующим обработки -расширить класс TagSupport Для
- 60. TagSupport public int doStartTag() throws JspException{ return SKIP_BODY; } public int doEndTag() throws JspException{ return EVAL_PAGE;
- 61. Рассмотрим пример. Пользовательский тег без тела и без атрибутов. Файл my.jsp "http://www.w3.org/TR/xhtmll/DTD/xhtmll-strict.dtd"> Simple Custom Tag Example
- 62. The following text demonstrates a tag: Директива taglib дает возможность JSP-странице использовать теги из пользовательской библиотеки
- 63. package aaa; import java.io.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; public class WelcomeTagHandler extends TagSupport { // Метод,
- 64. Теперь рассмотрим дескриптор библиотеки тегов. Файл myjsp-taglib.tld web-jsptaglibrary_l_l.dtd"> 1.0 1.1 myjsp A simple tab library for
- 65. empty Файлы myjsp-taglib.tld и my.jsp необходимо поместить в папку c:\tomcat\webapps\myjsp\jsp\ Файл WelcomeTagHandler.class в папку c:\tomcat\webapps\myjsp\WEB-INF\classes\aaa\
- 66. Пример. Пользовательский тег с атрибутами JSP страница использующая тег с атрибутами. Файл my.jsp "http://www.w3.org/TR/xhtmll/DTD/xhtmll-strict.dtd"> %> Simple
- 67. The following text demonstrates a tag: 2. Рассмотрим обработчик тегов. public class WelcomeTagHandler extends TagSupport {
- 68. public void setFirstName( String username ){ firstName = username; } } 3. Рассмотрим дескриптор библиотеки тегов.
- 69. welcome aaa.WelcomeTagHandler empty firstName true true
- 70. - определяет, может ли значение атрибута быть результатом вычисления выражения JSP в процессе выполнения (true) или
- 71. Пример. Пользовательский тег с телом если у пользовательского тега есть тело, то при описании тега в
- 72. Если содержимое тега не нужно обрабатывать, а надо только отправить клиенту, то при создании его обработчика
- 73. head myjsp.HeadTag JSP size false true
- 74. public class HeadTag extends TagSupport{ private String size="4"; public String getSize(){ return size; } public void
- 75. public int doEndTag(){ try{ JspWriter out = pageContext.getOut(); out.print(" "); } catch (Exception e){ System.err.println(e);} return
- 76. после этого на странице JSP можно использовать пользовательский тег Сегодня new java.util.Date() текст, написанный в теле,
- 77. тело тега требует обработки, то его класс обработчик должен реализовывать интерфейс BodyTag или расширить класс BodyTagSupport
- 78. Далее контейнер обратится к doAfterBody() в котором надо проделать обработку тела тега к моменту вызова doAfterBody()
- 79. Класс BodyContent расширяет JspWriter можно рассматривать, как хранилище информации, полученной из тела тега объект класса BodyContent
- 80. ссылку на объект класса BodyContent можно получить двумя способами: public BodyContent getBodyContent() BodyContent nc = pageContext.pushBody()
- 81. • после обработки прочитанного содержимого его надо отправить в выходной поток out методом public void writeOut(Writer
- 82. Рассмотрим пример: в теле тега будет sql-запрос SELECT * FROM students
- 83. query sdotags.QueryTag tagdependent size false true
- 84. public class QueryTag extends BodyTagSupport{ private Connection con; private ResultSet rs; public int doStartTag(){ . .
- 85. public int doAfterBody(){ BodyContent bc = getBodyContent(); if(bc==null){ return SKIP_BODY; } String query = bc.getString(); try{
- 86. public int doEndTag(){ JspWriter out = pageContext.getOut(); out.print(“Results"); conn = null; return EVAL_PAGE; } }
- 87. Функции теги Для решения небольших задач в рамках страницы применяются функции-теги. Валидацию, форматирование, преобразование можно выполнять
- 88. JSP Page ${myfunc:myfunction("aaaa")} Тогда файл tld имеет следующий вид: 1.0 newtag /WEB-INF/tlds/newtag myfunction aaa.ClassForFunction java.lang.String f(java.lang.String)
- 89. Тогда файл tld имеет следующий вид: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"> 1.0 newtag /WEB-INF/tlds/newtag myfunction aaa.ClassForFunction java.lang.String f(java.lang.String)
- 90. Соответствующий класс имеет вид: package aaa; public class ClassForFunction { public static String f(String name){ return
- 91. Элементы action для тегов Элемент jsp:attribute позволяет определить значение атрибута тега в теле XML -элемента, а
- 93. Скачать презентацию