Java Server Pages (JSP). JSP Позволяет веб разработчикам динамически генерировать HTML, XML - и другие веб страницы. Страницы компилируются JSP- компилятором.

Презентация:



Advertisements
Похожие презентации
Java Server Pages (JSP). JSP Позволяет веб разработчикам динамически генерировать HTML, XML - и другие веб страницы. Страницы компилируются JSP- компилятором.
Advertisements

Пользовательские действия (custom actions) в JSP. JSTL.
Платформа J2EE Сервис: Java Naming Directory (JNDI) – универсальный сервис хранения объектов в иерархической структуре имен (аналогично файловой системе)
Платформа J2EE Сервис: Java Naming Directory (JNDI) – универсальный сервис хранения объектов в иерархической структуре имен (аналогично файловой системе)
1 Java J2EE. JSP. 2 Технология Java Server Pages (JSP) Java Server Pages (JSP) обеспечивает разделение динамической и статической частей страницы, результатом.
Saint Petersburg, 2012 Java Lecture #12 JSP. JSP 2 Java Server Pages (JSP) – технология разработки веб страниц, поддерживающих динамический контент. Позволяет.
Saint Petersburg, 2012 Java Lecture 12 JSTL. JSP -> JSTL JSP – хорошо Что делать если хотим добавить условие? Итерирование по списку и вывод каждого элемента.
Язык Java. JSP.. Java. Синтаксис. Перевод строчки эквивалентен пробелу Регистр в именах различается // Комментарии до конца строки /* Многострочные комментарии.
JSF/JSP/Tomcat Введение в технологию. JavaServer Faces JSF - фреймворк для веб-приложений, написанный на Java JSF основывается на использовании компонентов.
Уровень представления Apache Struts Framework Библиотека тэгов.
Программирование на стороне сервера.
Уровень представления JSP, EL-expressions, JSTLУровень представления JSP, EL-expressions, JSTL.
Программирование с БД Клиент-серверная архитектура API JDBC.
Где хранить данные в web- приложении page –JSP страница request – HTTP запрос session – сессия пользователя application – веб-приложение Static Java class.
©Павловская Т.А. (СПбГУ ИТМО) Курс «С#. Программирование на языке высокого уровня» Павловская Т.А.
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – обработка ошибок страниц и приложения, Global.aspx.
Java Database Connectivity (JDBC) Универсальное API для доступа к данным.
Web - сервисы. Веб-служба, веб-сервис (англ. web service) идентифицируемая веб-адресом программная система со стандартизированными интерфейсами.англ.веб-адресоминтерфейсами.
Низкоуровневые операции в ИС. Сокеты в C#. Понятие сокета Если требуется получить доступ к сетевым операциям низкого уровня, в программе следует использовать.
Компьютерные технологии в метеорологии (Java-технологии) Чукин В. В.
Транксрипт:

Java Server Pages (JSP)

JSP Позволяет веб разработчикам динамически генерировать HTML, XML - и другие веб страницы. Страницы компилируются JSP- компилятором в сервлеты, представляющие собой Java-классы, которые выполняются на сервере. Включает в себя JSTL(JavaServer Pages Standard Tag Library) и JavaServer Faces

JSP проще в понимании и чтении. Синтаксис JSP – это подмножество языка Java. JSP позволяет отделить бизнес-логику, логику представления и логику связи с клиентом. Обычно JSP содержат только логику отбражения. JSP может отделить бизнес логику от представления, если использует компоненты. JSP позволяет разделить работу дизайнера и программиста. Это позволяет разделять работу по представлению с использованием JSP, программированию компонент на Java, которые используются в JSP.

HWA sample title out.print("Hello, world!");

Типы конструкций JSP Элементы скриптов позволяют указать код на языке Java, который впоследствии станет частью в конечный сервлет. Директивы дают возможность управлять всей структурой сервлета. Действия служат для задания существующих используемых компонентов, а также для контроля поведением движка JSP.

Неявные объекты 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 – Объект, связанный с обработкой данной страницы.

Конструкции JSP

Выражения JSP Текущее время: Имя вашего хоста: Скриплеты JSP Удачного Вам дня! Не удачного Вам дня! После преобразования: if (Math. random () < 0.5) { out.println ( " Удачного вам дня!"); } else { out.println ( " Не удачного вам дня!"); } Объявления JSP Количество обращений к странице с момента загрузки сервера:

Директива JSP page

Атрибуты директивы page

Пример JSP-страницы... Использование JavaServer Pages Некое динамическое содержание созданное с использованием различных механизмов JSP: Выражение. Имя вашего хоста:. Scriptlet. Объявление (совместно с выражением). Количество обращений к странице с момента загрузки сервера: Директива (совместно с выражением). Текущая дата:

Действия Действия JSP используют конструкции с синтаксисом XML для управления работой движка сервлета. jsp : include - Подключает файл в момент запроса страницы. jsp : useBean - Поиск или создание нового экземпляра JavaBean. jsp : set Property - Установка свойств JavaBean. jsp : getProperty - Вставить свойство JavaBean в поток вывода. jsp : forward - Перенаправляет запрос на другую страницу. jsp : plugin - Генерирует код (в зависимости от типа используемого браузера), который создает тэг OBJECT или EMBED для Java plugin.

Действие jsp : include... Новости на JspNews. com Вот фрагменты нaших четырех самых популярных статей:

Действие 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; } }

Пример Check all Favorite fruits: Apples Grapes Oranges Melons

Пример JSP-страницы The checked fruits (got using request) are: The checked fruits (got using beans) are

