Session session = HibernateSessionFactory.getSession(); Transaction t = session.beginTransaction(); try {
session.save(employee); session.flush(); t.commit();
if (t!=null) {
} catch (Exception e) { t.rollback(); } }finally{
HibernateSessionFactory.closeSession();
}
type=\ scope=\ >
这样就在页面做一次提交时它访问了
\,把所有员工信息取出来显示给用户,同样EmployeeListAction还是调用EmployeeDAO,取数据库的具体操作在EmployeeDAO文件中,它调用的是EmployeeList ()方法,并返回封装结果集的PageModel对象,EmployeeList ()方法的实现代码如下所示: public PageModel EmployeeList(int offset, int pageSize) { }
EmployeeListAction取出从EmployeeDAO中数据,在把它存到request里,然后返回return mapping.findForward(\,在struts的配置文件里返回页是employeeList.jsp。所有员工的信息都在这个页中显示出来。在显示页中,从request里面的取出数据,如果有则显示在页面上,使用这是添加员工信息的整个过程,在这个过程中,有一部分是用于显示员工信息的,就是
| ,如果在网页中直接点击这个链接地址,同样也会调用出所有用户的信息。这就是“员工浏览|修改”的链接。页面实现效果如图5.5所示。
员工信息的列表的最后一列可以对该条记录进行删除和修改。删除的链接地址是\}\它向Action的实现类提交了一个参数,是该员工的id这是根据不同记录取出来的。在Action的实现类中得到页面提交过来的员工id,并调用EmployeeDAO的deleteEmployee()方法,其实现如下:
public ActionForward execute(ActionMapping mapping,
PageModel pm = new PageModel();
Session session = HibernateSessionFactory.getSession(); Query query = session.createQuery(\query.setFirstResult(offset); query.setMaxResults(pageSize); List list = query.list(); pm.setList(list);
pm.setCount(this.count());
HibernateSessionFactory.closeSession(); return pm;
ActionForm form,
}
HttpServletRequest request,
HttpServletResponse response) throws String id = request.getParameter(\int employeeId = 0;
if (!(id==null||\}
new EmployeeDAOImpl().deleteEmployee(employeeId); return mapping.findForward(\
Exception {
employeeId = Integer.parseInt(id);
图5.5 浏览员工信息页面
具体的删除操作的代码如下所示:
public void deleteEmployee(int employeeId) {
Session session = HibernateSessionFactory.getSession(); Transaction t = session.beginTransaction(); try {
Employee employee
=(Employee)session.get(Employee.class,employeeId);
session.delete(employee); t.commit(); } catch (Exception e) {
if (t!=null) { t.rollback(); } }finally{
HibernateSessionFactory.closeSession(); } }
删除员工时和添加添加一样都是先得到一个Hibernate的Session,后调用它的delete()方法就可以了,操作完成后千万记得要提交事务,即调用commit()方法,和关闭Session。
修改员工的信息时必须先把要修改的员工信息先查找出来,让用户可以直观的根据以前的信息修改。这样在点击修改时也要传给Action一个用户id,用来查询出用户信息,如下所示:
根据页面的链接可以在Struts的配置文件里找到相应的配置信息,如下所示: type=\ scope=\ >
它调用了action的实现类EmployeeInfoAction类,返回到employeeInfo.jsp页面,在EmployeeInfoAction类中同前面一样也是根据id的参数来调用EmployeeDAO 的selectEmployee方法,得到员工信息封装类Employee的对象并保存在request中,跳转到employeeInfo.jsp页面,效果如图5.6所示:
employeeInfo.jsp页面从request中取出员工信息,在转化成Employee类型,然后显示在页面中,用户可以进行修改,然后提交到URL为updateEmployee.do的action上,在struts配置文件中定义如下: