if(action==null||\ return mapping.findForward(\ }else if(\
return listUser(mapping,form,request,response); }else if(\
return addUsers(mapping,form,request,response); }else if(\
return logon(mapping,form,request,response); }else if(\
return updateUser(mapping,form,request,response); }else if(\
return deleteUser(mapping,form,request,response); }else if(\
return selectUser(mapping,form,request,response); }
return mapping.findForward(\ }
private ActionForward selectUser(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws HibernateException {
Long id=new Long(request.getParameter(\ Users u=dao.loadUsers(id.longValue()); request.setAttribute(\ return mapping.findForward(\ }
private ActionForward deleteUser(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws HibernateException {
Long id=new Long(request.getParameter(\ Users users=new Users(); users.setId(id);
23
dao.deleteUsers(users);
return mapping.findForward(\ }
private ActionForward updateUser(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws HibernateException {
UsersForm usersform=(UsersForm)form; Users users=usersform.populate(); dao.updateUsers(users);
return mapping.findForward(\ }
private ActionForward logon(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws HibernateException {
UsersForm usersform=(UsersForm)form; Users users=new Users();
users.setUsername(usersform.getUsername()); users.setPassword(usersform.getPassword()); boolean flag=dao.logonUsers(users); if(flag){
request.getSession().setAttribute(\ return mapping.findForward(\ }else{
return mapping.findForward(\ } }
private ActionForward addUsers(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws HibernateException {
UsersForm usersform=(UsersForm)form; Users users=usersform.populate();
24
dao.addUsers(users);
return mapping.findForward(\ }
private ActionForward listUser(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws HibernateException {
request.setAttribute(\ return mapping.findForward(\ }
Struts的Action实现类的execute()方法是最先被执行的,这个方法本身也没有具体的事务,而是根据action的参数不同执行相应的方法。在登陆页里面可以找到有一个“action=logon”的字样,它的目的就是在这里做逻辑判断。当action=logon时调用logon()方法。logon()方法从UsersForm中得到用户提交的数据,然后在调用UsersDao()的logonUsers()方法。并且把UsersForm转成Users类做为logonUsers()方法的参数。调用后会返回一个boolean型的值。如果为真,则返回“mapping.findForward(\”否则返回“mapping.findForward(\”也就是当用户登陆成功后,返回给用户登陆成功的页面,登陆失败后返回用户一个登陆失败的页面。那么UsersDao的logonUsers()方法是根据什么得到的返回值呢,现在就让我们看看这个方法,如下所示:
public boolean logonUsers(Users users) throws HibernateException {
Session session = HibSessionFactory.currentSession(); Transaction tx = session.beginTransaction(); Query query = session
.createQuery(%u.username = :name and u.password =:password and u.isadmin=:isadmin \
query.setString(\ query.setString(\ query.setByte(\ List list = null;
25
list = query.list(); tx.commit();
HibSessionFactory.closeSession(); if (list != null) {
Iterator it = list.iterator(); if (it.hasNext()) {
if (((Integer) it.next()).intValue() == 1) { return true; } } }
return false; }
这个方法先通过HibSessionFactory得到一个Hibernate的Session并且开始一个事务,Session再像使用一个欲编译似的命令似的东西,设定参数、提交事务和最后在关闭Session.。得到一个List里面就存储着所有查询出的结果。根据这个结果就可以判断出该用户是否有登陆的权根了,在返回true 或者false。就这样合法的用户就可以顺利的登陆了。那刚才那些有些类似于欲编译的东西是什么呢,这些就是Hibernate特有的查询语言,被称为Hibernate 查询语言(HQL),而它本身也就是使用的JDBC的欲编译技术。
4.1.2 人员管理模块设计
人员管理模块主要包括浏览人员信息、添加人员信息、人员信息的添加、人员信息的修改。此模块文件架构如图4所示。
各项管理工作都是在用户成功登陆后的管理页面进行的,在管理控制页面的左侧是各项的相关链接,右侧是操作平台。管理控制页面右侧实际上是一个iframe,如下所示:
26
在左侧的链接中使用target=\就可以在这个iframe中打开新的链接了。
单击“添加人员信息”,即打开添加人员信息的页面如图所示。
图4.2 添加人员信息页面
添加人员信息的链接是这样的,如下所示:
在Struts配置文件中,添加人员信息的链接没有使用ActionForm类,也没有使用Action的实现类,如下所示:
adduser.jsp文件,只是一个普通的JSP文件,但是它的表单元素都是与UsersForm相对应的,UsersForm如下所示:
package com.bOS.bPRO_PersonManage.actionform; import com.bOS.bUtil.DateUtil;
import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; import com.bOS.bPRO_PersonManage.en.Users; public class UsersForm extends ActionForm {
27