从今天开始研究JSF(Java Server Faces),JSF作为最新的MVC框架,得到了sun等业界技术领袖的支持,我相信JSF必然会超越Struts,Tapestry成为主流开发技术。以后的系列日志会记录我学习JSF的历程。
Getting Start
1. 安装,下载如下软件包:
Java JDK
1.4.1
Tomcat 5.0+(我曾经用过Tomcat5.5,它的配置有些不同,另外,多数IDE对5.0的支持更好)
Java Server Faces 实现,SUN提供了参考实现,我选择了Apache的MyFaces
2. 开发工具
好的IDE可以使我的工作事半功倍,我选择了Eclipse+NitroX 3 Studio,在Matrix.org.cn可以找到破解。NitroX是我认为最好的Eclipse插件。另外,MyEclipse4也很好。如果你不想用D版,我推荐Exadel,它的Free版本提供了大量的功能,但是Exadel的下载地址有问题,你可以给support@exadel.com发邮件要一个可用地址。另外,建议安装PropertiesEditor,它对properties文件提供类似native2ascii的编码操作。
3. NitroX中建立一个Web Application,新建一个JSF页,login.jsp
<!DOCTYPE HTML PUBLIC "-//W 3C//DTD HTML 4.01 Transitional//EN"> <%@ page language="java" contentType="text/html; charset=gb2312" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <!—绑定资源文件,需要在src目录下建立resources/application.properties,如果使用NitroX,新建的web工程中就自带--> <f:loadBundle basename="resources.application" var="msgs"/> <f:view> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <!—引用资源文件的内容,这里作用相当于<%=%>,h:outputText是JSF静态文本tag(以上都是我现在的理解)--> <title><h:outputText value="#{msgs['login.title']}"/></title> </head> <body><p></p><p></p> <h:form> <table align="center" border="1"> <tr> <td><h:outputText value="#{msgs['login.username']}"/></td> <!—绑定User类的username属性,User类是JSF的managed bean(在faces-config.xml注册的),下面会介绍。下面的语句相当于<input type=”text” value=”<%=user.getUsername()%>”>--> <td><h:inputText value="#{user.username}"/></td> </tr><tr> <td><h:outputText value="#{msgs['login.password']}"/></td> <td><h:inputSecret value="#{user.password}"/></td> |
再建立一个:welcome.jsp
<!DOCTYPE HTML PUBLIC "-//W 3C//DTD HTML 4.01 Transitional//EN"> <%@ page language="java" contentType="text/html; charset=gb2312" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <f:loadBundle basename="resources.application" var="msgs"/> <f:view><html><head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>欢迎</title> |
4. 在src(如果用NitroX,则为WEB-INF/src/java)目录下建立resources目录,并建立一个application.properties文件。这个文件必须是GBK或GB2312编码,可以在文件属性中设置。
如果要编辑中文,要在Properties Editor
#login |
5. 声明User类
package net.chinasam.learning.jsf; |
6. Managed Bean
把User作为JSF的Managed Bean,你可以使用IDE提供的可视化编辑工具,也可以在faces-config.xml中直接编辑:
<managed-bean> |
7. 导航规则
我们要求在login.jsf页面输入用户名和密码,然后进入welcome页面,该页面输出login.jsp输入的用户名。
<!—下面的导航规则告诉系统,从login.jsp产生一个login事件,改事件的结果就是页面导航到welcome.jsp--> |
8. 其他工作
你必须加入myfaces.jar等package,修改web.xml文件,将jsf的功能加入进来。幸好IDE环境已经帮助我们作了这些工作,不过还是了解一下的好。
9. 启动Tomcat,本来没有什么好说,但是还是要注意,NitroX下需要在run…和References中配置一下。并且,你访问的是*.jsf而不是以前的*.jsp了,因为web.xml的代码决定了只有.jsf才可以使用JSF:
<servlet-mapping> <!-- Faces Servlet Mapping --> <servlet-name>faces</servlet-name> <url-pattern>*.jsf</url-pattern> |