JSF2 入门实例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/oscar999/article/details/83827917

JSF介绍

JavaServer Faces (JSF) 是一种用于构建Java Web 应用程序的标准框架(是Java Community Process 规定的JSR-127标准)。它提供了一种以组件为中心的用户界面(UI)构建方法,从而简化了Java服务器端应用程序的开发。由于由Java Community Process (JCP) 推动,属于Java EE 5中的技术规范,而受到了厂商的广泛支持。
JSF是一套标准,其中jsf-api是标准中的提供的接口,就是说如果要实现JSF框架,那你至少要实现jsf-api中的接口。
现在有多个已实现的JSF框架,比如:

  1. jsf-impl。是Sun为JSF规范提供的实现。
  2. Mojarra。由Oracle开发, 后来转给了Eclipse。
    3.MyFaces,PrimeFaces。Apache提供的。在实现了JSF接口的基本功能外,还提供了大量的组件库。地址:
    http://myfaces.apache.org/core23/index.html

JSF 产生时曾火过一阵, 但随着互联网的发展, 基于Web Browser的项目占据了绝对的比重,前端开发的逐渐精细和深入化,前后端分离架构也逐渐盛行, 对工程师的要求也全栈化, 不会点Web技术还真不好混。总之, JSF现在不火了,但是各大厂商对于JSF的实现还是在持续维护和升级。
Apache的Myfaces 最近更新时间是:11 Sep 2018

实例

  1. 基于maven依赖包导入:
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>cn.osxm</groupId>
		<artifactId>jcodef</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>
	<groupId>cn.osxm.jcodef</groupId>
	<artifactId>jcodef-jsf</artifactId>
	<packaging>war</packaging>
	<name>jcodef-jsf Maven Webapp</name>
	<url>http://maven.apache.org</url>
	<dependencies>
		<!-- CDI:Contexts and Dependency Injection -->
		<dependency>
			<groupId>javax.enterprise</groupId>
			<artifactId>cdi-api</artifactId>
			<version>2.0</version>
			<scope>provided</scope>
		</dependency>
		<!-- JSF -->
		<dependency>
			<groupId>com.sun.faces</groupId>
			<artifactId>jsf-api</artifactId>
			<version>2.2.18</version>
		</dependency>
		<dependency>
			<groupId>com.sun.faces</groupId>
			<artifactId>jsf-impl</artifactId>
			<version>2.2.18</version>
		</dependency>
		<!-- JSF <dependency> <groupId>javax.faces</groupId> <artifactId>jsf-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> -->
	</dependencies>
	<build>
		<finalName>jcodef-jsf</finalName>
	</build>
</project>
  1. web.xml 配置
<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
	<display-name>osxm JSF Web</display-name>

	<servlet>
		<servlet-name>Faces Servlet</servlet-name>
		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>*.xhtml</url-pattern>
	</servlet-mapping>

	<welcome-file-list>
		<welcome-file>index.xhtml</welcome-file>
	</welcome-file-list>
</web-app>
  1. 创建Bean, 使用注解方式交给容器托管
/**
 * @Title: HelloWorld.java
 * @Package cn.osxm.jcodef.jsf
 * @Description: TODO
 * @author oscarchen
 * @date Nov 7, 2018 11:36:49 AM
 * @version V1.0
 */

package cn.osxm.jcodef.jsf;

import javax.faces.bean.ManagedBean;

/**
  * @ClassName: HelloWorld
  * @Description: TODO
  * @author oscarchen
  */
@ManagedBean
public class HelloWorld implements java.io.Serializable{   
    private static final long serialVersionUID = 2670923978809388476L;   
    private String name; public String getName(){   
        if(this.name == null){   
           return "Hello World";   
        }   
        return name;   
    }   
    public void setName(String name){   
        this.name = name;   
    }   
} 
  1. 页面中使用Bean
<?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:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html">

<h:head>
	<title>JSF 2.2 Hello World</title>
</h:head>
<h:body>
	<h3>JSF 2.2 Hello World Example</h3>
	<h:form>
		<h:inputText value="#{helloWorld.name}"></h:inputText>
		<h:commandButton value="Welcome Me" action="welcome"></h:commandButton>
	</h:form>
</h:body>
</html>

默认以Class首字母小写来标识bean, 这一点和Spring很类似。

猜你喜欢

转载自blog.csdn.net/oscar999/article/details/83827917
今日推荐