1.Struts2与Hibernate的第一次尝试
步骤:1.通过struts2标签做一个index.jsp页面,输入name,password,date进来。
2.表单提交user.action,在action的excute方法中截获
3.在excute方法中调用业务逻辑方法,通过hibernate存入mysql数据库中。
4.为了熟悉hibernate的一对多映射,多建立一个表,在index.jsp页面多加一个修改,用于存储hruser表中修改的数据,即让hruserhistory这个表成为新的历史数据库。
源码如下:
index.jsp
信息输入,第一个表单提交到hruser.user.action,进行数据的存储
<s:form action="hruser/hruser.action"method="post" enctype="multipart/form-data">
<s:textfieldlabel="姓名"name="name"/>
<s:textarea label="密码" name="password"cols="20"rows="3"/>
<s:textfieldlabel="入职时间"name="date"/>
<s:submitvalue="提交" onclick="alert('确认要提交信息');"/>
<s:resetvalue="重置" onclick="alert('确认要重置信息');"/>
</s:form>
这个表单提交到hruserchange.action,然后在该action中将以前的历史数据存进来,在把最新的数据存到hruser表中。
<s:form action="hruser/hruserchange.action"method="post" enctype="multipart/form-data">
<s:textfieldlabel="姓名"name="name"/>
<s:textarealabel="密码"name="password"cols="20"rows="3"/>
<s:textfieldlabel="入职时间"name="date"/>
<s:submitvalue="修改" onclick="alert('确认要修改信息');"/>
<s:resetvalue="重置" onclick="alert('确认要重置信息');"/>
</s:form>
HrUserAction:在HrUserAction接受表单数据,然后存储到mysql数据库。
public class HrUserAction extends ActionSupport {
private static final long serialVersionUID =-675284740097365026L;
HrUser hruser = new HrUser();
HrUserHistory hruserhistory = new HrUserHistory();
//省略相应的getter和setter方法
private String name;
private String password;
private Date date;
private UserService userService = new UserServiceImpl();//初始化业务层类
public String execute() throws Exception {
HttpServletRequestrequest=ServletActionContext.getRequest();
ActionContext context=ActionContext.getContext();
Map application = context.getApplication();
//取得表单中的数据,对hruser这个bean进行赋值
hruser.setName(name);
hruser.setDate(date);
hruser.setPassword(password);
//调用userService.saveHrUser方法,实现hruser对象存储到mysql的业务逻辑
System.out.println(userService.saveHrUser(hruser));
return SUCCESS;
}
}
userService.saveHrUser方法实现存储的业务逻辑
String mes = "用户信息保存成功!";
public String saveHrUser(HrUser hruser){
Session session = null;
HrUser hruser1 = hruser;
try {
session = HibernateUtils.getSession();
session.beginTransaction();
HrUserHistory hruserhistory = new HrUserHistory();
hruserhistory.setHruser(hruser1);
hruserhistory.setDate(new Date());
session.save(hruser1);
session.save(hruserhistory);
session.getTransaction().commit();
}catch(Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
mes = "用户信息保存失败!";
return mes;
}finally {
HibernateUtils.closeSession(session);
}
return mes;
}