企业员工管理系统张志斌(6)

2019-04-14 23:18

public Users populate(){ Users u=new Users(); u.setId(getId());

u.setIsadmin(getIsadmin()); u.setContent(getContent()); u.setUsername(getUsername()); u.setPassword(getPassword()); u.setSex(getSex());

u.setBirthday(DateUtil.parseToDate(getBirthday(),DateUtil.yyyyMMdd));

u.setCreatetime(DateUtil.parseToDate(getCreatetime(),DateUtil.yyyyMMddHHmmss));

return u; } }

UsersForm类中的reset()方法作用是当用户点击“重置”按钮时,清空input输入框的内容,toString()方法覆盖了Object和toString()方法,populate()方法很有,它把UsersForm转化成Users实体类,大大方便了程序在对数据库操作时使用的方便。而且这个方法中还把用户的生日等表单元素的值由字符型转成日期类型。

在adduser.jsp页面中的action上可以看到它要提交的URL,如下所示:

modifyuser

Action

“com.bOS.bPRO_PersonManage.action.UsersAction”,如下所示:

type=\scope=\

在UsersAction找到参数action等于adduser时所调用的方法addUsers(),它只是把从UserForm表单转化成的User类做为参数传给了UsersDao的addUsers()方法。在由这个方法向数据库添加人员信息,如下所示:

public void addUsers(Users users) throws HibernateException { users.setCreatetime(new java.util.Date());

24

path=\name=\

Session session = HibSessionFactory.currentSession(); Transaction tx = session.beginTransaction(); session.save(users); tx.commit();

HibSessionFactory.closeSession(); }

如果添加成功页面会被发转到user.do?action=listuser的URL。user.do的配置文件如下所示:

type=\scope=\

这样就在页面做一次提交时它访问了二次UsersAction,第一次的作用是向数据库中添加信息,随后又把所有人员信息取出来显示给用户,同样UsersAction还只是调用UsersDao,取数据库的具体操作在UsersDao文件中,他这次调用的是listUser()方法,如下所示:

public List listUser() throws HibernateException { Session session = HibSessionFactory.currentSession(); Transaction tx = session.beginTransaction(); Query query = session

.createQuery(%u from Users as u order by createtime\ List list = query.list(); tx.commit();

HibSessionFactory.closeSession(); return list; }

UsersAction取出从UsersDao中数据,在把它存到request里,然后返回return mapping.findForward(\在Strutsr的配置文件里返回页是listuser.jsp。所有用户的信息都在这个页中显示出来。如下所示:

25

path=\name=\

<% List list=(List)request.getAttribute(\ if(list!=null&&list.size()>0){ Iterator it = list.iterator(); while (it.hasNext()) {

Users u = (Users) it.next(); %>

height=\height=\

align=\align=\

DateUtil.yyyyMMdd))%> 

height=\

align=\

height=\

align=\

><%=new height=\

>

Byte(\是\否\

align=\href=\除

<%

}

}else{%>

26

height=\

align=\><%=StringUtil.notNull(DateUtil.parseToString(u.getBirthday(),

  

对不起,没有添加人员信息!!!

<%}%>

在显示页中,从request里面的取出数据,如果有则显示在页面上,使用“list!=null&&list.size()>0”判断如果在没有数据的情况下,将对用户提示说“对不起,没有添加人员信息!!!”。

这是添加人员信息的整个过程,在这个过程中,有一部分是用于显示人员信息的,就是“user.do?action=listuser”,它是显示人员信息的地址。如果在网页中直接点击这个链接地址,同样也会调用出所有用户的信息。这就是“浏览人员信息”的链接。

人员信息的列表的最后一列可以对该条记录做删除和修改。删除的链接地址是“modifyuser.do?action=deleteuser&id=<%=u.getId()%>”它向Action的实现类提交了两个参数,一个是action=deleteuser是固定不变的,另一个是该用户的id这是根据不同记录取出来的。在UsersAction类中根据action的值可以找到与其相对的方法,如下所示:

private ActionForward deleteUser(ActionMapping mapping, ActionForm form, HttpServletRequest HibernateException {

Long id=new Long(request.getParameter(\ Users users=new Users(); users.setId(id); dao.deleteUsers(users);

return mapping.findForward(\ }

在这个方法里得到页面提交过来的用户ID,把这个id存在Users表中的实例中,传给dao的deleteUsers()方法,我们可以看到关于数据库方面的操作都被封装在Dao中。具体的删除操作的代码如下所示:

public void deleteUsers(Users users) throws HibernateException { Session session = HibSessionFactory.currentSession(); Transaction tx = session.beginTransaction(); session.delete(users); tx.commit();

HibSessionFactory.closeSession();

27

request, HttpServletResponse response) throws

}

删除用户时和添加用户一样都是先得到一个Hibernate的Session,后调用它的delete()方法就可以了,操作完成后千万记得要提交事务,即调用commit()方法,和关闭Session。

修改人员的信息时必须先把要修改的人员信息先查找出来,让用户可以直观的根据以前的信息修改。这样在点击修改时也要传给Action一个用户ID,用来查询出用户信息,如下所示:

根据页面的链接可以在Struts的配置文件里找到相应的配置信息,如下所示:

path=\

type=\

它调用了UsersAction类,返回到updateuser.jsp文件,在UsserAction中同前面一样也是根据action的参数来识别出调用selectUser()方法的,方法实现如下所示:

private ActionForward selectUser(ActionMapping mapping, ActionForm form, HttpServletRequest HibernateException {

Long id=new Long(request.getParameter(\ Users u=dao.loadUsers(id.longValue()); request.setAttribute(\ return mapping.findForward(\ }

这个方法使在调用Dao的loadUsres()的方法后,得到一个Users的返回值,里面存着与此id相对应的人员信息,然后在把它存在request里。loadUsres()方法实现如下所示:

public Users loadUsers(long id) throws HibernateException { Session session = HibSessionFactory.currentSession(); Transaction tx = session.beginTransaction();

Users u = (Users) session.load(Users.class, new Long(id)); tx.commit();

HibSessionFactory.closeSession(); return u; }

Hibernate在使用这个load()方法时比较特别,需要传入实体类的class,和要查询

28

request, HttpServletResponse response) throws


企业员工管理系统张志斌(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2010浙江导基试题库1-4章

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: