1.项目搭建过程:

(1). 创建一个Web Project.导入Struts2和Hibernate的jar包。(如果不知道Struts2的jar包,可以在下载的struts的jar包中,找到apps文件夹下包含的示例程序,其中有一个是struts2-blank.war,解压缩,拷贝其中的lib包下的jar包即可。而Hibernate程序所需要的jar包,则从Hibernate的jar包中,有一个文件夹,叫做lib\required,里面的包即为必须的包)

(2).在web.xml中为struts配置过滤器。

<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>

(3).在src路径下创建hibernate的核心配置文件hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
     <!-- 连接数据库的用户名和密码 -->
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">password1!</property>
     <!--mysql数据库驱动-->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- url,并且设置编码格式,其中&amp;是html中对&的转义 -->
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/数据库名称?useUnicode=true&amp;characterEncoding=UTF-8</property>
<!--设置方言为mysql -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <!-- 执行操作时,打印sql语句 -->
<property name="show_sql">true</property>
<!-- 格式化输出的sql语句 -->
<property name="format_sql">true</property>
<!-- 表的生成策略 -->
<property name="hbm2ddl.auto">update</property>
     <!-- 采用getCurrentSession的方式获取session对象时,此处需要加上这句话 -->
<property name="hibernate.current_session_context_class">thread</property>
</session-factory>
</hibernate-configuration>

(4).创建struts.xml配置文件,加上壳子。为后续配置action和result做准备。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<!-- 开发者模式打开,便于调试-->
<constant name="struts.devMode" value="true"></constant>
<package name="default" namespace="/" extends="struts-default">
</struts>

(5).根据业务需求,创建实体类(JavaBean写法)。并为这些实体类创建对应的映射文件。

(实体类略)Student.cfg.xml映射文件如下:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2016-7-23 10:35:39 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<!-- class的name属性值一定要从包名开始引用 -->
<class name="com.imooc.entity.Student" table="student">
<id type="java.lang.String" name="sid" column="SID" length="8">
       <!--主键增长策略,assigned表示以自定义的方式增加主键,而不是由数据库自动生成-->
<generator class="assigned"></generator>
</id> <property name="sname" type="java.lang.String">
<column name="SNAME" />
</property> <property name="sgender" type="java.lang.String">
<column name="SGENDER" />
</property>   <!-- type类型,可以写hibernate映射类型date(只显示年月日) time(只显示时间) timestamp(年月日时分秒),也可以写Java对应的类型:java.util.Date -->
<property name="sbirthday" type="date">
<column name="SBIRTHDAY" />
</property> <property name="saddress" type="java.lang.String">
<column name="SADDRESS" />
</property> </class>
</hibernate-mapping>

将映射文件添加到Hibernate的核心配置文件中:hibernate.cfg.xml

<session-factory>
...
<mapping resource="com/imooc/entity/Student.hbm.xml"/>
<mapping resource="com/imooc/entity/User.hbm.xml"/>
...
</session-factory>

(6).根据业务需求,分层,创建dao接口,dao的实现类。在此之前,先创建一个工具类,提供SessionFactory对象实例。(单例模式)

public class SessionFactoryUtil {

    private static SessionFactory sessionFactory;
// 单例模式
private SessionFactoryUtil() {
} public static SessionFactory getSessionFactory() {
if (sessionFactory == null) {
// 获取配置信息
Configuration configuration = new Configuration().configure();
// 获取服务注册对象
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
.applySettings(configuration.getProperties())
.buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
}
return sessionFactory;
}
}

在具体的dao的实现类中,对实体类进行增删改查时,总结如下:

session对象在进行增删改查时,要开启事务。

通过get/load方法得到某一个对象,save,delete,update分别进行增删改的操作。

如果用进行查询,我们借助hql:hql默认的语法是: from 实体类 where 属性...

如果要查询具体的某列内容,语法为:select 属性1,属性2,属性3... from 实体类 where ...,默认返回类型为List<Object[]>

Session session = SessionFactoryUtil.getSessionFactory()
.getCurrentSession();
transaction = session.beginTransaction(); //这种方式的前提是,在实体类student中必须存在包含选项列的构造函数才可以
String hql = "SELECT new Student(sid, sname, sgender, sbirthday, saddress) FROM Student";
List<Student> s = query.list(); //String hql = "SELECT new List(sid, sname, sgender, sbirthday, saddress) FROM Student";
//List<List> lists = query.list(); //String hql = "SELECT new Map(sid, sname, sgender, sbirthday, saddress) FROM Student";
//List<Map> maps= query.list(); //默认
//String hql = "SELECT sid, sname, sgender, sbirthday, saddress FROM Student";
//List<Object[]> lists = query.list();

(7).前台,由jsp页面跳转到action中。

<form name="loginForm" action="<%=path%>/user/User_login.action" method="post">
解释一下<%=path%>后面的user是什么?User_login又是什么?
首先,user代表namespace。后面的User_login采用通配符的方式匹配action <package name="student" namespace="/student" extends="struts-default">
        <action name="*_*" class="com.imooc.action.{1}Action" method="{2}">
            <result name="list_success">/student/Students_query_success.jsp</result>
            <result name="list_failer">/student/Students_query_success.jsp</result>
            <result name="add_success">/student/Students_add_success.jsp</result>
            <result name="modify_middle">/student/Students_modify.jsp</result>
            <result name="save_success">/student/Students_modify_success.jsp</result>
            <result name="delete_success" type="chain">Student_query</result><!-- 注意路径。type中chain代表页面跳转到其他的请求。不可以跳转到某一个页面 -->
        </action>
</package>
这里想说,在result中跳转到其他的action,type="chain". 如果由result中跳转到其他的jsp页面,默认type="dispatcher"

暂且说这些,欢迎大家指正!

Struts2.3.4+Hibernate4.2.4+Mysql6.0整合的更多相关文章

  1. [转]Struts2.3.16.1+Hibernate4.3.4+Spring4.0.2 框架整合

    原文地址:http://blog.csdn.net/ycb1689/article/details/22928519 最新版Struts2+Hibernate+Spring整合 目前为止三大框架最新版 ...

  2. struts2.3.16.1+hibernate4.3.4+spring4.0.2

    把之前的老项目用新的改了 发现新的有点很方便啊 Struts2+Hibernate+Spring整合     用的是      struts2.3.16.1      hibernate4.3.4   ...

  3. Struts2.3.16.1+Hibernate4.3.4+Spring4.0.2 框架整合(转)

    原文  http://blog.csdn.net/songanling/article/details/22454973 最新版Struts2+Hibernate+Spring整合     目前为止三 ...

  4. 关于Mysql6.0+的时区错乱问题

    如果使用mysql6.0+的JDBC驱动版本的时候,有时候会出现程序时间与数据库时间相差很多个小时; 1.如果以北京时间为例,相差8个小时的情况一般是你在连接jdbc的url中没有标明system_t ...

  5. Mysql6.0连接中的几个问题 Mysql6.xx

    Mysql6.0连接中的几个问题 在最近做一些Javaweb整合时,因为我在maven官网查找的资源,使用的最新版,6.0.3,发现MySQL连接中的几个问题,总结如下: 1.Loading clas ...

  6. 项目ITP(五) spring4.0 整合 Quartz 实现任务调度

    前言 系列文章:[传送门] 项目需求: 二维码推送到一体机上,给学生签到扫描用.然后需要的是 上课前20分钟 ,幸好在帮带我的学长做 p2p 的时候,接触过.自然 quartz 是首选.所以我就配置了 ...

  7. 项目ITP(六) spring4.0 整合 Quartz 实现动态任务调度

    前言 系列文章:[传送门] 项目需求: http://www.cnblogs.com/Alandre/p/3733249.html 上一博客写的是基本调度,后来这只能用于,像每天定个时间 进行数据库备 ...

  8. Apache2.2+Tomcat7.0整合配置详解

    一.简单介绍 Apache.Tomcat Apache HTTP Server(简称 Apache),是 Apache 软件基金协会的一个开放源码的网页服务器,可以在 Windows.Unix.Lin ...

  9. 帝国cms7.0整合百度编辑器ueditor教程

    帝国cms7.0整合百度编辑器ueditor教程开始 1.根据自己使用的帝国cms版本编码下载对应的ueditor版本 下载地址 http://ueditor.baidu.com/website/do ...

随机推荐

  1. Android - ViewPager+Fragment初始化问题

    Android应用开发中,经常会用到ViewPager + Fragment,虽然效果不错,但随之而来的还有一些问题,下面就说说其中的初始化问题. ViewPager初始化时会预加载前后的2个页面,即 ...

  2. 反向Ajax,实现服务器向客户端推送消息

    反向Ajax的基本概念是客户端不必从服务器获取信息,服务器会把相关信息直接推送到客户端.这样做的目的是解决Ajax传统Web模型所带来的一个限制:实时信息很难从技术上解决.原因是,客户端必须联系服务器 ...

  3. 《Java中方法的重写》

    //方法的重写 /* 注意:方法的重写要遵循“两同两小一大”规则 “两同”即方法名相同.形参列表相同: “两小”(1)指的是子类方法返回值类型比父类方法的返回值类型更小或相等,[什么意思?] (2)子 ...

  4. JAVA ,Map接口 ,迭代器Iterator

    1.    Map 接口概述 java.util.Map 接口描述了映射结构, Map 接口允许以键集.值集合或键 - 值映射关系集的形式查看某个映射的内容. Java 自带了各种 Map 类. 这些 ...

  5. python多线程监控指定目录

    import win32file import tempfile import threading import win32con import os dirs=["C:\\WINDOWS\ ...

  6. Java EE注册三部曲(一步曲)

    一步曲(html+servlet+SQL+Bean+Dao+加密(Base64)) 设计思路: 1:编写前台页面jsp:register.jsp,使得用户能够实行注册操作 2:编写servlet:re ...

  7. hdu 2095

    ps:真是日了狗...英语渣渣理解题目不行,开了个100W数组来算,还优化了下时间,还是超时了,看了题解才知道用异或. N个数异或,会得出其中是奇数的一个.比如 1^1^3^2^2 = 3.   1^ ...

  8. flask开发遇到 Must provide secret_key to use csrf解决办法

    开发flask的时候,遇到了 Must provide secret_key to use csrf错误提醒.原来是没有设置secret_key .在代码中加上 app.config['SECRET_ ...

  9. Multiply game_线段树

    Problem Description Tired of playing computer games, alpc23 is planning to play a game on numbers. B ...

  10. spring-websocket的搭建

    Apach Tomcat 8.0.3+MyEclipse+maven+JDK1.7 spring4.0以后加入了对websocket技术的支持,撸主目前的项目用的是SSM(springMVC+spri ...