您所在的位置: 首页>>读书频道>>设计开发>>Java系列>>

8.9.1用户登陆功能的实现

http://book.51cto.com  2008-01-14 12:47  强锋科技 洪武 编著  清华大学出版社  我要评论(0)
  • 摘要:《Eclipse Web开发从入门到精通》(实例版)介绍了目前流行的基于Eclipse的优秀框架。第八章以图书管理系统为例详细介绍了在Eclipse中开发Hibernate实例的具体步骤。本文主要说的是用户登陆功能的实现。
  • 标签:Eclipse  Web  Hibernate  框架  Java  Eclipse Web开发从入门到精通

8.9用户管理

用户管理包括用户登录和用户登录信息维护两大部分,用户管理又包括添加用户、删除用户和修改用户三部分功能。本节实现用户管理功能。用户管理功能是典型的数据库操作,包括记录的添加、删除和修改等操作。通过本节的学习可以熟练掌握通过Hibernate实现对数据库的操作。

8.9.1用户登陆功能的实现

根据实现了图书管理系统的用户登陆类,根据用户名和密码查询用户相应的权限。根据查询的权限结果,设置相应菜单项的显示与否。取得用户名和用户密码之后,通过如下代码段从数据库中查询相应的用户信息,如果查询的结果为

String hql = "from UserTable where UserName='"
+ userNameText.getText().trim() + "' and Password='"
+ passwordStr + "'";
// 执行查询
Query userList = session.createQuery(hql);

空,说明该用户没有注册,将提示用户为非法用户。

跟我做

(1)在“Library”工程的src文件夹中创建“library.user”包,并在其中创建“UserLogin.java”文件,在该文件中输入如下代码:

package library.user;

/**
 * 用户登录类,根据用户名和密码查询用户相应的权限
 * 
 * @author lianhw
 * 
 */
public class UserLogin extends JFrame implements ActionListener {

LibraryWindow libraryWindow;

JPanel panel1, panel2;

JLabel userNameLabel, passwordLabel;

JTextField userNameText;

JPasswordField passwordText;

JButton yesButton, cancelButton;

Container container;

ResultSet rs;

public UserLogin(LibraryWindow mainFrame) {
super("用户登录");
this.libraryWindow = mainFrame;
// “用户名”标签
userNameLabel = new JLabel("用户名", JLabel.CENTER);
// “密码”标签
passwordLabel = new JLabel("密码", JLabel.CENTER);
// 用户名输入框
userNameText = new JTextField(10);
// 密码输入框
passwordText = new JPasswordField(10);
// “确定”按钮
yesButton = new JButton("确定");
// “取消”按钮
cancelButton = new JButton("取消");
// 为“确定”按钮增加事件监听者
yesButton.addActionListener(this);
// 为“取消”按钮增加事件监听者
cancelButton.addActionListener(this);
panel1 = new JPanel();
panel1.setLayout(new GridLayout(2, 2));
panel2 = new JPanel();
container = getContentPane();
container.setLayout(new BorderLayout());
panel1.add(userNameLabel);
panel1.add(userNameText);
panel1.add(passwordLabel);
panel1.add(passwordText);
container.add(panel1, BorderLayout.CENTER);
panel2.add(yesButton);
panel2.add(cancelButton);
container.add(panel2, BorderLayout.SOUTH);
// 设置窗口大小
setSize(300, 300);
}

/**
 * 动作响应方法,完成数据库的查询和权限的设置功能
 * 
 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
 */
public void actionPerformed(ActionEvent action) {

if (action.getSource() == cancelButton) {
// 如果单击“取消”按钮后执行的动作
libraryWindow.setEnable("else");
this.dispose();
} else {
// 如果单击“确定”按钮后执行的动作
char[] password = passwordText.getPassword();
// 将用户输入的密码有字符数组转换成字符串
String passwordStr = new String(password);
// 判断用户输入的用户名是否为空
if (userNameText.getText().trim().equals("")) {
JOptionPane.showMessageDialog(null, "用户名不可为空!");
return;
}
// 判断用户输入的密码是否为空
if (passwordStr.equals("")) {
JOptionPane.showMessageDialog(null, "密码不可为空!");
return;
}
// 取得SessionFactory
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
// 打开session
Session session = sessionFactory.openSession();
// 创建一个事务
Transaction tx = session.beginTransaction();
// hsql执行语句
String hql = "from UserTable where UserName='"
+ userNameText.getText().trim() + "' and Password='"
+ passwordStr + "'";
// 执行查询
Query userList = session.createQuery(hql);
// 将查询结果放置到一个list链表中
List list = userList.list();
// 标记该用户是否存在
boolean isExist = false;
// 如果list的长度为0,表示该用户不存在
if (list.size() > 0)
isExist = true;
if (!isExist) {
// 提示用户名和密码不正确
JOptionPane.showMessageDialog(null, "用户名不存在或者密码不正确!");
libraryWindow.setEnable("else");
} else {
// 取得该用户的权限级别
UserTable user = (UserTable) list.get(0);
// 设置权限
libraryWindow.setEnable(user.getPower().trim());
// 事务提交
tx.commit();
// 关闭session
session.close();
this.dispose();
}
}
}
}

该类实现了用户登录功能,其运行效果图如图8-17所示。根据用户输入的用户名和密码查询数据库中的UserTable表验证该用户是否是注册用户。

该类使用Hibernate从数据库中查询需要的信息,通过验证后根据用户不同的权限设置其相应的权限。

图8-17用户登录窗口

【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节
企业级Web2.0 你准备好了么?
WebSphere 实现SOA的利器
Web安全云时代
企业Web安全威胁在线评估系统
Java实用开发全集
 
 验证码: (点击刷新验证码)   匿名发表
  • 野蛮生长

  • 作者:冯仑著
  • “地产界的思想家”冯仑纵横生意江湖20年来,第一次系统梳理出书。  三十年来中国民营企业从前公司时代发展到公司时代,21..
Copyright©2005-2008 51CTO.COM 版权所有