JSF技术初识

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

介绍

JSF(Java Server Faces), JSF是一个框架标准,但不是具体实现(有JSF的标准实现)。其实JSF差不多就是Spring MVC的前身。JSF是一个基于组件的MVC架构的WEB框架。


案例

可以看到Spring MVC的身影

1. 依赖

和slf4j的接口门面实现分开一样。JSF本身是一个标准。对应的是 jsf-api.jar
jsf-impl.jar是Sun提供的JSF框架标准的实现。

2. 模型组件(M)

前面说过了,JSF是一个基于MVC的架构标准,其M模型组件其实就是一个JavaBean。所有的业务逻辑全部封装在JavaBean中。当然和普通的JavaBean的一点点区别就是多了 @ManagedBean 注解。

package xxx;

import javax.faces.bean.ManagedBean;

@ManagedBean
public class Message {
	private String word = "JSF";
	
	/** getter and setter **/
}

@ManagedBean表示将自己注册到JSF框架,让JSF框架管理自己的生命周期。
类似Spring MVC将@Bean(value = “”)注入到容器,这里也可以命名,默认也是类名首小写。

3. 视图组件(V)

JSF的视图都是使用XHTML文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title>JSF</title>
	</head>
	<body>
		<div>#{message.word}</div>
	</body>
</html>

上面代码中,通过使用 “#” 表达式语言直接引用之前创建的ManagedBean(message)属性,但是并没有像JSP一样要先通过<jsp:useBean>来声明引入JavaBean实例。
因为当视图被执行时,JSF将检查当前是否有可用的对应Bean实例(这里是message)。如果没有,JSF框架将自动创建ManagedBean的实例并在视图中引用它
和Spring MVC一样,Bean都托管给框架(容器)了,其创建销毁等生命周期都不用自己操劳了。

4. 控制组件(C)

  1. JSF应用的控制功能由JSF框架自身来实现。
  2. 为了确保JSF应用运行,在Web应用的配置文件web.xml中对JSF框架的核心控制组件javax.faces.webapp.FacesServlet进行配置。
  3. 所有JSF请求都传入Faces Servlet中,该Servlet是JSF实现代码的一部分。
<?xml version="1.0" encoding="UTF-8"?>
<web-app ....>
	<servlet>
		<servlet-name>FacesServelt</servlet-name>
		<servlet-class>javax.faces.webapp.FacesServelt</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>FacesServelt</servlet-name>
		<url-pattern>/faces/*</url-pattern>
	</servlet-mappring>
</web-app>

FacesServlet 负责处理所有 /faces/* 的JSF请求。
Spring MVC则是DispatchServlet,当然也可以选择性拦截,不拦截静态资源等。
如果有更多的配置,也可以像spring-mvc.xml一样增加一个配置文件face-config.xml

5.部署运行

部署到Servlet容器即可运行,就输出 “JSF”

猜你喜欢

转载自blog.csdn.net/chenbetter1996/article/details/85923252
jsf