Стадартные библиотеки тегов JSTL javax.servlet.jsp.jstl 5 библиотек: core – входят теги, создающие подобие языка программирования, призваны заменить скриплеты java хml – теги выбирающие, интерпретирующие и преобразующие документ xml fmt – теги, помогающие в интернализации страниц jsp sql – теги связи и работы с базами данных fn – теги для обработки строк

core uri= prefix=c % Теги: - выводит значение в поток Здравствуйте, уважаемый ! - устанавливает начение переменной - удаляет определенные переменные - устанавливает значение переменной в формате URL Издательство - проверяет условие Уважаемый ${name}! Укажите свой возраст.

- разветвление На Вашем счету отрицательный остаток. На Вашем счету нулевой остаток. 0}> На Вашем счету положительный остаток. Нет сведений об остатке.

- цикл 1-й вариант ${item.quantity} 2-й вариант ${k} - элемент

- разбивает строку символов на слова подобно классу StringTokenizer - включает на страницу ресурсы по их адресу URL var=intro scope=session charEncoding=windows-1251 />

xml uri= prefix=x % Теги:,,,,,, атрибутом select выбирают элемент их xml., интерпретируют и преобразуют документ xml.

sql uri= prefix=sql % Теги:,,, - для связи и работы с бд. select * from DEPT insert into DEPT values(50,XXX, YYY)

fn uri= prefix=fn % Теги:,,,,,,,, - функции для обработки строк 0}

JavaBean Java Bean это многократно используемый программный компонент, которым можно манипулировать визуально в (визуальных) средах разработки. В простейшем случае бин это отдельный класс, представляющий определенную компоненту. В более сложных случаях это набор взаимосвязанных классов, каждый из которых играет определенную роль.

Универсальные возможности бина Поддерживает "интроспекцию" (introspection), что позволяет средам разработки анализировать из чего состоит и как работает данный бин. Обеспечивает настраиваемость (customization), т.е. возможность изменять внешний вид (положение, размеры и т.п.) и поведение данного бина. Обеспечивает поддержку "событий" (events) как средства связи данного бина с программой и другими бинами. Обеспечивает поддержку свойств или атрибутов (properties), которые используются, в частности, для настройки (например, ширина, высота, количество каких-либо составных подкомпонент и т.п.). Поддерживает "сохраняемость" (persistence). Это необходимо для того, чтобы после настройки конкретного бина в некоторой визуальной среде разработки была возможность сохранить параметры настройки, а потом их восстановить.

Свойства бинов (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)

Пример Ввод идентификация пользователя Введите логин: Введите пароль: Введите

JSP страница JSP Page Hello ! Продолжить

Класс 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; }

Библиотеки пользовательских тегов Расширяют действия страниц jsp. Программисты на Java предпочитают синтаксис JavaBean/скриптлет. Веб-программисты предпочитают стиль XML, потому что он похож на HTML- код.

Сходство между JavaBeans и пользовательскими тегами JavaBeans и пользовательские теги используют классы Java. В них инкапсулируется сложная обработка. И те, и другие используются в страницах JSP.

Отличие между JavaBeans и пользовательскими тегами Теги пользователя могут управлять содержимым JSP, а JavaBean не могут. JSP могут передавать параметры в теги пользователя. Теги пользователя требуют наличия файла Tag Library Descriptor File (.tld), который связывает имя тега с классом Java. Класс для тега должен реализовывать интерфейс javax.servlet.jsp.tagext.Tag непосредственно или через вспомогательные классы TagSupport или BodyTagSupport. JavaBean не требуют никаких классов или интерфейсов.

Три части пользовательского тега

Пример 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

Файл 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); }

Файл StringTag.jsp A Simple Custom Tag A Simple Custom Tag

Java Server Faces Технология - фреймворк серверных (serverside) компонентов пользовательского интерфейса для web приложений, написаных на языке Java Разделение представления и реализации JSP технология достигает этих целей лишь частично Предоставление простой программной модели за счёт разделения обязанностей в команде Aвторы страниц могут не иметь опыта использования скриптовых языков Создание абстрактного уровня реализации JSP технология может быть заменена на иную

Пример 2. Выполнение запроса к БД. Страница HTML Retrieve a Ticket Enter the customer ID Customer ID:

Файл 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

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); }

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()); } } } }

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

Framework JSF 1. Расширяет возможности HTML. 2. Построен по схеме MVC. Роль контроллера играет сервлет FacesServlet, описанный в файле web.xml. Может содержать: Компоненты JavaBeans с функциональностью и данными специфичными для приложения Слушатели событий (Event listeners) JSP страницы Серверные вспомогательные классы (JavaBeans для доступа к БД)

Описание в web.xml … Faces Servlet javax.faces.webapp.FacesServlet … Faces Servlet /faces/* … Запросы к JSF

Библиотеки JSF core html Описываются на странице директивами: Все теги вкладываются в элемент. Теги включаемого файла в элемент. На странице обычно формируется пользовательский интерфейс, который будет отображен в браузере.

Пример index.jsf JSP Page

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"; }

faces-config.xml Класс обработчик ввода cashier myjsf.Cashier request index.jsp После удачной проверки переход на страницу guest.jsp success guest.jsp После не удачной проверки возрат на страницу index.jsp failure index.jsp

NetBeans IDE Позволяет автоматически сгенерировать заготовку для JavaServer Pages страницы JavaServer Faces страница Подложки Дескрипторы Большинство операций может быть выполнено с помощью визуального конструирования Навигация Связывание свойств объектов Создание и размещение графических элементов управления

Доступные элементы GUI