Posted on 2005-11-06 11:01
oksonic 閱讀(5948)
評論(13) 編輯 收藏 所屬分類:
java
Eclipse3.1、MyEclipse4.0.3、Tomcat
打開Eclipse
新建 web 工程,名稱為login,j2ee版本為2.4當然2.3也是可以的
添加jsf框架,使用1.1.01版本 、URL pattern: *.faces其它設置使用默認值
打開WEB-INF目錄下的 faces-config.xml 文件
使用工具欄中的工具創建三個頁面login.jsp、ok.jsp、error.jsp
使用工具欄中的工具navigation創建頁面的關系
以下是配置以后生成的配置文件內容:
<faces-config >
<navigation-rule>
<from-view-id>/login.jsp</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/ok.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>failure</from-outcome>
<to-view-id>/error.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/ok.jsp</from-view-id>
</navigation-rule>
<navigation-rule>
<from-view-id>/error.jsp</from-view-id>
</navigation-rule>
</faces-config>
創建兩個Bean,一個用來處理用戶信息的驗證,一個是和頁面中的數據進行綁定
UserValidator.java
package com;
public class UserValidator {
//這是驗證用戶名和密碼的過程
public String validator(String username,String password){
if((username==null)||(username.length()<1))
return "failure";
if((password==null)||(password.length()<1))
return "failure";
if((username.equals("test"))&&(password.equals("test")))
return "success";
else
return "failure";
}
}
LoginBean.java
package com;
public class LoginBean {
private String username;
private String password;
private UserValidator uv;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public UserValidator getUv() {
return uv;
}
public void setUv(UserValidator uv) {
this.uv = uv;
}
//用戶登錄過程
public String login(){
return uv.validator(username,password);
}
}
現在按下Ctrl + N 鍵,使用jsp的向導來配置這兩個Bean
選擇MyEclipse/WEB-JSF/Managed Bean
Project: login
選中:Open Config File in Editor
Name: UserValidator 就是Bean中的一個,這里的name可以自己起一個,如將第一個字母改為小寫userValidator
Class: com.UserValidator
Scope: request
點擊完成生成配置內容如下:
<managed-bean>
<managed-bean-name>userValidator</managed-bean-name>
<managed-bean-class>com.UserValidator</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
再次配置另一個Bean,不過這一回增加了一個屬性
按下Ctrl + N 鍵,選擇MyEclipse/WEB-JSF/Managed Bean
Project: login
選中:Open Config File in Editor
Name: loginBean
Class: com.LoginBean
Scope: request
點擊add按鈕
Name: uv 這里的內容為LoginBean中的uv屬性,這個可是不能亂填的
Class: 這個不填
點下一步
Property Value: #{userValidator} 這里花括號中的內容為剛才配置的UserValidator的name屬性,name屬性的第一個字母使用的是小寫
好,確定,完成
配置文件中新增了如下代碼:
<managed-bean>
<managed-bean-name>loginBean</managed-bean-name>
<managed-bean-class>com.LoginBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>uv</property-name>
<value>#{userValidator}</value>
</managed-property>
</managed-bean>
在這一個bean中,它的uv屬性被指定要在運行時注入一個com.UserValidator的實例。
現在編寫login.jsp中的代碼如下:
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ page language="java" pageEncoding="UTF-8"%>
<html>
<head>
<title>Login</title>
</head>
<body>
<f:view>
<h:form>
<h:panelGrid columns="3">
<h:outputLabel for="username" value="User Name:" />
<h:inputText id="username" value="#{loginBean.username}" required="true" />
<h:message for="username" />
<h:outputLabel for="password" value="Password:" />
<h:inputSecret id="password" value="#{loginBean.password}" required="true" />
<h:message for="password" /> 這里的password要和上一行的id="password"對應才可以返回錯誤消息
</h:panelGrid>
<h:panelGrid>
<h:panelGroup>
<h:commandButton value="Login" action="#{loginBean.login}" />
</h:panelGroup>
</h:panelGrid>
</h:form>
</f:view>
</body>
</html>
修改 index.jsp,代碼如下:
<html>
<head>
<title>Index</title>
</head>
<body>
<a href="login.faces">Login</a>
</body>
</html>
修改 ok.jsp,代碼如下:
<html>
<head>
<title>Login OK!!!</title>
</head>
<body>
Login Ok!!!<br>
</body>
</html>
修改 error.jsp,代碼如下:
<html>
<head>
<title>Error!!!</title>
</head>
<body>
Error!!!<br>
</body>
</html>
好了,代碼完成可以進行測試了,輸入正確的用戶名和密碼,提交后進入ok.jsp