速动画教程系列第11集
这一集将介绍jsf的基本使用
使用jsf + hibernate制作一个login实例
开发工具:Eclipse3.1、MyEclipse4.0.3、Tomcat、MySql
打开Eclipse
新建 web 工程,名称为login,j2ee版本为2.4
创建jsf框架
在工程目录上点右键-->MyEclipse-->Add JSF Capabilities
在弹出配置对话框时,使用默认的设置就可以了。
这时打开web.xml文件就可以看到以下的配置信息了
javax.faces.CONFIG_FILES
/WEB-INF/faces-config.xml
Faces Servlet
javax.faces.webapp.FacesServlet
0
Faces Servlet
*.faces
现在创建两个Bean,一个用来处理用户信息的验证,一个是和页面中的数据进行绑定
UserValidator.java
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
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.jsf.UserValidator
Scope:request
点击完成生成配置内容如下:
userValidator
com.jsf.UserValidator
request
再次配置另一个Bean,不过这一回增加了一个属性
按下Ctrl + N 键,选择MyEclipse-->WEB-JSF-->Managed Bean
Project:login
选中:Open Config File in Editor
Name:loginBean
Class:com.jsf.LoginBean
Scope:request
点击add按钮
Name:uv这里的内容为LoginBean中的uv属性,这个可是不能乱填的
Class: 这个不填
点下一步
Property Value: #{userValidator} 这里花括号中的内容为刚才配置的UserValidator的name属性,name属性的第一个字母使用的是小写
好,确定,完成
配置文件中新增了如下代码:
loginBean
com.jsf.LoginBean
request
uv
#{userValidator}
在这一个bean中,它的uv属性被指定要在运行时注入一个com.UserValidator的实例。
现在创建jsp文件
打开WEB-INF目录下的faces-config.xml文件(如果你已经关闭了)
使用工具栏中的工具创建四个页面index.jsp、login.jsp、ok.jsp、error.jsp
使用工具栏中的工具navigation创建页面的关系
在弹出对话框中的From Outcome中分别填入success、failure
新增的配置信息如下:
/login.jsp
success
/ok.jsp
failure
/error.jsp
/ok.jsp
/error.jsp
现在编写login.jsp中的代码如下:
Login
这里的password要和上一行的id="password"对应才可以返回错误消息
修改index.jsp,代码如下:
IndexLogin
修改ok.jsp,代码如下:
Login OK!!!Login Ok!!!
修改error.jsp,代码如下:
Error!!!Error!!!
好了,代码完成可以进行测试了
首先部署web程序到服务器,如果在这一段遇到错误的话请查看我以前发布的关于Eclipse+MyEclipse配置的录像
输入正确的用户名和密码 (test , test),提交后进入ok.jsp,输入错误的密码后进入error.jsp
JSF部份已经完成,现在添加Hibernate框架
在工程目录上点右键-->MyEclipse-->Add Hibernate Capabilities
在弹出的对话框中使用默认设置
下一步,使用默认设置
下一步,如图
点击完成
在 hibernate 的配置图型介面中,点击New...创建一个数据库连接(具体方法请看录像)
配置完成后,内容如下:
/p>
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
conn_mysql
jdbc:mysql://localhost:3306/test
root
root
com.mysql.jdbc.Driver
org.hibernate.dialect.MySQLDialect
在配置文件加入一行,增加一个属性,可以在状态栏中显示hibernate的查询语句
true
修改后的配置文件内容如下:
conn_mysql
jdbc:mysql://localhost:3306/test
root
root
com.mysql.jdbc.Driver
true
org.hibernate.dialect.MySQLDialect
点击Copy JDBC Driver and add to classpath将jdbc文件拷贝到lib目录中
现在启动MySql,并创建一张新表,这里我已经创建完成了,并在其中添加了一个用户名为test密码也是test的用户
CREATE TABLE `user` (
`ID` int(11) NOT NULL auto_increment,
`USERNAME` varchar(50) NOT NULL default '',
`PASSWORD` varchar(50) NOT NULL default '',
PRIMARY KEY(`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
打开 MyEclipse 的数据浏览工具
选中user表,点右键-->Create Hibernate Mapping
回到MyEclipse状态中
打开UserValidator.java文件
修改为以下内容:
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.Hibernate.SessionFactory;
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";
// 创建连接
Session session = SessionFactory.currentSession();
// 创建事务
Transaction tx = session.beginTransaction();
// 创建对话
Query query = session
.createQuery("from User as u where u.username=? and u.password=?");
query.setString(0, username);
query.setString(1, password);
List list = query.list();
// 事务提交
tx.commit();
if (list.size()>0)
return "success";
else
return "failure";
}
}
现在完成了全部的代码,可以进行测试了,修改后代码将会读取数据库的信息进行验证