hibernate和struts开发时注意的问题
利用struts和hibernate在开发项目时,应该清楚hibernate和struts的工作原理和方式。自己是菜菜鸟,高手略过了,可以提下建议。
hibernate的工作方式:
核心:Session,SessionFactory,configuration。相应的操作:在MyEclipse中,先添加hibernate capabilities,然后在Database Explore中,建立连接后经过反向工程后,对数据库的表进行映射处理。
struts1:
关键:添加相应的jar包,配置web.xml和struts.config.xml文件。
说明:
在struts+hibernate时要注意,在相关的action(LoginactionaAtion)类中,一定要重写其构造函数LoginactionAction(){setDAO(new ...DAO)},注意要把操作类(DAO)的对象初始化,以便操作类进行相关操作。如果没有配置,tomcat会包空指针错误。下面应该简单的例子,可以参考下。
register1.jsp
<%@ page language="java" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<html>
<head>
<title>JSP for Register1Form form</title>
</head>
<body>
<html:form action="/register1">
password : <html:password property="password"/><html:errors property="password"/><br/>
username : <html:text property="username"/><html:errors property="username"/><br/>
<html:submit/><html:cancel/>
</html:form>
</body>
</html>
Register1Action.java
package com.yourcompany.struts.action;
import hibernateDao.Sstest;
import hibernateDao.SstestDAO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.hibernate.Transaction;
import com.yourcompany.struts.form.Register1Form;
public class Register1Action extends Action {
//数据dao
SstestDAO sd;
public Register1Action() {
// TODO Auto-generated constructor stub
setSd(new SstestDAO());
}
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
Register1Form register1Form = (Register1Form) form;// TODO Auto-generated method stub
//输出客户端的用户名
response.setCharacterEncoding("GB2312");
System.out.println("register1Form.name\t"+register1Form.getUsername());
/*
* 数据库操作
* */
Sstest st = new Sstest();
st.setUsername(register1Form.getUsername());
st.setPassword(register1Form.getPassword());
//dao对象
SstestDAO sd = getSd();
Transaction tran = sd.getSession().beginTransaction(); //开始事务
sd.save(st);
tran.commit();
//请求转发到success
return mapping.findForward("success");
}
//数据dao,get,set方法
public void setSd(SstestDAO sd) {
this.sd = sd;
}
public SstestDAO getSd() {
return sd;
}
}
代码其余部分自动生成,绿色部分为hibernate数据库相关操作。