Статьи

Пример конфигурации JSF Tomcat

JavaServer Faces (JSF) — это инфраструктура веб-приложений, предназначенная для упрощения интеграции разработки веб-интерфейсов пользователя. Он используется для разработки и создания компонентов пользовательского интерфейса на стороне сервера и их использования в веб-приложении. Технология JSF основана на архитектуре Model-View-Controller (MVC) и упрощает построение пользовательских интерфейсов (UI) для серверных приложений за счет использования повторно используемых компонентов UI на странице. Спецификация JSF определяет набор стандартных компонентов пользовательского интерфейса и предоставляет API для разработки таких компонентов. Это также позволяет повторно использовать и расширять существующие стандартные компоненты пользовательского интерфейса.

В этом примере мы настроим JSF с сервером приложений Tomcat . Мы создадим простой проект с использованием JSF и развернем его на сервере Tomcat.

Нашей предпочтительной средой разработки является Eclipse . Мы используем версию Eclipse Juno (4.2) вместе с плагином Maven Integration версии 3.1.0. Вы можете скачать Eclipse отсюда и Maven Plugin для Eclipse отсюда . Установка плагина Maven для Eclipse выходит за рамки данного руководства и не будет обсуждаться. Мы также используем JDK 7_u_21. Tomcat 7 — это используемый сервер приложений.

Давайте начнем,

1. Создайте новый проект Maven

Перейдите в Файл -> Проект -> Maven -> Проект Maven.

New-Maven-проект

На странице мастера «Выберите имя проекта и местоположение» убедитесь, что опция «Создать простой проект (пропустить выбор архетипа») не отмечена , нажмите «Далее», чтобы продолжить со значениями по умолчанию.

новый проект

Здесь должен быть добавлен архетип maven для создания веб-приложения. Нажмите «Добавить архетип» и добавьте архетип. Установите переменную «Archetype Group Id» на "org.apache.maven.archetypes" , переменную «Archetype ardact Id» на "maven-archetype-webapp" и «Archetype Version» на "1.0" . Нажмите «ОК», чтобы продолжить.

Maven-архетип-WebApp

На странице мастера «Введите идентификатор артефакта» вы можете определить имя и основной пакет вашего проекта. Задайте для переменной «Group Id» значение "com.javacodegeeks.snippets.enterprise" а для переменной «Artifact Id» — значение "jsfexample" . Вышеупомянутые варианты выбора составляют основной пакет проекта как "com.javacodegeeks.snippets.enterprise.jsfexample" и имя проекта как "jsfexample" . Установите для переменной «Package» значение "war" , чтобы создать файл war для развертывания на сервере tomcat. Нажмите «Готово», чтобы выйти из мастера и создать свой проект.

jsfexample-проект

Структура проекта Maven показана ниже:

jsfexamplelolders

    Он состоит из следующих папок:

  • Папка / src / main / java, которая содержит исходные файлы для динамического содержимого приложения,
  • Папка / src / test / java содержит все исходные файлы для модульных тестов,
  • Папка / src / main / resources содержит файлы конфигурации,
  • Папка / target содержит скомпилированные и упакованные результаты,
  • Папка / src / main / resources / webapp / WEB-INF содержит дескрипторы развертывания для веб-приложения,
  • pom.xml — это файл объектной модели проекта (POM). Единственный файл, который содержит все связанные с проектом конфигурации.

2. Добавьте зависимости JSF

Добавьте зависимости в файле Maven pom.xml , отредактировав его на странице «Pom.xml» редактора POM. Зависимости, необходимые для JSF, показаны ниже:

pom.xml

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.javacodegeeks.snippets.enterprise</groupId>
    <artifactId>jsfexample</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>jsfexample Maven Webapp</name>
    <url>http://maven.apache.org</url>
    <build>
        <finalName>jsfexample</finalName>
    </build>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.sun.faces</groupId>
            <artifactId>jsf-api</artifactId>
            <version>2.1.13</version>
        </dependency>
        <dependency>
            <groupId>com.sun.faces</groupId>
            <artifactId>jsf-impl</artifactId>
            <version>2.1.13</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.0.1</version>
        </dependency>
    </dependencies>
