回想2007年1月的时候做的一个JSF的项目,那时候在网上找一个简单的例子,结果搜来搜去,都是一篇文章在各个网站转来转去,而且那个例子写的也不怎么样,不是很清楚讲的,而感觉那个例子的层次,架构有点不够清晰。
整个程序很简单就是一个登陆的例子,UserBean是一个普通的JavaBean是用来存放用户信息,生存周期是整个会话期。LoginDao是用来封装一些方法的如查询数据库,判断用户是否存在等。LoginService是用来执行一些操作的,不用关心低层的动作,如登陆不用去关心怎么判断用户存在否。把UserBean注入到DAO层这样就可以把页面上User的信息传入到DAO层来。(具体代码可以在后面的main.jsp和LoginDao看到)
结构图:
faces-config.xml:
<?xml version="1.0"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN" "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
<faces-config>
<navigation-rule>
<from-view-id>/page/main.jsp</from-view-id>
<navigation-case>
<from-outcome>welcome</from-outcome>
<to-view-id>/page/welcome.jsp</to-view-id>
<!--<redirect/>-->
</navigation-case>
<navigation-case>
<from-outcome>false</from-outcome>
<to-view-id>/page/false.jsp</to-view-id>
<!--<redirect/>-->
</navigation-case>
</navigation-rule>
<managed-bean>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>com.jsf.bean.UserBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>loginDao</managed-bean-name>
<managed-bean-class>com.jsf.dao.LoginDao</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>user</property-name>
<value>#{user}</value>
</managed-property>
</managed-bean>
<managed-bean>
<managed-bean-name>login</managed-bean-name>
<managed-bean-class>com.jsf.service.LoginService</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>loginDao</property-name>
<value>#{loginDao}</value>
</managed-property>
</managed-bean>
</faces-config>
<redirect/> 是决定是否用重定向(即URL会发生改变)
session此对象的生存期
user用注入的方式把user对象注入到DAO中
loginDao把DAO注入到service层
welcome登陆成功后跳转的页面(名称和登陆方法返回的字符串一致)
false登陆失败后跳转的页面(名称和登陆方法返回的字符串一致)