• 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>
  • 相关阅读:
    APP测试整理
    Ubuntu18.04搭建测试环境
    Ubuntu18.04完全卸载mysql5.7
    Ubuntu18.04部署禅道系统
    mysql数据库创建用户、赋权、修改用户密码
    Chrome浏览器查看cookie
    APP测试之日志分析
    计算机网络知识之TCP/IP协议簇
    关于博客园cnblogs图片显示模糊失真问题
    Jmeter脚本录制攻略
  • 原文地址:https://www.cnblogs.com/forever2h/p/6738140.html
Copyright © 2020-2023  润新知