18123

JavaServer Faces (JSF)

Лекция

Информатика, кибернетика и программирование

Тема 8: JavaServer Faces JSF Технологія JavaServer Faces – це серверний framework для webпрограм що розробляються на Java. Основні компоненти JavaServer Faces такі: – API для представлення UIкомпонентів і керування їх станом; обробки подій; серверної валідації; конверсії даних; визначення навігації по

Украинкский

2013-07-06

174 KB

3 чел.


Тема 8: JavaServer Faces (JSF)

Технологія JavaServer Faces – це серверний framework для web-програм, що розробляються на Java. Основні компоненти JavaServer Faces такі:

– API для представлення UI-компонентів і керування їх станом; обробки подій; серверної валідації; конверсії даних; визначення навігації по сторінках; підтримки інтернаціоналізації; забезпечення розширюваності для всіх цих функцій.

– Дві JSP бібліотеки користувацьких тегів для представлення UI-компонентів в JSP-сторінках.

Частиною JSF можна також вважати  «добре визначену програмну модель» (well-defined programming model). Дана модель та бібліотеки тегів значно полегшують побудову і підтримку web-програм з серверним UI.

На рисунку зображено модель роботи JSF-програми.

JSP-сторінка myform.jsp є JavaServer Faces сторінкою, яка є JSP-сторінкою, що включає JavaServer Faces теги. В ній задаються компоненти інтерфейсу користувача – при цьому використовуються користувацькі теги технології JavaServer Faces technology. Потім програма myUI керує об’єктами, на які є посилання в JSP-сторінці. Серед цих об’єктів:

• Об’єкти UI-компонентів, які відповідають тегам в JSP-сторінці;

Event listeners, validators, and converters, які зареєстровані для компонентів;

• JavaBeans-компоненти, які інкапсулюють дані і специфічну для програми функціональність.

MVC

В JSF реалізовано програмну модель, яка називається Model-view-controller (MVC).

MVC – це архітектурний шаблон для побудови складних програмних систем. MVC стверджує, що потрібно розділяти поняття дані (model) та user interface (view) так, щоб зміни в user interface не зачіпали обробку даних (не вимагали змін в модулях обробки даних, тобто в модулях бізнес-логіки) і навпаки, дані могли б бути реорганізовані без зміни інтерфейсу користувача. Model-view-controller вирішує дану проблему через відділення (decoupling) доступу до даних і бізнес-логіки від презентації даних та взаємодії з користувачем через введення проміжного компоненту – контролера.

Є поширеним в програмуванні розділення програми на окремі рівні: презентаційний (UI), бізнес-логіки і доступу до даних. В MVC презентаційний рівень розділяється далі на view та controller.

Model

Специфічне для предметної області представлення інформації, з якою  працює програма.

View

Представляє інформацію з моделі на форму, придатну для взаємодії з користувачем, як-правило, елемент інтерфейсу користувача.

Controller

Обробляє і відповідає на події, як-правило, дії користувача; може викликати  зміни в моделі.

MVC часто використовується в web-програмах, де view – це HTML-сторінка, а код, який збирає динамічні дані і генерує вміст сторінки – це controller. Нарешті, model представляється даними, що зазвичай зберігаються в базі даних чи XML файлах.

Хоча при реалізації MVC можливі варіанти, виконання програми, як правило, відбувається наступним чином:

  1.  Користувач робить якусь дію (наприклад, натискає кнопку).
  2.  Controller обробляє вхідну подію від user interface, часто через зареєстрований обробник (handler).
  3.  Controller звертається до model, можливо, змінюючи її відповідно до дії користувача.
  4.  View використовує model для генерування відповідного інтерфейсу користувача. View отримує дані з model – model не повинна знати про існування view.
  5.  User interface чекає на подальші дії користувача, що розпочнуть новий цикл.

Крім JSF, відомими прикладами framework, що реалізує концепцію MVC, є Struts та Spring.

З чого може складатись JavaServer Faces програма

