本人计划用一个月到一个月半的业余时间完成JSF的学习,并把学习的过程放在网络上,并以留下走过的历程。希望有看到该贴的文章,该给鲜花、鸡蛋的不要吝啬。废话少说开始吧。
要使用JSF,首先您要取得javaServerFfaces参考实现(JavaServerFaces Reference Implementaiton ),在将来,jsf 会与Contianer 整合在一起,届时您只要下载支持的Container,就可以使用JSF的功能。
JSF 所要用到的公共类:获取途径 可以从JSF官方网站的下载区 下载参考实现,将其lib目录的JAR文件复制到你的WEB应用程序的/WEB-INF/lib目录下,另外还需要jstl。jar,standard.jar。那在我们的lib里共需要如下几个JAR 1.commons-beanutils.jar;2commons-collections.jar;3commons-digester.jar;4commons-logging.jar;5jsf-api.jar;6jsf-impl.jar;7jstl.jar;8standard.jar。补充一下 ,这里如果诸位有用MYeclipse的话,你只要在你新建的项目里增加JSF框架,那么就会有如上的jar。这样大家就不用去载了。而且代码的结构也为你生成了。至于代码的文件结构我就不提了。
还有我是用MYeclipse开发的,所以在讲的过程中会顺带把这个工具的使用也写在里面。这里我们先做个简单的程序,至于实现的流程我们先了解一下:
VIEW : index.jsp 用于输入名称 ;welcome。jsp用户用于获取index。jsp所输入的名称
页面流程控制 faces-config。xml来完成。代码如下
pages/index.jsp
############ code begin###########
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@page contentType="text/html;charset=GB2312" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<f:view>
<h:form>
<H3>请输入您的名称
</H3>
名称:<h:inputText value="#{user.name}"></h:inputText>
<h:commandButton value="送出" action="login"></h:commandButton>
</h:form>
</f:view>
</body>
############code end########################
pages/welcome.jsp
###########code begin ########################
<%@ page language="java" pageEncoding="GB2312"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<f:view>
This is my JSF JSP page. <br>
<h:outputText value="#{user.name}"></h:outputText>
</f:view>
</body>
</html>
#################end #############################
web.xml
增加了一个
<listener><listener-class>com.sun.faces.config.ConfigureListener </listener-class> 刚开始调试的时候我也调试不通过,后来到网络上去找了一下,一位仁兄跟也碰到了类似的情况后面就是增加以上语句解决的,置于是什么问题我目前也不知道。等后续的笔记中如果那一天领悟了,我再把原因发表上来。因为第一个例子比较简单,我就不罗嗦了。还有大家在学习的时候不管文档怎么样都要把把代码码一遍,这样对学习会很有好处。
################code begin
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>/WEB-INF/faces-config.xml</param-value>
</context-param>
<listener><listener-class>com.sun.faces.config.ConfigureListener </listener-class>
</listener>
<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>
<welcome-file-list>
<welcome-file>index.html
</welcome-file>
</welcome-file-list>
</web-app>
#############end###############
#############begin###############
UserBean .java
package onlyfun.caterpillar;
public class UserBean {
private String name ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
#############end###############
#############begin###############
<?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>
<navigation-rule>
<from-view-id>/pages/index.jsp</from-view-id>
<navigation-case>
<from-outcome>login</from-outcome>
<to-view-id>/pages/welcome.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<managed-bean>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>onlyfun.caterpillar.UserBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
</faces-config>
#############end###############
#############begin###############
#############end##############