Posted on 2005-11-06 11:01
oksonic 阅读(5943)
评论(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