В основному, JavaServer Faces програма така ж, як будь-яка інша Java web програма. Типова JavaServer Faces програма включає такі частини:

• Набір JSP сторінок (хоча не обов’язково JSP, можуть використовуватись інші презентаційні технології)

Deployment descriptor (файл web.xml)

• Набір backing beans, що є JavaBeans компонентами, що визначають властивості і функції для UI компонентів на сторінці

• Конфігураційний ресурсний файл програми, який визначає правила навігації між сторінками і конфігурує біни та інші користувацькі об’єкти (файл faces-config.xml)

• Можливо, набір користувацьких об’єктів, створених розробником програми. Ці об’єкти можуть включати користувацькі компоненти, валідатори (validators), конвертори (converters) і обробники подій (listeners).

Прив’язка FacesServlet до програми

Всі JavaServer Faces програми повинні включати мепінг екземпляру FacesServlet в їх deployment descriptor (наприклад, web.xml). Екземпляр FacesServlet приймає вхідні запити, передає їх для обpобки та ініціалізує ресурси. Приклад (частина web.xml):

<servlet>

  <display-name>FacesServlet</display-name>

  <servlet-name>FacesServlet</servlet-name>

  <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>

  <load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

  <servlet-name>FacesServlet</servlet-name>

  <url-pattern>/guess/*</url-pattern>

</servlet-mapping>

Бібліотеки користувацьких тегів JSF

JavaServer Faces програма, яка включає JSP сторінки, також може використовувати стандартні бібліотеки тегів, визначені JavaServer Faces технологією для представлення UI компонентів та інших об’єктів на сторінці.

В JavaServer Faces входить дві стандартні бібліотеки користувацьких тегів: HTML component tag library та core tag library. Їх підключення здійснюється так:

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>

<%@ taglib uri="http:.//java.sun.com/jsf/core" prefix="f" %>

Конфігураційний файл faces-config.xml

Він потрібен для конфігурування JSF-програми, наприклад, задання правил переходу між сторінками, ресурсів програми, використовуваних в програмі managed beans тощо.

Приклад програми на основі технології JSF

web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee web-app_2_5.xsd"

        version="2.5">

 <display-name>TryJSF</display-name>

 <servlet>

 <display-name>FacesServlet</display-name>

 <servlet-name>FacesServlet</servlet-name>

 <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>

 <load-on-startup>1</load-on-startup>

 </servlet>

 <servlet-mapping>

 <servlet-name>FacesServlet</servlet-name>

 <url-pattern>/guess/*</url-pattern>

 </servlet-mapping> 

</web-app>

faces-config.xml

<?xml version="1.0"?>

<faces-config xmlns="http://java.sun.com/xml/ns/javaee"

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-facesconfig_1_2.xsd"

version="1.2">

 <application>

 <resource-bundle>

  <base-name>guessNumber.ApplicationMessages</base-name>

  <var>ErrMsg</var>

 </resource-bundle>

 </application>

 <navigation-rule>

 <from-view-id>/greeting.jsp</from-view-id>

 <navigation-case>

  <from-outcome>success</from-outcome>

  <to-view-id>/response.jsp</to-view-id>

 </navigation-case>

 </navigation-rule>

 <navigation-rule>

 <from-view-id>/response.jsp</from-view-id>

 <navigation-case>

  <from-outcome>success</from-outcome>

  <to-view-id>/greeting.jsp</to-view-id>

 </navigation-case>

 </navigation-rule>

 <managed-bean>

 <managed-bean-name>UserNumberBean</managed-bean-name>

 <managed-bean-class>guessNumber.UserNumberBean</managed-bean-class>

 <managed-bean-scope>session</managed-bean-scope>

 <managed-property>

  <property-name>minimum</property-name>

  <property-class>long</property-class>

  <value>0</value>

 </managed-property>

 <managed-property>

  <property-name>maximum</property-name>

  <property-class>long</property-class>

  <value>10</value>

 </managed-property>

 </managed-bean>

</faces-config>

index.jsp

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">

<html>

<head>

</head>

<body>

<jsp:forward page="guess/greeting.jsp" />

</body>

</html>

greeting.jsp

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

<HTML xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

<HEAD> <title>Hello</title> </HEAD>

<f:view>

 <h:form id="helloForm1">

 <h2>Hi, I'm Duke. I’m thinking of a number from

 <h:outputText

  value="#{UserNumberBean.minimum}"/>

 <h:outputText 

  value="#{UserNumberBean.maximum}"/>

 Can you guess it?</h2>

 <h:inputText id="userNo"  

  value="#{UserNumberBean.userNumber}">

  <f:validateLongRange

   minimum="#{UserNumberBean.minimum}"

   maximum="#{UserNumberBean.maximum}"/>  

 </h:inputText>

 <h:commandButton id="submit"

  action="success" value="Submit"/>

 <h:message showSummary="true" showDetail="false"

  style="color: red;

  font-family: ’New Century Schoolbook’, serif;

  font-style: oblique;

  text-decoration: overline"

  id="errors1"

  for="userNo"/>

 </h:form>

</f:view>

</HTML>

response.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%@ taglib prefix="f"  uri="http://java.sun.com/jsf/core"%>

<%@ taglib prefix="h"  uri="http://java.sun.com/jsf/html"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Guess the number</title>

</head>

<body>

<f:view>

   <h:form id="responseForm" >

       <h:graphicImage id="waveImg" url="/wave.med.gif" alt="Duke waving"/>

    <h2><h:outputText id="result" 

      value="#{UserNumberBean.response}"/>

    </h2>   

    <h:commandButton id="back" value="Back" action="success"/><p>

   </h:form>

</f:view>

</body>

</html>

UserNumberBean.java

package guessNumber;

import java.util.Random;

public class UserNumberBean {

Integer randomInt=null;

Integer userNumber = null;

String response=null;

 private boolean maximumSet=false;

 private boolean minimumSet=false;

 long minimum;

 long maximum;

 

   public UserNumberBean() {

       Random randomGR = new Random();

       randomInt = new Integer(randomGR.nextInt(10));

       System.out.println("Duke's number: " + randomInt);

   }

 

 public void setUserNumber(Integer user_number) {

 userNumber = user_number;

}

 public Integer getUserNumber() {

 return userNumber;

}

 public String getResponse() {

 if(userNumber != null && userNumber.compareTo(randomInt) == 0) {

  return "Yay! You got it!";

 } else {

  return "Sorry, "+userNumber+" is incorrect.";

 }

}

 public long getMinimum() {

 return minimum;

}

 public void setMinimum(long minimum) {

 this.minimum = minimum;

 this.maximumSet=true;

}

 public long getMaximum() {

 return maximum;

}

 public void setMaximum(long maximum) {

 this.maximum = maximum;

 this.minimumSet=true;

}

}


 

А также другие работы, которые могут Вас заинтересовать

29015. Уплотнение грунтов основания водопонижением. Ускорение процесса уплотнения с помощью электроосмоса 33.5 KB
  Площадь основания где намечено уплотнение грунтов окружается иглофильтрами или колодцами из которых производится откачка воды водопонизительными установками рис. Понижение уровня подземных вод приводит к тому что в пределах зоны водопонижения снимается взвешивающее действие воды на скелет грунта. При пропускании через грунт постоянного электрического тока происходит передвижение воды к иглофильтрукатоду и эффективный коэффициент фильтрации увеличивается в 10.
29016. Закрепление грунтов инъекциями цементных или силикатных растворов, битума, синтетических смол. Область применения указанных методов 34 KB
  Закрепление грунтов инъекциями цементных или силикатных растворов битума синтетических смол. Закрепление грунтов заключается в искусственном преобразовании строительных свойств грунтов в условиях их естественного залегания разнообразными физикохимическими методами. Это обеспечивает увеличение прочности грунтов снижение их сжимаемости уменьшение водопроницаемости и чувствительности к изменению внешней среды особенно влажности. Цементация грунтов.
29017. Термическое закрепление грунтов. Область применения и методы контроля качества работ 33.5 KB
  В результате этого образуются прочные водостойкие структурные связи между частицами и агрегатами грунта. Отметим что температура газов которыми производится обработка грунта не должна превышать 750.12 суток в результате чего получается упрочнённый конусообразный массив грунта диаметром поверху 15. Образуется как бы коническая свая из обожжённого непросадочного грунта с прочностью до 10 МПа.
29018. Что называется грунтом, его составные элементы 25 KB
  Структурные связи между частицами грунта. Грунтами называют любые горные породы коры выветривания земли сыпучие или связные прочность связей у которых между частицами во много раз меньше чем прочность самих минеральных частиц или эти связи между частицами отсутствуют вовсе. Вода и газы находятся в порах между твердыми частицами минеральными и органическими. Газообразные включения пары газы всегда в том или ином количестве содержатся в грунтах и могут находиться в следующих состояниях: замкнутом или защемленном располагаясь в...
29019. Назовите виды давления грунта на подпорную стенку в зависимости от ее поступательного движения. Какой вид имеет диаграмма давления грунта на стенку в зависимости от ее перемещения 31.5 KB
  Какой вид имеет диаграмма давления грунта на стенку в зависимости от ее перемещения В зависимости от поступательного движения подпорной стенки на нее могут действовать следующие виды давления грунта: активное давление; пассивное давление; давление покоя. Активным называется минимальное из всех возможных для данной стенки давление на нее грунта проявляющееся в том случае если стенка имеет возможность переместиться в сторону от засыпки рис. Активное давление иногда называют распором. Пассивным называется максимальное из всех возможных...
29020. Напряжения, возникающие в массиве грунта от действия сооружения, накладываются на поле начальных напряжений, к которым относятся напряжения от собственного веса грунта 28 KB
  Напряжения возникающие в массиве грунта от действия сооружения накладываются на поле начальных напряжений к которым относятся напряжения от собственного веса грунта. Как вычислить вертикальные напряжения в массиве грунта от его собственного веса в следующих случаях: однородное основание; многослойное основание; при наличии в толще грунта уровня подземных вод; при наличии ниже уровня подземных вод водоупорного слоя. Вертикальное напряжение от собственного веса грунта σz представляют собой вес столба грунта над рассматриваемой точкой...
29021. От чего зависит глубина заложения фундамента 31.5 KB
  Глубина заложения фундаментов является одним из основных факторов обеспечивающих необходимую несущую способность и деформации основания не превышающие предельных по условиям нормальной эксплуатации здания или сооружения. От чего зависит глубина заложения фундамента Допускается ли закладывать подошвы соседних фундаментов на разных отметках Глубина заложения фундамента определяется: инженерногеологическими условиями площадки строительства физикомеханические свойства грунтов характер напластования и пр.; гидрогеологическими условиями...
29022. В чем заключается метод вытрамбовывания котлованов 32.5 KB
  В чем заключается метод вытрамбовывания котлованов Приведите несколько наиболее распространенных конструкций и способов устройства фундаментов в вытрамбованных котлованах. Рекомендуемая область применения способов устройства фундаментов в вытрамбованных котлованах. Применяется несколько конструкций и способов устройства фундаментов в вытрамбованных котлованах. Фундаменты в вытрамбованных котлованах используются при строительстве каркасных и бескаркасных зданий в первом случае обычно располагают один фундамент под каждой колонной.
29023. Фундаменты мелкого заложения и их основные виды. Применяемые материалы и их выбор 43 KB
  Фундаменты мелкого заложения и их основные виды. К фундаментам мелкого заложения относятся фундаменты имеющие отношение их глубины заложения к ширине подошвы не превышающее 4 и передающие нагрузку на грунты основания преимущественно через подошву. Фундаменты мелкого заложения разделяются на следующие основные типы: отдельные ленточные сплошные и массивные см.2 Отдельные фундаменты устраивают под колонны опоры балок ферм и других элементов промышленных и гражданских зданий и сооружений.