hibernate 之 hibernate整合struts2

步骤如下:

1. 新建web项目。

2. 导入jar包,注意去掉重复包,如果使用的是JavaEE6.0,并且通过main方法测试,去掉 weld-osgi-bundle.jar

antlr-2.7.7.jar
asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
commons-fileupload-1.2.2.jar
commons-io-2.0.1.jar
commons-lang3-3.1.jar
dom4j-1.6.1.jar
freemarker-2.3.19.jar
hibernate-commons-annotations-4.0.5.Final.jar
hibernate-core-4.3.10.Final.jar
hibernate-jpa-2.1-api-1.0.0.Final.jar
jandex-1.1.0.Final.jar
javassist-3.18.1-GA.jar
jboss-logging-3.1.3.GA.jar
jboss-logging-annotations-1.2.0.Beta1.jar
jboss-transaction-api_1.2_spec-1.0.0.Final.jar
mysql-connector-java-5.1.20-bin.jar
ognl-3.0.5.jar
struts2-core-2.3.4.jar
xwork-core-2.3.4.jar

3. 配置web.xml:

<filter>
      <filter-name>osiv</filter-name>
      <filter-class>cn.wh.filter.OpenSessionInViewFilter</filter-class>
  </filter>
  <filter-mapping>
      <filter-name>osiv</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>
  <filter>
      <filter-name>struts2</filter-name>
      <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>

4. 配置hibernate.cfg.xml :

<hibernate-configuration>
<session-factory>
    <!-- 配置数据库连接信息 -->
    <property name="connection.driver_class">
        com.mysql.jdbc.Driver
    </property>
    <property name="connection.url">jdbc:mysql:///hibernate4</property>
    <property name="connection.username">root</property>
    <property name="connection.password">1111</property>
    <!-- 配置方言 -->
    <property name="dialect">
        org.hibernate.dialect.MySQLDialect
    </property>
    <property name="show_sql">true</property>
    <!-- 
        hbm2ddl.auto
        create:(如果表存在先删表) 再创建 
        create-drop:先删表 再创建 
        update:如果表存在 则直接操作,如果不存在先创建 在执行操作
        validate:不会自动创建表-默认
    -->
    <mapping resource="cn/wh/vo/Student.hbm.xml" />
    <mapping resource="cn/wh/vo/Teacher.hbm.xml" /></session-factory>
</hibernate-configuration>

5. 编写Vo

Student.java

public class Student {
    private int id;
    private String name;
    private String sex;
    private Teacher teacher;
    public Student() {
    }
    public Student(String name, String sex) {
        super();
        this.name = name;
        this.sex = sex;
    }

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public Teacher getTeacher() {
        return teacher;
    }
    public void setTeacher(Teacher teacher) {
        this.teacher = teacher;
    }
}

Teacher.java

public class Teacher {
    private int id;
    private String name;
    public Teacher() {
    }
    public Teacher(String name) {
        super();
        this.name = name;
    }

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

6. 编写映射文件

Student.hbm.xml

<hibernate-mapping>
    <class name="cn.wh.vo.Student" table="t_student">
        <id name="id">
            <generator class="native"></generator>
        </id>
        <property name="name"/>
        <property name="sex"/>
        <!-- 配置多对一的关联映射
            name配置的是  一的一端在多的一端的属性名
            column 配置的是 一的一端在多的一端表中的外键
         -->
        <many-to-one name="teacher" column="tid"/>
    </class>
</hibernate-mapping>

Teacher.hbm.xml

<hibernate-mapping>
    <class name="cn.wh.vo.Teacher" table="t_teacher">
        <id name="id">
            <generator class="native"></generator>
        </id>
        <property name="name"/>
    </class>
</hibernate-mapping>

7. 编写dao:

public class StudentDaoImpl implements StudentDao{
    @Override
    public List<Student> findAll() {
        Session session = HibernateUtil.getSession();
        List<Student> list= session.createCriteria(Student.class).list();
        return list;
    }
}

8. 编写 service :

public class StudentServiceImpl implements StudentService{
    private StudentDao studentDao = new StudentDaoImpl();
    @Override
    public List<Student> findAll() {
        Session session = null;
        Transaction tx = null;
        try {
            session = HibernateUtil.getSession();
            tx= session.beginTransaction();
            List<Student> list = studentDao.findAll();
            tx.commit();
            return list;
        } catch (Exception e) {
            if(tx!=null)
                tx.rollback();
        }
        return null;
    }

}

9. 编写action :

public class StudentAction {
    private List<Student> list;
    private StudentService studentService = new StudentServiceImpl();
    public String list(){
        list = studentService.findAll();
        return Action.SUCCESS;
    }
    public List<Student> getList() {
        return list;
    }
    public void setList(List<Student> list) {
        this.list = list;
    }
}

10 .编写struts.xml :

<struts>
    <package name="default" namespace="/" extends="struts-default">
        <action name="list" class="cn.wh.action.StudentAction" method="list">
            <result>/list.jsp</result>
        </action>
    </package>
</struts>

11.OpenSessionInView过滤器:

/**
 * 该过滤器 延长session的生命周期
 */
public class OpenSessionInViewFilter implements Filter{
    @Override
    public void destroy() {
    }
    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        Session session = null;
        try {
            session = HibernateUtil.getSession();
            chain.doFilter(request, response);
            
        } catch (Exception e) {
        }finally{
            HibernateUtil.close();
        }
    }
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }
}

12. 编写jsp页面:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>My JSP 'index.jsp' starting page</title>
  </head>
  <body>
  <table width="80%" align="center">
      <tr>
          <td>编号</td>
          <td>姓名</td>
          <td>性别</td>
          <td>老师</td>
      </tr>
      <c:forEach items="${list }" var="bean">
          <tr>
          <td>${bean.id }</td>
          <td>${bean.name }</td>
          <td>${bean.sex }</td>
          <td>${bean.teacher.name }</td>
      </tr>
      </c:forEach>
  </table>
  </body>
</html>
原文地址:https://www.cnblogs.com/forever2h/p/6738140.html