Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемБогдан Шалыгин
1 Java Server Pages (JSP)
2 JSP Позволяет веб разработчикам динамически генерировать HTML, XML - и другие веб страницы. Страницы компилируются JSP- компилятором в сервлеты, представляющие собой Java-классы, которые выполняются на сервере. Включает в себя JSTL(JavaServer Pages Standard Tag Library) и JavaServer Faces
3 JSP проще в понимании и чтении. Синтаксис JSP – это подмножество языка Java. JSP позволяет отделить бизнес-логику, логику представления и логику связи с клиентом. Обычно JSP содержат только логику отбражения. JSP может отделить бизнес логику от представления, если использует компоненты. JSP позволяет разделить работу дизайнера и программиста. Это позволяет разделять работу по представлению с использованием JSP, программированию компонент на Java, которые используются в JSP.
4 HWA sample title out.print("Hello, world!");
5 Типы конструкций JSP Элементы скриптов позволяют указать код на языке Java, который впоследствии станет частью в конечный сервлет. Директивы дают возможность управлять всей структурой сервлета. Действия служат для задания существующих используемых компонентов, а также для контроля поведением движка JSP.
6 Неявные объекты request – Объект, содержащий запрос клиента. Относится к классу javax.servlet.ServletRequest или другому наследующему его классу. response – Объект, содержащий запрос клиента. Относится к классу javax.servlet.ServletResponse или другому наследующему его классу. out – Объект типа PrintWriter, содержащий выходной поток сервлета. Информация посылаемая в этот поток будет передана клиенту. Объект является экземпляром класса javax.servlet.jsp.JspWriter. session – Объект, создаваемый контейнером для идентификации клиента, а также хранения персональных HTTP объектов. Создается контейнером для протокола и является экземпляром класса javax.servlet.http.HttpSession. application – Объект типа ServletContext, связанный с конфигурацией сервлета, соответствующего данной JSP странице. config – Объект, связанный с конфигурацией сервлета. Является экземпляром класса javax.servlet.ServletConfig. pageContext – Объект, определяющий контекст страницы JSP page – Объект, связанный с обработкой данной страницы.
7 Конструкции JSP
8 Выражения JSP Текущее время: Имя вашего хоста: Скриплеты JSP Удачного Вам дня! Не удачного Вам дня! После преобразования: if (Math. random () < 0.5) { out.println ( " Удачного вам дня!"); } else { out.println ( " Не удачного вам дня!"); } Объявления JSP Количество обращений к странице с момента загрузки сервера:
9 Директива JSP page
10 Атрибуты директивы page
11 Пример JSP-страницы... Использование JavaServer Pages Некое динамическое содержание созданное с использованием различных механизмов JSP: Выражение. Имя вашего хоста:. Scriptlet. Объявление (совместно с выражением). Количество обращений к странице с момента загрузки сервера: Директива (совместно с выражением). Текущая дата:
12 Действия Действия JSP используют конструкции с синтаксисом XML для управления работой движка сервлета. jsp : include - Подключает файл в момент запроса страницы. jsp : useBean - Поиск или создание нового экземпляра JavaBean. jsp : set Property - Установка свойств JavaBean. jsp : getProperty - Вставить свойство JavaBean в поток вывода. jsp : forward - Перенаправляет запрос на другую страницу. jsp : plugin - Генерирует код (в зависимости от типа используемого браузера), который создает тэг OBJECT или EMBED для Java plugin.
13 Действие jsp : include... Новости на JspNews. com Вот фрагменты нaших четырех самых популярных статей:
14 Действие jsp : useBean... Многократное использование JavaBeans в JSP Сообщение: Сообщение: SimpleBean.java package hall; public class SimpleBean { private String message = Текст сообщения не задан ; public String getMessage() {return (message) ; } public void setMessage (String message) { this. message = message; } }
15 Пример Check all Favorite fruits: Apples Grapes Oranges Melons
16 Пример JSP-страницы The checked fruits (got using request) are: The checked fruits (got using beans) are
17 Стадартные библиотеки тегов JSTL javax.servlet.jsp.jstl 5 библиотек: core – входят теги, создающие подобие языка программирования, призваны заменить скриплеты java хml – теги выбирающие, интерпретирующие и преобразующие документ xml fmt – теги, помогающие в интернализации страниц jsp sql – теги связи и работы с базами данных fn – теги для обработки строк
18 core uri= prefix=c % Теги: - выводит значение в поток Здравствуйте, уважаемый ! - устанавливает начение переменной - удаляет определенные переменные - устанавливает значение переменной в формате URL Издательство - проверяет условие Уважаемый ${name}! Укажите свой возраст.
19 - разветвление На Вашем счету отрицательный остаток. На Вашем счету нулевой остаток. 0}> На Вашем счету положительный остаток. Нет сведений об остатке.
20 - цикл 1-й вариант ${item.quantity} 2-й вариант ${k} - элемент
21 - разбивает строку символов на слова подобно классу StringTokenizer - включает на страницу ресурсы по их адресу URL var=intro scope=session charEncoding=windows-1251 />
22 xml uri= prefix=x % Теги:,,,,,, атрибутом select выбирают элемент их xml., интерпретируют и преобразуют документ xml.
23 sql uri= prefix=sql % Теги:,,, - для связи и работы с бд. select * from DEPT insert into DEPT values(50,XXX, YYY)
24 fn uri= prefix=fn % Теги:,,,,,,,, - функции для обработки строк 0}
25 JavaBean Java Bean это многократно используемый программный компонент, которым можно манипулировать визуально в (визуальных) средах разработки. В простейшем случае бин это отдельный класс, представляющий определенную компоненту. В более сложных случаях это набор взаимосвязанных классов, каждый из которых играет определенную роль.
26 Универсальные возможности бина Поддерживает "интроспекцию" (introspection), что позволяет средам разработки анализировать из чего состоит и как работает данный бин. Обеспечивает настраиваемость (customization), т.е. возможность изменять внешний вид (положение, размеры и т.п.) и поведение данного бина. Обеспечивает поддержку "событий" (events) как средства связи данного бина с программой и другими бинами. Обеспечивает поддержку свойств или атрибутов (properties), которые используются, в частности, для настройки (например, ширина, высота, количество каких-либо составных подкомпонент и т.п.). Поддерживает "сохраняемость" (persistence). Это необходимо для того, чтобы после настройки конкретного бина в некоторой визуальной среде разработки была возможность сохранить параметры настройки, а потом их восстановить.
27 Свойства бинов (Bean properties) Эти свойства являются private или protected полями класса бина, которые доступны для выборки и/или модификации через специальные public методы 'get...' и 'set...'. есть поле private String name; есть get-метод public String getName() { return name; } есть set-метод public void setString(String name) { this.name = name; } Для свойств типа boolean используется is-метод. public boolean isEnabled() public void setEnabled(boolean b)
28 Пример Ввод идентификация пользователя Введите логин: Введите пароль: Введите
29 JSP страница JSP Page Hello ! Продолжить
30 Класс Data package paket; public class Data { String username; String pass; String mail; public void setUsername(String value){ username=value; } public void setMail(String value){ mail=value; } public void setPass(String value){ pass=value; } public String getUsername(){ return username; } public String getMail() { return mail; } public String getPass() { return pass; }
31 Библиотеки пользовательских тегов Расширяют действия страниц jsp. Программисты на Java предпочитают синтаксис JavaBean/скриптлет. Веб-программисты предпочитают стиль XML, потому что он похож на HTML- код.
32 Сходство между JavaBeans и пользовательскими тегами JavaBeans и пользовательские теги используют классы Java. В них инкапсулируется сложная обработка. И те, и другие используются в страницах JSP.
33 Отличие между JavaBeans и пользовательскими тегами Теги пользователя могут управлять содержимым JSP, а JavaBean не могут. JSP могут передавать параметры в теги пользователя. Теги пользователя требуют наличия файла Tag Library Descriptor File (.tld), который связывает имя тега с классом Java. Класс для тега должен реализовывать интерфейс javax.servlet.jsp.tagext.Tag непосредственно или через вспомогательные классы TagSupport или BodyTagSupport. JavaBean не требуют никаких классов или интерфейсов.
34 Три части пользовательского тега
35 Пример 1. Файл jpptaglib.tld 1.0 jpptaglib /WEB-INF/tlds/jpptaglib A tag library from Java Primer stringTag paket.StringTag a Hello World custom tag example EMPTY
36 Файл StringTag.java package paket; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; import java.io.*; public class StringTag extends TagSupport { public int doStartTag() { try { JspWriter out = pageContext.getOut(); out.print("Hello, String tag example "); }catch (Exception e) { System.out.println("Error in StringTag class" + e); } return(SKIP_BODY); }
37 Файл StringTag.jsp A Simple Custom Tag A Simple Custom Tag
38 Java Server Faces Технология - фреймворк серверных (serverside) компонентов пользовательского интерфейса для web приложений, написаных на языке Java Разделение представления и реализации JSP технология достигает этих целей лишь частично Предоставление простой программной модели за счёт разделения обязанностей в команде Aвторы страниц могут не иметь опыта использования скриптовых языков Создание абстрактного уровня реализации JSP технология может быть заменена на иную
39 Пример 2. Выполнение запроса к БД. Страница HTML Retrieve a Ticket Enter the customer ID Customer ID:
40 Файл jppticket-taglib.tld ….. jppticket-taglib /WEB-INF/tlds/jppticket-taglib A tag library from Java Primer ticketTag paket.TicketTagJava empty a Hello World custom tag example custID true
41 import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; import java.io.*; import java.sql.*; import java.util.*; public class TicketTagJava extends TagSupport { private String custIDString; private int custID; //information about the customer private String lastName; private String firstName; private int cruiseID; //information about the cruise private String destination; private String port; private String sailing; private int numberOfTickets; public int doStartTag() { retrieveFromDB(); try { JspWriter out = pageContext.getOut(); out.print("The custID that you entered = " + custID); out.print(" " ); out.print("The Last Name = " + lastName); out.print(" " ); out.print("The First Name = " + firstName); out.print(" " ); out.print("The cruiseID = " + cruiseID); out.print(" " ); out.print("The destination = " + destination); out.print(" " ); out.print("The port = " + port); out.print(" " ); out.print("The sailing = " + sailing); out.print(" " ); out.print("The number of tickets = " + numberOfTickets); }catch (Exception e) { System.out.println("Error in TicketTag2 class" + e); } return(SKIP_BODY); } TicketTagJava.java public void setCustID(String id) { this.custIDString=id; this.custID = Integer.parseInt(custIDString); }
42 public String retrieveFromDB() { java.sql.Connection dbConn = null; Statement statement1 = null; String createStatement; String insertStatement; try { // задание драйвера и подключение к БД Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String sourceURL = "jdbc:odbc:Data"; dbConn = DriverManager.getConnection(sourceURL); statement1 = dbConn.createStatement(); String getBeanString = "SELECT * FROM TicketRequest WHERE CustID = " + custID; ResultSet results = statement1.executeQuery(getBeanString); lastName = ""; firstName = ""; cruiseID = 0; destination = ""; port = ""; sailing = ""; numberOfTickets = 0; while (results.next()) { // обработка результата запроса lastName = results.getString("lastName"); firstName = results.getString("firstName"); cruiseID = results.getInt("cruiseID"); destination = results.getString("destination"); port = results.getString("port"); sailing = results.getString("sailing"); numberOfTickets = results.getInt("numberOfTickets"); } return "Successful Retrieval"; } catch (Exception e) { System.out.println("Exception was thrown: " + e.getMessage()); return "UnSuccessful Retrieval"; } finally { try { if (statement1 != null) statement1.close(); if (dbConn != null) dbConn.close(); } catch (SQLException sqle) { System.out.println("SQLException during close(): " + sqle.getMessage()); } } } }
43 TicketTag.jsp Ticket Selection Ticket Selected ' /> Ticket Selected The custID that you entered = 1 The Last Name = Иванов The First Name = Иван The cruiseID = 2 The destination = Черное море The port = Ялта The sailing = The number of tickets = 0
44 Framework JSF 1. Расширяет возможности HTML. 2. Построен по схеме MVC. Роль контроллера играет сервлет FacesServlet, описанный в файле web.xml. Может содержать: Компоненты JavaBeans с функциональностью и данными специфичными для приложения Слушатели событий (Event listeners) JSP страницы Серверные вспомогательные классы (JavaBeans для доступа к БД)
45 Описание в web.xml … Faces Servlet javax.faces.webapp.FacesServlet … Faces Servlet /faces/* … Запросы к JSF
46 Библиотеки JSF core html Описываются на странице директивами: Все теги вкладываются в элемент. Теги включаемого файла в элемент. На странице обычно формируется пользовательский интерфейс, который будет отображен в браузере.
47 Пример index.jsf JSP Page
48 Cashier.java package myjsf; public class Cashier { private String name; private String pswd; public String getName() {return name;} public String getPswd() {return pswd;} public void setName(String n) {name=n;} public void setPswd(String p){pswd=p;} public String submit() { if("Cashier".equalsIgnoreCase(name)&&"123".equals(pswd)) return "success"; else return "failure"; }
49 faces-config.xml Класс обработчик ввода cashier myjsf.Cashier request index.jsp После удачной проверки переход на страницу guest.jsp success guest.jsp После не удачной проверки возрат на страницу index.jsp failure index.jsp
50 NetBeans IDE Позволяет автоматически сгенерировать заготовку для JavaServer Pages страницы JavaServer Faces страница Подложки Дескрипторы Большинство операций может быть выполнено с помощью визуального конструирования Навигация Связывание свойств объектов Создание и размещение графических элементов управления
51 Доступные элементы GUI
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.