</project>

3. Создайте управляемый компонент

Основными элементами данных при использовании приложения JSF являются управляемые компоненты. Управляемые компоненты — это простые объекты Java (POJO), которые можно использовать в приложении JSF. Они содержат методы получения и установки, бизнес-логику или даже компонент поддержки. Они доступны со страницы JSF. Их можно легко зарегистрировать с помощью аннотаций.

Класс HelloWorldBean.java — это простой Java-бин. Он имеет свойство String, метод получения и установки. Аннотация @ManagedBean помечает его как управляемый компонент с именем helloWorldBean , указанным в атрибуте name . @RequestScoped также @RequestScoped как @RequestScoped . Это означает, что он живет столько же, сколько и HTTP-запрос-ответ. Он создается по запросу HTTP и уничтожается, когда завершается ответ HTTP, связанный с запросом HTTP. В методе init() компонента мы устанавливаем значение String для его свойства.

HelloWorldBean.java

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.javacodegeeks.snippets.enterprise.jsf.servlet;
 
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
 
@ManagedBean(name="helloWorldBean")
@RequestScoped
public class HelloWorldBean {
    private String msg;
 
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    @PostConstruct
    private void init() {
 
        msg = "Hello World!! JFS example.. ";
    }
 
}

4. Создайте файл представления

Файл index.xhtml находится в папке /webapp . Он содержит часть View приложения JSF. Чтобы получить доступ к значениям управляемого компонента через привязку значений, JSF позволяет нам использовать выражения EL . Нам не нужно использовать метод get() или set() для получения / установки значения переменной, а только имя переменной. Выражения JSF EL имеют тип #{...} . Здесь мы используем такое выражение, чтобы получить значение свойства управляемого компонента. Он устанавливается в теге h:outputText , который отображает значение в виде текста HTML.

index.xhtml

01
02
03
04
05
06
07
08
09
10
11
12
<!DOCTYPE html>
    xmlns:h="http://java.sun.com/jsf/html">
 
<h:head>
    <title>JavaCodeGeeks</title>
</h:head>
<h:body>
    <h:outputText value="#{helloWorldBean.msg}" />
</h:body>
</html>

5. Настройте web.xml

В веб-приложении web.xml — это файл, который определяет все о приложении, которое должен знать сервер. Здесь устанавливаются сервлеты и другие компоненты, такие как фильтры или прослушиватели, параметры инициализации, ограничения безопасности, управляемые контейнером, ресурсы, страницы приветствия и т. Д. В приложении JFS нам нужно определить в файле web.xml javax.faces.webapp.FacesServlet , который является классом, отвечающим за обработку приложений JSF. FacesServlet — это центральный контроллер для приложения JSF. Он получает все запросы для приложения JSF и инициализирует компоненты JSF до отображения JSP. Итак, в файле web.xml есть запись, которая определяет FacesServlet . Это запись servlet . Он также имеет запись servlet-mapping , чтобы отобразить все запросы, URL которых заканчивается на .xhtml который должен обрабатываться сервлетом.

web.xml

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="UTF-8"?>
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    id="WebApp_ID" version="3.0">
    <display-name>jsfexample</display-name>
    <servlet>
        <servlet-name>faces</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>faces</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>
 
</web-app>

6. Запустите приложение

Чтобы запустить приложение, нам нужно собрать проект с Maven. Созданный файл war должен быть помещен в папку webapps tomcat. Тогда мы можем нажать на:

localhost:8080/jsfexample/index.xhtml

в браузере, и результат показан ниже:

jsftomcat

Это был пример того, как настроить JSF на сервере приложений tomcat.
Загрузите проект Eclipse этого руководства: JSFTomcatExample.zip