|
首先,写一个IUserService的接口,接口中只有属性方法: getUsername,getPassword,setUsername,setPassword四个方法.代码如下:
package net.moon.service; public interface IUserService ...{ String getUsername(); String getPassword(); void setUsername(String username); void setPassword(String password); }
用一个类实现该接口,代码如下:
package net.moon.model; import net.moon.service.IUserService; public class UserInfo implements IUserService...{ private String username; private String password; /** *//** * @return the usernmae */ public String getUsername() ...{ return username; }
/** *//** * @param usernmae the usernmae to set */ public void setUsername(String usernmae) ...{ this.username = usernmae; }
/** *//** * @return the password */ public String getPassword() ...{ return password; }
/** *//** * @param password the password to set */
public void setPassword(String password) ...{ this.password = password; } }
写一个事务类,实现login功能,其中有一个类型为IUserService的域,代码如下:
package net.moon.business;
import net.moon.service.IUserService;
public class UserBO ...{
IUserService user; public String login()...{ String result = "FAILED"; //System.out.println(result); if(user.getUsername().equalsIgnoreCase("admin") && user.getPassword().equals("password"))...{ result = "PASS"; } return result; }
/** *//** * @return the user */
public IUserService getUser() ...{ return user; }
/** *//** * @param user the user to set */ public void setUser(IUserService user) ...{ this.user = user; } }
注意该类中的属性方法setUser,其中的参数user作为IUserService的接口类型.然后就是用什么方法对user进行注入,这时候就要想到JSF中的Managed Properties.
首先在,faces-config中配置UserInfo类为MBean,代码如下:
<managed-bean> <managed-bean-name>userInfo</managed-bean-name> <managed-bean-class>net.moon.model.UserInfo</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean>
然后将事务类UserBO也配置为MBean,代码如下:
<managed-bean> <managed-bean-name>userBO</managed-bean-name> <managed-bean-class> net.moon.business.UserBO </managed-bean-class>
<managed-bean-scope>request</managed-bean-scope> <managed-property> <property-name>user</property-name> <property-class> net.moon.service.IUserService </property-class> <value>#{userInfo}</value> </managed-property> </managed-bean>
为userBO这个MBean配置了一个Managed Property,也就是要求JSF在实现userBO时,用userInfo这个MBean为其user这个域赋值,从而实现注入.
接下来就是页面的实现了,首先是login页面,代码如下:
<%...@ page contentType="text/html; charset=UTF-8" %> <%...@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%...@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title></title> </head> <body> <f:view> <h:form> <h:panelGrid border="1" columns="2"> <h:outputText value="User Name:"></h:outputText> <h:inputText value="#{userInfo.username}"></h:inputText>
<h:outputText value="Password:"></h:outputText> <h:inputText value="#{userInfo.password}"></h:inputText> </h:panelGrid> <h:commandButton value="Login" action="#{userBO.login}"></h:commandButton> </h:form> </f:view> </body> </html>
表示登录成功的页面welcome.jsp,代码如下:
<%...@ page contentType="text/html; charset=UTF-8" %> <%...@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%...@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title></title> </head> <body> <f:view> <h:form> <h:outputText value="Welcome,#{userInfo.username}"></h:outputText> </h:form> </f:view> </body> </html>
配置导航如下:
<navigation-rule> <display-name>login</display-name> <from-view-id>/login.jsp</from-view-id> <navigation-case> <from-action>#{userBO.login}</from-action> <from-outcome>PASS</from-outcome> <to-view-id>/welcome.jsp</to-view-id> </navigation-case> <navigation-case> <from-action>#{userBO.login}</from-action> <from-outcome>FAILED</from-outcome> <to-view-id>/login.jsp</to-view-id> </navigation-case> </navigation-rule> (编辑:安卓应用网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|