概念
什么是JSF
JSF是JavaServer Faces的缩写.JSF是事件驱动为核心,组件和标签的封装程度非常高的Web Framewrok.
什么是backing bean
backing bean定义了与页面中使用的UI组件相关联的属性和处理逻辑。backing-bean属性邦定于一个组件实例或某实例的value.
JSF的主要特性
1.Managed Bean/Backing Bean(POJO Java Beans,不用实现特定接口、也无须继承特定类)
2.IOC机制,实现POJO对象间的依赖注射(借鉴了spring的思想)
3.Event模型(分为两大类: 启动后端处理的; 前段UI事件处理的)
4.组件/tags的使用
5.开发Custom UI Components
Hello World与简单应用
JSF的配置
l Web.xml 配置JSF 应用的引擎
<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>/WEB-INF/faces-config.xml</param-value>
</context-param>
<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>*.faces</url-pattern>
</servlet-mapping>
JSF的配置
l 增加JSF配置文件
按web.xml中定义的javax.faces.CONFIG_FILES参数增加JSF配置文件.例如:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<faces-config/>
JSF的配置l COPY LIB到WEB-INF/lib中
l jsf-api.jar 包含有 Faces servlet 与其它相关 javax.faces 包下面的类
l jsf-impl.jar是 JSF 的参考实现
HelloBean
public class HelloBean {
public String say(String name) {
return "你好," + name;
}
}
HelloDelegater public class HelloDelegater {
private HelloBean helloBean;
.
.
.
public String say() {
this.setResult(helloBean.say(this.getName()));
return "ok";
}
}
JSF配置文件 <managed-bean>
<managed-bean-name>HelloBean</managed-bean-name>
<managed-bean-class>org.mike.jsf.model.HelloBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>HelloDelegater</managed-bean-name>
<managed-bean-class>org.mike.jsf.model.HelloDelegater
</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>helloBean</property-name>
<value>#{HelloBean}</value>
</managed-property>
</managed-bean>
n JSP文件 <h:form>
<h:panelGrid columns="3">
<h:outputLabel for="name" value="姓名:"/>
<h:inputText id="name"
value="#{HelloDelegater.name}" required="true"/>
<h:message for="name"/>
<h:outputLabel value="#{HelloDelegater.result}"/>
</h:panelGrid>
<h:panelGroup>
<h:commandButton action="#{HelloDelegater.say}"
value="提交" rendered="true"/>
</h:panelGroup>
</h:form>
未来的发展
JSF将是J2EE5.0中所包含的web开发框架,这应该是第一个成为jcp标准,并且随j2eesdk一起发布的web框架,可以看出sun对它的期望很高。
JavaServer Pages(JSF) 在 Java 的 WEB 编程中已经被认为是下一个重大的事件。通过 JSF ,你可以在网页上使用 WEB 组件,来捕获用户行为产生的事件。不远的将来,Java 工具将支持这个技术,开发 WEB 应用程序将与我们现在开发 SWING 程序类似:拖放控件、写事件侦听器。