Spring 框架入门教程
1. 1. Spring 框架 2. 2. Spring 5 3. 3. Spring WebFlux 4. 4. 先介绍一下 Spring 5. 5. 什么是 Spring 依赖注入 6. 6. 什么是 Spring IoC 容器 和 Bean 7. 7. Spring Bean 的生命周期 8. 8. Spring REST 开发 9. 9. Spring REST XML 10. 10. Spring RestTemplate 开发 11. 11. Spring AOP 切面编程 12. 12. Spring AOP 方法调优 13. 13. Spring 注解详解 14. 14. Spring 核心注解之 @Autowired 15. 15. Spring 核心注解之 @RequestMapping 16. 16. Spring MVC 开发样例 17. 17. Spring MVC 开发指南 18. 18. Spring MVC 异常处理机制 19. 19. Spring MVC Validator 20. 20. Spring MVC 拦截器 21. 21. Spring MVC 文件上传 22. 22. Spring MVC 国际化(i18n) 23. 23. Spring MVC Hibernate MqSQL 24. 24. Spring ORM 25. 25. Spring ORM JPA 26. 26. Spring Data JPA 27. 27. Spring 事务管理 28. 28. 常用的 Spring JdbcTemplate 29. 29. Spring Security 简介 30. 30. Spring Security 教程 31. 31. Spring Security UserDetailsService 32. 32. Spring MVC 登录注销简单案例 33. 33. Spring Security Roles 34. 34. Spring Boot Tutorial 35. 35. Spring Boot Components 36. 36. Spring Boot CLI Hello World 37. 37. Spring Boot Initilizr Web 38. 38. Spring Boot Initilizr IDE 39. 39. Spring Boot Initilizr CLI 40. 40. Spring Boot Initilizr Tools 41. 41. Spring Boot MongoDB 42. 42. Spring Boot Redis Cache 43. 43. Spring Boot 常见面试问题 44. 44. Spring Batch 45. 45. Spring Batch 批处理示例 46. 46. Spring AMQP 47. 47. Spring RabbitMQ 48. 48. Spring AMQP RabbitMQ 49. 49. Apache ActiveMQ 安装与启动 50. 50. Spring ActiveMQ 教程 51. 51. Spring ActiveMQ 示例 52. 52. Spring JDBC 53. 53. Spring DataSource JNDI 54. 54. Spring Hibernate 55. 55. Spring Primefaces JPA 56. 56. Spring Primefaces MongoDB 57. 57. Spring Primefaces Hibernate 58. 58. SpringRoo Primefaces Hibernate 59. 59. Spring JSF 60. 60. Spring JDF Hibernate 61. 61. Spring Data MongoDB 62. 62. Spring 常见面试问题

59. Spring JSF

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

Spring JSF

Springs可以通过与JSF集成DelegatingVariableResolver. Let’s now see how to integrate Spring JSF frameworks with an example.

  1. 在中添加以下spring依赖项pom.xml文件以及标准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. 添加授权可变分解器在里面faces-config.xml file as shown below. Here el-resolver is the delegating variable resolver.
    
    <application>
        <el-resolver>
            org.springframework.web.jsf.el.SpringBeanFacesELResolver
        </el-resolver>
    </application>
    

    el resolver提到SpringBeanFacesELResolver connects the JSF前端的值Spring后端服务层。

  3. 在中输入以下条目web.xml to add listeners provided by spring framework as;
    
    <listener>
    	<listener-class>
    		org.springframework.web.context.ContextLoaderListener
    	</listener-class>
    </listener>
    <listener>
    	<listener-class>
    		org.springframework.web.context.request.RequestContextListener
    	</listener-class>
    </listener>
    

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

让我们看看JSF项目中的java配置。

  1. 创建托管bean类CarBean.java as
    
    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 {
    
    	@Autowired
    	CarDao carDao;
    
    	public void setCarDao(CarDao carDao) {
    		this.carDao = carDao;
    	}
    
    	public List<String> fetchCarDetails() {
    
    		return carDao.getCarDetails();
    	}
    
    }
    
  2. 创建接口CarDao.java as
    
    package com.journaldev.jsfspring;
    
    import java.util.List;
    
    public interface CarDao {
    
    	public List<String> getCarDetails();
    
    }
    
  3. 创建实现类CarImpl.java as
    
    package com.journaldev.jsfspring;
    
    import java.util.ArrayList;
    import java.util.List;
    import org.springframework.stereotype.Service;
    
    @Service
    public class CarImpl implements CarDao {
    
    	@Override
    	public 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 as
    
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="https://www.w3.org/1999/xhtml"
    	xmlns:h="https://java.sun.com/jsf/html"
    	xmlns:ui="https://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 to scan for service classes.
    
    <beans xmlns="https://www.springframework.org/schema/beans"
    	xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" 
    	xmlns:context="https://www.springframework.org/schema/context"
    	xsi:schemaLocation="https://www.springframework.org/schema/beans
    	https://www.springframework.org/schema/beans/spring-beans-3.1.xsd
    	https://www.springframework.org/schema/context
    	https://www.springframework.org/schema/context/spring-context-3.1.xsd">
    
    	<context:component-scan base-package="com.journaldev.jsfspring" />
    
    	<!-- If you prefer XML based Dependency Injection
    		remove annotation from class and uncomment below configuration -->	
    	<!-- 
    	<bean id="carDAO" />
    	
    	<bean id="carBean">
    		<property name="carDao" ref="carDAO"></property>
    	</bean>
    	 -->
    	 
    </beans>
    

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

Spring Jsf示例测试

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

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

精选推荐