创建项目之前:我们需要导入我们需要的Hibernate和Struts2和Spring的相关架包。(博客自创,如有问题请留言博主,拒绝盗版,支持正版http://www.cnblogs.com/WuXuanKun/)

项目架构图:

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

我们需要搭建各个层:层次如上右图

1.搭建beans层:

①创建一个实体类Stock。

  1. /**
  2. * 股票类
  3. */
  4. public class Stock {
  5. private int sid; //股票编号
  6. private String sname;//股票名称
  7. private int scount; //股数
  8. public int getSid() {
  9. return sid;
  10. }
  11. public void setSid(int sid) {
  12. this.sid = sid;
  13. }
  14. public String getSname() {
  15. return sname;
  16. }
  17. public void setSname(String sname) {
  18. this.sname = sname;
  19. }
  20. public int getScount() {
  21. return scount;
  22. }
  23. public void setScount(int scount) {
  24. this.scount = scount;
  25. }
  26.  
  27. }

Stock.java

②我们创建小配置。Stock.hbm.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC
  3. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  4. "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  5. <hibernate-mapping package="cn.happy.beans">
  6. <class name="Stock" table="Stock">
  7. <id name="sid">
  8. <generator class="native"></generator>
  9. </id>
  10. <property name="sname"/>
  11. <property name="scount" column="COUNT"/>
  12. </class>
  13.  
  14. </hibernate-mapping>

Stock.hbm.xml

2.搭建DAO层:

①创建Stock接口

  1. /**
  2. * Stock接口
  3. */
  4. public interface IStockDAO {
  5. public int addStock(Stock stock);
  6. }

IStockDAO

②实现接口

  1. import java.io.Serializable;
  2.  
  3. import org.hibernate.SessionFactory;
  4. import org.hibernate.classic.Session;
  5. import org.springframework.jdbc.core.support.JdbcDaoSupport;
  6.  
  7. import cn.happy.beans.Stock;
  8. import cn.happy.dao.IStockDAO;
  9.  
  10. public class StockDAOImpl implements IStockDAO{
  11. //在这里定义一个SessionFactory变量
  12. private SessionFactory sessionFactory;
  13.  
  14. @Override
  15. public int addStock(Stock stock) {
  16. Session session = sessionFactory.getCurrentSession();
  17. Serializable count=session.save(stock);
  18. Integer cc=(Integer)count;
  19. return cc.intValue();
  20. }
  21.  
  22. public SessionFactory getSessionFactory() {
  23. return sessionFactory;
  24. }
  25.  
  26. public void setSessionFactory(SessionFactory sessionFactory) {
  27. this.sessionFactory = sessionFactory;
  28. }
  29.  
  30. }

StockDAOImpl

3.搭建Service服务层:

①创建接口StockService

  1. public interface IStockService {
  2. public int saveStock(Stock stock);
  3. }

IStockService

②实现上面的接口

  1. public class StockServiceImpl implements IStockService {
  2. //服务层 需要一个dao的对象
  3. private IStockDAO dao;
  4.  
  5. @Override
  6. public int saveStock(Stock stock) {
  7. return dao.addStock(stock);
  8. }
  9. public IStockDAO getDao() {
  10. return dao;
  11. }
  12. public void setDao(IStockDAO dao) {
  13. this.dao = dao;
  14. }
  15.  
  16. }

StockServiceImpl

4.搭建action层

  1. public class StockAction extends ActionSupport implements ModelDriven<Stock>{
  2. private Stock stock;
  3. private IStockService service;
  4. //重点代码:在无参构造中new一个Stock对象。
  5. private StockAction(){
  6. stock=new Stock();
  7. }
  8. //execute()方法是ActionSupport的一个方法。save()一条数据;判断是否插入一条记录。要是count大于0,证明页面有一条数据插入。成功跳入index.jsp页面。否则跳入add.jsp页面。
  9. public String execute(){
  10. int count = service.saveStock(stock);
  11. if (count>0) {
  12. return SUCCESS;
  13. }else {
  14. return INPUT;
  15. }
  16. }
  17. //getModel是ModelDriven<Stock>的一个方法
  18. @Override
  19. public Stock getModel() {
  20. return stock;
  21. }
  22. public Stock getStock() {
  23. return stock;
  24. }
  25. public void setStock(Stock stock) {
  26. this.stock = stock;
  27. }
  28.  
  29. public IStockService getService() {
  30. return service;
  31. }
  32.  
  33. public void setService(IStockService service) {
  34. this.service = service;
  35. }
  36. }

StockAction继承ActionSupport并且实现ModelDriven

5.搭建两个jsp页面:

  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6.  
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>">
  11.  
  12. <title>My JSP 'index.jsp' starting page</title>
  13. </head>
  14.  
  15. <body>
  16. <form action="addStock" method="post">
  17. 股票名称:<input type="text" name="sname"/>
  18. 股票股数:<input type="text" name="scount"/>
  19. <input type="submit" value="提交"/>
  20. </form>
  21. </body>
  22. </html>

add.jsp页面(插入数据页面)

  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6.  
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>">
  11.  
  12. <title>My JSP 'index.jsp' starting page</title>
  13. </head>
  14.  
  15. <body>
  16. 成功页面
  17. </body>
  18. </html>

index.jsp(成功页面)

6.创建Struts.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
  4. "http://struts.apache.org/dtds/struts-2.3.dtd">
  5. <struts>
  6. <package name="default" namespace="/" extends="struts-default">
  7. <action name="addStock" class="stockAction">
  8. <result name="success">/index.jsp</result>
  9. <result name="input">/add.jsp</result>
  10. </action>
  11.  
  12. </package>
  13. </struts>

struts.xml

7.创建连接具体数据库:本案例用Mysql数据库为例:搭建jdbc.properties

  1. jdbc.driver=com.mysql.jdbc.Driver
  2. jdbc.url=jdbc\:mysql\:///test
  3. jdbc.username=wu
  4. jdbc.password=xuan

jdbc.properties

8.创建大配置applicationContext.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:aop="http://www.springframework.org/schema/aop"
  4. xmlns:tx="http://www.springframework.org/schema/tx"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  7. xsi:schemaLocation="
  8. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  9. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
  10. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
  11. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
  12. ">
  13. <!-- 01.C3p0 数据源 -->
  14. <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  15. <!-- 设值注入,本质上使用的是类的set方法 -->
  16. <property name="driverClass" value="${jdbc.driver}"></property>
  17. <property name="jdbcUrl" value="${jdbc.url}"></property>
  18. <property name="user" value="${jdbc.username}"></property>
  19. <property name="password" value="${jdbc.password}"></property>
  20. </bean>
  21.  
  22. <!-- 方式二:找到jdbc.peroperties文件 -->
  23. <context:property-placeholder location="classpath:jdbc.properties"/>
  24.  
  25. <!-- 1.1 SessionFactory -->
  26. <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  27. <property name="dataSource" ref="dataSource" ></property>
  28. <property name="hibernateProperties">
  29. <props>
  30. <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
  31. <prop key="hibernate.show_sql">true</prop>
  32. <prop key="hibernate.format_sql">true</prop>
  33. <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate3.SpringSessionContext</prop>
  34. </props>
  35. </property>
  36.  
  37. <property name="mappingLocations" value="classpath:cn/happy/beans/Stock.hbm.xml"></property>
  38. </bean>
  39.  
  40. <!-- dao -->
  41. <bean id="stockDao" class="cn.happy.dao.impl.StockDAOImpl">
  42. <property name="sessionFactory" ref="sessionFactory"></property>
  43. </bean>
  44.  
  45. <!-- service -->
  46. <bean id="stockService" class="cn.happy.service.impl.StockServiceImpl">
  47. <property name="dao" ref="stockDao"></property>
  48. </bean>
  49.  
  50. <!-- action -->
  51. <bean id="stockAction" class="cn.happy.action.StockAction">
  52. <property name="service" ref="stockService"></property>
  53. </bean>
  54.  
  55. <!-- 事务;能让多个操作做为一个整体,同生共死 荣辱与共 DataSourceTransactionManager-->
  56. <!-- 01.事务管理器 -->
  57. <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  58. <!-- 必须配置数据源 -->
  59. <property name="sessionFactory" ref="sessionFactory"></property>
  60. </bean>
  61.  
  62. <!-- 第三种:AspectJ AOP 配置事务 -->
  63. <tx:advice id="txAdvice" transaction-manager="transactionManager">
  64. <tx:attributes>
  65. <tx:method name="save*" isolation="DEFAULT" propagation="REQUIRED"/>
  66. </tx:attributes>
  67. </tx:advice>
  68.  
  69. <!-- 具体的AOP -->
  70. <aop:config>
  71. <aop:pointcut expression="execution(* *..service.*.*(..))" id="pointCut"/>
  72. <aop:advisor advice-ref="txAdvice" pointcut-ref="pointCut"/>
  73.  
  74. </aop:config>
  75.  
  76. </beans>

applicationContext.xml

9.该项目已经成功搭建完毕。可以做一个单测。(该步骤可以省略)

  1. //购买股票测试
  2. @Test
  3. public void addStockTest() {
  4. ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
  5. IStockService service=(IStockService)ctx.getBean("stockService");
  6. Stock stock=new Stock();
  7. stock.setSname("Y2162基金");
  8. stock.setScount(23);
  9. service.saveStock(stock);
  10. System.out.println("OK!");
  11. }

MyTest测试类

10.启动项目:

成功插入数据:

SSH-Hibernate+Struts2+Spring的股票项目整合的更多相关文章

  1. Spring与Web项目整合的原理

    引言: 在刚开始我们接触IOC时,我们加载并启用SpringIOC是通过如下代码手动加载 applicationContext.xml 文件,new出context对象,完成Bean的创建和属性的注入 ...

  2. Eclipse搭建SSH(Struts2+Spring+Hibernate)框架教程

    | 版权声明:本文为博主原创文章,未经博主允许不得转载. 前言 确实,刚创博客,对于这个陌生的东西还是有些许淡然.这是我的第一篇博文,希望能给你们有帮助,这就是我最大的乐趣! 好了下面进入正题: SS ...

  3. struts2+spring的两种整合方式

    也许有些人会因为学习了struts1,会以为struts2.struts1与spring的整合也是一样的,其实这两者相差甚远.下面就来讲解一下struts2与spring的整合两种方案.(部分转载,里 ...

  4. Struts2,Hibernate和Spring之间的框架整合关系

    1.首先要认清,hibernate和struts没有半点关系,所以他们之间没有任何可以整合的东西.a:struts 作为中心控制器,肯定要调用一些类来完成一些逻辑.而hibernate开发中,经常使用 ...

  5. Eclipse搭建SSH框架(Struts2+Spring+Hibernate)

    见识少的我经过一天多的研究才知道,在MyEclipse中搭好的框架的配置文件和jar包是通用的.接下来——亮剑! 工具:Eclipse+Tomcat+Mysql 一.先在Eclipse中配置好Tomc ...

  6. 用MyEclipse搭建SSH框架(Struts2 Spring Hibernate)

    1.new一个web project. 2.右键项目,为项目添加Struts支持. 点击Finish.src目录下多了struts.xml配置文件. 3.使用MyEclipse DataBase Ex ...

  7. java利用myeclipse自带三大框架搭建三大框架(Hibernate+Struts2+Spring)过程详解

    搭建过程因人而异,我的搭建过程大致是这样的: 1.创建一个javaweb项目: 2.导入Spring框架,上图: 2.1: 2.2: 2.3: 3.导入struts2框架,上图: 3.1: 3.2: ...

  8. IDEA整合Mybatis+Struts2+Spring (二)--整合框架

    二.搭建目录结构 我这里列出的是搭建完了之后所有的目录和文件,诸位先把目录文件建起来,然后我在给出文件内容 这里的目录建好之后还需要设置一下,让idea识别目录作用,选择File-Project St ...

  9. Spring boot实战项目整合阿里云RocketMQ (非开源版)消息队列实现发送普通消息,延时消息 --附代码

    一.为什么选择RocketMQ消息队列? 首先RocketMQ是阿里巴巴自研出来的,也已开源.其性能和稳定性从双11就能看出来,借用阿里的一句官方介绍:历年双 11 购物狂欢节零点千万级 TPS.万亿 ...

随机推荐

  1. 深入研究Java类装载机制

    目录 1.为什么要研究java类装在机制? 2.了解类装载机制,对于我们在项目开发中有什么作用? 3.装载实现细节. 4.总结 一.为什么药研究Java类装载机制 java类加载机制,便于我们使用自定 ...

  2. [moka同学笔记]使用composer 安装yii2以及遇到的问题

    [一.Yii2安装过程] 使用composer安装,composer安装请参考其他博客 1.下载 Yii2 高级模板 跟普通模板一样 , 可以通过 Composer 和 github 下载 ,不过官方 ...

  3. ExpandableListView实现展开更多和收起更多

    [需求]: 如上面图示 当点开某个一级菜单的时候,其他菜单收起: 子级菜单默认最多5个: 多于5个的显示"展开更多" 点击"展开更多",展开该级所有子级菜单,同 ...

  4. 【工匠大道】svn使用总结

    原文地址 SVN(Subversion)是一个自由.开源的项目源代码版本控制工具.目前,绝大多数开源软件和企业代码管理,都使用SVN作为代码版本管理软件. Subversion将文件存放在中心版本库里 ...

  5. 三道简单的前端HTML/CSS题目

    使用CSS为多个网页进行相同风格的布局和外观设置时,为了方便对这些网页进行修改,最好使用( ).http://hovertree.com/shortanswer/bjae/7bd72acca32068 ...

  6. 【单页应用】理解MVC

    前言 之前我们为view引入了wrapperSet的概念,想以此解决view局部刷新问题,后来发现这个方案不太合理 view里面插入了业务相关的代码,事实上这个是应该剥离出去,业务的需求千奇百怪,我们 ...

  7. JavaScript 变量声明提前

    <JavaScript权威指南>中指出:JavaScript变量在声明之前已经可用,JavaScript的这个特性被非正式的称为声明提前(hoisting),即JavaScript函数中声 ...

  8. ASP.NET Mvc实用框架(一)Ioc、仓储模式和单元工作模式

    Framework.EF 首先看一下这个类库: Extended文件夹存放的是EntityFramework.Extensions这个插件的源代码,没有别的原因,就是本人觉得这个插件挺好的,每次省的下 ...

  9. HTML5学习之 开发工具

    Notepad++.Editplus 是常用的开发编辑器.这些在Window系统下,比较容易找到,但是在MAC系统下,有的是收费的,有的是不支持.我开发的时候,用的是TextWrangler,如图: ...

  10. IBatis.Net项目数据库SqlServer迁移至Oracle经验

    最近完成了一个(IBatis.Net+MVC)项目的数据库+代码迁移工作,可把我折腾得~~~ IBatis.Net是一个ORM框架,具体介绍可以问度娘.我之前没用ORM框架使用经验,所以这一路我不是走 ...