<% List list=(List)request.getAttribute(\ if(list!=null&&list.size()>0){ Iterator it = list.iterator(); while (it.hasNext()) {
Users u = (Users) it.next(); %>
align=\
align=\
align=\thday(),DateUtil.yyyyMMdd))%>
33
align=\
href=\修改
href=\删除
<%
}
}else{%>
<%}%>
在显示页中,从request里面的取出数据,如果有则显示在页面上,使用“list!=null&&list.size()>0”判断如果在没有数据的情况下,将对用户提示说“对不起,没有添加人员信息!!!”。
这是添加人员信息的整个过程,在这个过程中,有一部分是用于显示人员信息的,就是“user.do?action=listuser”,它是显示人员信息的地址。如果在网页中直接点击这个链接地址,同样也会调用出所有用户的信息。这就是“浏览人员信息”的链接。页面执行后如图所示。
图4.4 浏览人员信息页面
34
人员信息的列表的最后一列可以对该条记录做删除和修改。删除的链接地址是“modifyuser.do?action=deleteuser&id=<%=u.getId()%>”它向Action的实现类提交了两个参数,一个是action=deleteuser是固定不变的,另一个是该用户的id这是根据不同记录取出来的。在UsersAction类中根据action的值可以找到与其相对的方法,如下所示:
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); 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(); }
删除用户时和添加用户一样都是先得到一个Hibernate的Session,后调用它的delete()方法就可以了,操作完成后千万记得要提交事务,即调用commit()方法,和关闭Session。
修改人员的信息时必须先把要修改的人员信息先查找出来,让用户可以直观的根据以前的信息修改。这样在点击修改时也要传给Action一个用户ID,用来查询出用户信息,如下所示:
35
根据页面的链接可以在Struts的配置文件里找到相应的配置信息,如下所示:
type=\
它调用了UsersAction类,返回到updateuser.jsp文件,在UsserAction中同前面一样也是根据action的参数来识别出调用selectUser()方法的,方法实现如下所示:
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(\ }
这个方法使在调用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,
36
和要查询的用户ID。得到的返回值需要做一下强制类型转换。
显示用户信息的页面在updateuser.jsp中,如图所示。
图4.5 修改用户信息页面
实现代码如下所示: