JSF Spring совместное ипользование.

В свое время я не нашел в инете простого примера как связать JSF и Spring. Давайте напишем вместе простое hello world - приложение, оно будет состоять из 2 - объектов, 1-й helloWorldMessage - создается spring'om  и вставляется в jsf-объект helloWorld. Для связки 2-х технологий нужно только правильно настроить файлы конфигураций JSF и Spring. Нам понадобится - Apace Tomcat, набор библиотек jsf1.2, набор библиотек spring-framework-2.5.5:
commons-codec.jar
commons-logging.jar
jsf-api.jar
jsf-impl.jar
jstl.jar
jtds-1.2.4.jar
spring-security-core-2.0.4.jar
spring-webmvc.jar
spring.jar
standard.jar
Первое нам надо, добавить org.springframework.web.context.ContextLoaderListener в
web.xml файл настройки, для того чтобы включить механизм Dependency Injection -
spring'a.
 
 <?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
          http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         version="2.5">
 
 
    <!-- настраиваем spring для работы -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- обработчик  jsf -->
    <servlet>
        <servlet-name>faces</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>faces</servlet-name>
        <url-pattern>*.faces</url-pattern>
    </servlet-mapping>

    <!-- welcome-file  -->
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>
 
По умолчанию будем использовать файл настройки spring - applicationContext.xml для конфигурирования наших bean's:
 
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
        "http://www.springframework.org/dtd/spring-beans-2.0.dtd">

<beans>
    <!-- создаем bean c именем helloWorldMessage и устанавливаем его
    свойство message равным Hello World! Vit -->
    <bean id="helloWorldClass" class="com.vit.HelloWolrd" >
        <property name="message" value="Hello World! Vit" />
    </bean>
</beans>
Ниже привожу код объекта создаваемого spring'om:
 
package com.vit;

public class HelloWorld  {
    // наше свойство устанавливаемое spring
    private String message;

    public HelloWorld() {
    }
  
    public String getMessage() {
        return message;
    }
    // метод вызываемый spring  при установке свойства message
    public void setMessage(String message) {
        this.message = message;
    }
}
Настроим jsf - нам нужно определить наш jsf bean делается это все
в файле faces-config.xml:
 
<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">
    <!-- нужно вставить обработчик который передает jsf-контексту, bean'ы
         созданные  spring'om-->
    <application>
        <variable-resolver>
            org.springframework.web.jsf.DelegatingVariableResolver
        </variable-resolver>
    </application>

    <managed-bean>
        <managed-bean-name>helloWorld</managed-bean-name>
        <managed-bean-class>
            com.jsf.HelloWorldJSF
        </managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
        <managed-property>
            <property-name>hello</property-name>
            <!-- вставляем наш созданный sprin'om объект helloWorldMessage в
              в jsf-объект класса HelloWorldJSF -->
            <value>#{helloWorldClass}</value>
        </managed-property>
    </managed-bean>
</faces-config>
Ниже привожу код класса создаваемого jsf:
 
package com.jsf;

import com.vit.HelloWolrd;

public class HelloWorldJSF {
    //свойство куда вставляется helloWorldClass-объект
    //который любезно создан sprin'om
    HelloWolrd hello;

    public HelloWolrd getHello() {
        return hello;
    }

    public void setHello(HelloWolrd hello) {
        this.hello = hello;
    }
}
На страничке index.jsp мы переадресуем наш запрос(request) нашей jsf - страничке:
 
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <META HTTP-EQUIV="Refresh" CONTENT="0;URL=success.faces">
</head>
<body>
<p>Loading ...</p>
</body>
</html>
страничка success.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>Hello World</title>
</head>
<body>
<f:view>
    <h:outputLabel>The message:</h:outputLabel>
    <h:outputText value="#{helloWorld.hello.message}" />
</f:view>
</br>
Сдесь мы перемещаемся по свойствам объектов(helloWorld.hello.message)
и выводим  сообщение  The message:Hello World! Vit
</body>
</html>
вы можете загрузить проект положить библиотеки в /lib и запустить ant
- web application  соберется :) Вот и все!
ВложениеРазмер
jsfSpring.zip8.34 кб

Отправить комментарий

КАПЧА
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
CAPTCHA на основе изображений
Enter the characters (without spaces) shown in the image.