struts1 Hibernate3初学

        说来话长,Java已经有一段时间没得到我的宠幸了,几乎都忘了它了,由于最近要去AVON实习,所以重新学了一下Java,并且学习一下Struts,hibernate,Spring,现在谈谈struts和hibernate吧。

        这几天看了一下struts的运行机制,MVC架构,重新认识了一下架构,hibernate比想象中的简单,不过struts和hibernate的运行机制和源代码都没仔细研究,就随便调试了一下,先看看能否能实现。

        下面简单说一下这个小小程序的条件:

       1、mysql5.0   http://www.mysql.org
   2、myeclipse6.5  http://www.myeclipseide.com
   3、tomcat

传说中的tomcat+ struts+hibernate+mysql的小工程开始噜

一、数据库 建立数据库,admin表,字段id--primary key,字段name,字段password.

 

二、在myeclipse里new project,J2EE的javaweb工程---Test

 
三、在新建的项目中点击右键  MyEclipse->Add struts Capabilities,添加struts1.2框架
 
 
 四、同样,增加hibernate框架,但是和struts不同的地方,MyEclipse- >Add Hibernate Capabilities…一路确定下来为你的工程添加Hibernate。(为方便起见我们在选择路径时把 HibernateSessionFactory.java放在了src/com下面,其实最好建立个单独的目录如 src/com/hibernate)
五、下面我们再选择WebRoot/WEB-INF/struts-config.xml文件,在画面中点击右键选择new- >Form, Action and JSP。如下填写
新建success.jsp文件,
然后右击,点properties
 
 
finish后应该能看到这样的关系图
六、下面我们转到hibernate。换到刚才我们建立数据库的页面,选择你的admin的表点右键选择Create Hibernate Mapping。选择好打包路径后选择Finish。如图:
 
生成后的文件结构
七、刚才选择的路径下src/com/yourcompany/下新建立的文件 AdminDAOFactory.java文件并输入以下内容:
package com.yourcompany;
import java.util.Iterator;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.HibernateSessionFactory;
public class AdminDAOFactory {
 Session session;
 Transaction tx;
 public void add(Admin admin) throws HibernateException {
  try {
   session = HibernateSessionFactory.getSession();
   tx = session.beginTransaction();
   //Add a new admin
   session.save(admin);
   tx.commit ();
  }catch(HibernateException e){
   throw e;
  }finally{
   if (tx==null) {
    tx.rollback();
   }
   HibernateSessionFactory.closeSession();
  }
 }
}
 

再打开com.yourcompany.struts.action下的AddAdminAction.java添加(其中如果有错误选中好按ctrl+shift+o自动添加包)

public class AddAdminAction extends Action {

 // --------- Instance Variables

 // ---------Methods

 public ActionForward execute(
  ActionMapping mapping,
  ActionForm form,
  HttpServletRequest request,
  HttpServletResponse response) {
  AddAdminForm addAdminForm = (AddAdminForm) form;
  
  // TODO Add a new admin
  Admin admin = new Admin();
  admin.setName(addAdminForm.getName ());
  admin.setPassword(addAdminForm.getPassword ());
  AdminDAOFactory adminDAO = new AdminDAOFactory ();
  adminDAO.add(admin);
  
  return mapping.findForward("success");
 }

}

 
再打开com.yourcompanyname.struts.form下的AddAdminForm.java,修改(如果有错误按照上面说的方法导入包)

 public ActionErrors validate(
  ActionMapping mapping,
  HttpServletRequest request) {

  // TODO Auto-generated method stub
  ActionErrors errors = new ActionErrors();
  
  Session session = SessionFactory.currentSession();
  Transaction tx = session.beginTransaction ();
  Query query = session.createQuery("select admin from Admin as admin where admin.name = '" + this.name + "'");
  Iterator it = query.iterate ();
  if (it.hasNext()){
   errors.add ("addAdmin.err.name",new ActionMessage("form.addAdmin.err.name"));
  }
  tx.commit();
  SessionFactory.closeSession ();
  return errors;
 }

 public void reset(ActionMapping mapping, HttpServletRequest request) {

  // TODO Auto-generated method stub
  this.name=null;
  this.password=null;
 }


再打开com\yourcompanyname\struts下的ApplicationResource.properties在这里面添加错误信息:

Form.addAdmin.err.name=err

 

 

好了,到此项目基本完成了,现在部署项目,然后运行一下,看看结构如何,首先部署一下,运行tomcat

 
 
我们去看看数据库插进刚刚的数据没有?
 
 
夜深了,下次继续研究这些框架的源代码和运行机制。。。。。
原文地址:https://www.cnblogs.com/chester/p/1987947.html