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>
Вот и все!
Комментариев нет:
Отправить комментарий