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. 服务器端与客户端TCP连接入门(二)

    1.服务器端程序 package Socket; import java.io.BufferedReader; import java.io.IOException; import java.io.I ...

  2. Psp个人软件开发软件需求分析及用例分析

    一.需求分析 1.  业务需求 1.1 应用背景 开发项目进度计划总是那么不明确,延期经常出现,甚至无法给出一个相对比较明确的延迟时间.这样给市场的推广会带来很大的影响,不确定因素使得应对十分困难. ...

  3. 个人开发者做一款Android App需要知道的事情

    个人开发者做一款Android App需要知道的事情 在大学时, 自己是学计算机专业的,而且还和老师一起做过一年半的项目. 有时候是不是有这样的想法,做一个自己的网站.但一直未付诸行动.2012年时, ...

  4. golang flag包简单例子

    package main import ( "flag" "fmt" ) var workers int; func main() { flag.IntVar( ...

  5. Mousejack Hacking : 如何利用MouseJack进行物理攻击

    0×00 前言 近期安全公司Bastille Networks(巴士底狱)安全研究员发现大多数无线鼠标和接收器之间的通信信号是不加密的.黑客可对一百米范围内存在漏洞的蓝牙无线键鼠进行嗅探甚至劫持,从而 ...

  6. Gym 100960G (set+树状数组)

    Problem Youngling Tournament 题目大意 给一个序列a[i],每次操作可以更改一个数,每次询问 将序列排序后有多少个数a[i]>=sum[i-1]. n<=10^ ...

  7. Why NSAttributedString import html must be on main thread?

    The HTML importer should not be called from a background thread (that is, the options dictionary inc ...

  8. iOS-Xcode7 网络连接

    Xcode7 网络无法连接问题 1.The resource could not be loaded because the App Transport Security policy require ...

  9. JAVA入门第二季 第一章 类和对象

    面向对象编程 Object Oriented Programming OOP 第一.什么是类和对象 在具体说明类和对象之前,先说说别的. 眼睛在人类身体上最为有用的器官.如果一个没有了眼睛,这个人与世 ...

  10. pip install 出现报asciii码错误的问题

    原因是pip安装python包会加载我的用户目录,我的用户目录恰好是中文的,ascii不能编码. 解决办法是: python目录 Python27\Lib\site-packages 建一个文件sit ...