Spring JSF集成教程

欢迎来到Spring JSF集成教程。JSF是一个基于组件的框架,非常注重用户界面。而Spring框架核心原则是依赖注入。因此,将JSF与Spring框架集成是有意义的,其中JSF将用于用户界面,而Spring框架将用于后端服务器端业务逻辑。

Spring JSF

Springs可以与JSF集成DelegatingVariableResolver。现在让我们看看如何将Spring JSF框架与一个示例集成。

  1. 在pom.xml中添加以下spring依赖项以及标准JSF依赖项。Spring核心和Web依赖关系是基于MVC的Web应用程序的最低要求。

    
    <dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.1.4.RELEASE</version>
    </dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>4.1.4.RELEASE</version>
    </dependency><dependency><groupId>javax.inject</groupId><artifactId>javax.inject</artifactId><version>1</version>
    </dependency>
    
  2. 在文件中添加DelegatingVariableResolverfaces-config.xml如下所示。这el-resolver是委托变量解析​​器。
    
    <application><el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
    </application>
    

    提到的el-resolver SpringBeanFacesELResolverJSF前端值连接到Spring后端服务层。

  3. 进行以下输入web.xml以添加spring框架提供的侦听器;
    
    <listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <listener><listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>
    

    监听器类将spring框架入口点绑定到servlet上下文。

我们的配置文件准备就绪,让我们看一下Spring JSF示例项目的java类。

  1. 创建托管bean类CarBean.java

    
    package com.journaldev.jsfspring;import java.util.List;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.SessionScoped;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;@Component
    @ManagedBean
    @SessionScoped
    public class CarBean {@AutowiredCarDao carDao;public void setCarDao(CarDao carDao) {this.carDao = carDao;}public List<String> fetchCarDetails() {return carDao.getCarDetails();}}
    
  2. 创建接口CarDao.java
    
    package com.journaldev.jsfspring;import java.util.List;public interface CarDao {public List<String> getCarDetails();}
    
  3. 创建实现类CarImpl.java
    
    package com.journaldev.jsfspring;import java.util.ArrayList;
    import java.util.List;
    import org.springframework.stereotype.Service;@Service
    public class CarImpl implements CarDao {@Overridepublic List<String> getCarDetails() {List<String> cars = new ArrayList<String>();cars.add(0, "Santro");cars.add(1, "Zen");cars.add(2, "Alto");cars.add(3, "Qualis");cars.add(4, "Innova");for (String c : cars) {System.out.println(c);}return cars;}}
    

    请注意,使用Spring注释进行服务和连线是通过@Autowired注释完成的。我们也可以使用Spring Bean配置文件来完成这些,我们将在后面的部分中看到。

让我们在JSF中创建视图页面。

  1. 创建JSF页面car.xhtml

    
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"xmlns:h="http://java.sun.com/jsf/html"xmlns:ui="http://java.sun.com/jsf/facelets">
    <h:head><title>JSF Spring Integration</title>
    </h:head>
    <h:body><h2>Car Names List</h2><ul><ui:repeat var="cars" value="#{carBean.fetchCarDetails()}"><li><h3>#{cars}</h3></li></ui:repeat></ul>
    </h:body>
    </html>
    
  2. 添加基本​​软件包详细信息applicationContext.xml以扫描服务类。
    
    <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.1.xsd"><context:component-scan base-package="com.journaldev.jsfspring" /><!-- If you prefer XML based Dependency Injectionremove annotation from class and uncomment below configuration -->   <!-- <bean class="com.journaldev.jsfspring.CarImpl" id="carDAO" /><bean class="com.journaldev.jsfspring.CarBean" id="carBean"><property name="carDao" ref="carDAO"></property></bean>--></beans>
    

    注意上面注释的代码,如果您更喜欢基于XML的配置,那么您可以从java类中删除Spring注释并取消注释。你会得到相同的结果。

Spring JSF示例测试

我们的应用程序已准备就绪,只需将其部署在您最喜欢的servlet容器中并运行它。你应该低于输出响应。

下图显示了Eclipse中的最终项目结构。

您可以从下面的链接下载项目并使用它来了解更多信息。

下载JSF Spring Integration示例项目

Spring JSF集成教程相关推荐

  1. Spring JSF集成

    Spring JSF集成 欢迎来到Spring JSF集成教程.JSF是一个基于组件的框架,非常注重用户界面.而Spring框架核心原则是依赖注入.因此,将JSF与Spring框架集成是有意义的,其中 ...

  2. Spring Data,MongoDB和JSF集成教程

    示例应用程序简介(MongoShop产品目录) 在学习完本教程之后,将构建具有以下功能要求的示例应用程序(MongoShop产品目录): 1.搜索具有不同条件的产品(例如,sku,产品类型,标题,st ...

  3. jsf集成spring_Spring JSF集成

    jsf集成spring Welcome to Spring JSF integration tutorial. JSF is a component based framework with grea ...

  4. Spring教程 - Spring核心框架教程

    Spring教程 - Spring核心框架教程 Spring是最广泛使用的Java EE框架之一.我已经在Spring Tutorial上写了很多内容,这是一篇摘要文章,它将作为索引按顺序完成所有这些 ...

  5. Spring教程– Spring Core Framework教程

    Spring is one of the most widely used Java EE frameworks. I have written a lot on Spring Tutorial an ...

  6. JSF Spring Hibernate集成示例教程

    JSF Spring Hibernate集成示例教程 欢迎使用JSF Spring Hibernate Integration示例教程.在上一篇教程中,我们了解了如何将JSF和Spring框架集成在一 ...

  7. jsf集成spring_JSF Spring Hibernate集成示例教程

    jsf集成spring Welcome to JSF Spring Hibernate Integration example tutorial. In our last tutorial, we s ...

  8. jsf集成spring_JSF 2,PrimeFaces 3,Spring 3和Hibernate 4集成项目

    jsf集成spring 本文展示了如何集成JSF2,PrimeFaces3,Spring3和Hibernate4技术. 它为Java开发人员提供了一个通用的项目模板. 另外,如果Spring不用于业务 ...

  9. Spring和JSF集成:国际化和本地化

    如果您正在开发针对多种语言的JSF应用程序,那么您可能很熟悉<f:loadBundle>标记. 即使您的应用程序不支持使用消息包的国际化仍然是一个好主意. 在<f:loadBundl ...

最新文章

  1. android点击事件注册方式,Android界面控件(3)— 注册同一个点击事件的监听器...
  2. java 多线程Callable和Runable执行顺序问题详解
  3. [LeetCode] 142. Linked List Cycle II
  4. 【VS开发】【编程开发】【C/C++开发】结构体中的数组与指针的内存分配情况说明...
  5. OpenGL实现3D立体显示
  6. C# lock 语法糖实现原理--《.NET Core 底层入门》之自旋锁,互斥锁,混合锁,读写锁...
  7. 魔兽争霸3地图(WarIII Maps):梦若流星
  8. printstream_Java PrintStream clearError()方法与示例
  9. JS实时检测文本框内容长度
  10. php memcache 有效期,PHP可以拿到memcache中的key的过期时间吗?
  11. Cocos2d-x-使用脚本概述
  12. xp win7 linux 三系统下载,打造xp+linux+win7三系统教程.doc
  13. 温度对二极管伏安特性的影响
  14. 北德克萨斯大学计算机系,美国北德克萨斯大学计算机科学与工程系主任Barrett Bryant访问昆明理工大学...
  15. 十沣科技TF-Dyna不亚于国际主流商业软件 应用领域广泛
  16. 【参赛作品66】快速搭建一套openGauss主备高可用集群
  17. 为设计指定输入端口驱动强度:set_driving_cell、set_drive 和set_input_transition
  18. oracle账户别名,Oracle的别名
  19. 凝心聚力,不负好时光——慧慧兔团建拓展之旅
  20. linux文件加密代码,OpenSSL 加密文件的完整实现代码

热门文章

  1. Magento教程 1:免费购物车系统,轻松建立Magento第一步!
  2. Swift中文教程(十七) 可选链
  3. CakePHP你必须知道的21条技巧
  4. DOS命令之ping命令大全详解
  5. 128.最长连续序列
  6. 分割字符串s使得每个子串都是回文串
  7. 取当前进程对应之静态映像文件的绝对路径/proc/self/exe
  8. Linux批量复制文件夹里的文件到另一个文件夹(问题:linux sh: /bin/cp: Argument list too long )
  9. Java—一篇读懂java集合(Collection/Map)及Lambda表达式
  10. 对象交互 空调与摇控器 0107