SSH-Hibernate+Struts2+Spring的股票项目整合
创建项目之前:我们需要导入我们需要的Hibernate和Struts2和Spring的相关架包。(博客自创,如有问题请留言博主,拒绝盗版,支持正版http://www.cnblogs.com/WuXuanKun/)
项目架构图:
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
我们需要搭建各个层:层次如上右图
1.搭建beans层:
①创建一个实体类Stock。
- /**
- * 股票类
- */
- public class Stock {
- private int sid; //股票编号
- private String sname;//股票名称
- private int scount; //股数
- public int getSid() {
- return sid;
- }
- public void setSid(int sid) {
- this.sid = sid;
- }
- public String getSname() {
- return sname;
- }
- public void setSname(String sname) {
- this.sname = sname;
- }
- public int getScount() {
- return scount;
- }
- public void setScount(int scount) {
- this.scount = scount;
- }
- }
Stock.java
②我们创建小配置。Stock.hbm.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
- <hibernate-mapping package="cn.happy.beans">
- <class name="Stock" table="Stock">
- <id name="sid">
- <generator class="native"></generator>
- </id>
- <property name="sname"/>
- <property name="scount" column="COUNT"/>
- </class>
- </hibernate-mapping>
Stock.hbm.xml
2.搭建DAO层:
①创建Stock接口
- /**
- * Stock接口
- */
- public interface IStockDAO {
- public int addStock(Stock stock);
- }
IStockDAO
②实现接口
- import java.io.Serializable;
- import org.hibernate.SessionFactory;
- import org.hibernate.classic.Session;
- import org.springframework.jdbc.core.support.JdbcDaoSupport;
- import cn.happy.beans.Stock;
- import cn.happy.dao.IStockDAO;
- public class StockDAOImpl implements IStockDAO{
- //在这里定义一个SessionFactory变量
- private SessionFactory sessionFactory;
- @Override
- public int addStock(Stock stock) {
- Session session = sessionFactory.getCurrentSession();
- Serializable count=session.save(stock);
- Integer cc=(Integer)count;
- return cc.intValue();
- }
- public SessionFactory getSessionFactory() {
- return sessionFactory;
- }
- public void setSessionFactory(SessionFactory sessionFactory) {
- this.sessionFactory = sessionFactory;
- }
- }
StockDAOImpl
3.搭建Service服务层:
①创建接口StockService
- public interface IStockService {
- public int saveStock(Stock stock);
- }
IStockService
②实现上面的接口
- public class StockServiceImpl implements IStockService {
- //服务层 需要一个dao的对象
- private IStockDAO dao;
- @Override
- public int saveStock(Stock stock) {
- return dao.addStock(stock);
- }
- public IStockDAO getDao() {
- return dao;
- }
- public void setDao(IStockDAO dao) {
- this.dao = dao;
- }
- }
StockServiceImpl
4.搭建action层
- public class StockAction extends ActionSupport implements ModelDriven<Stock>{
- private Stock stock;
- private IStockService service;
- //重点代码:在无参构造中new一个Stock对象。
- private StockAction(){
- stock=new Stock();
- }
- //execute()方法是ActionSupport的一个方法。save()一条数据;判断是否插入一条记录。要是count大于0,证明页面有一条数据插入。成功跳入index.jsp页面。否则跳入add.jsp页面。
- public String execute(){
- int count = service.saveStock(stock);
- if (count>0) {
- return SUCCESS;
- }else {
- return INPUT;
- }
- }
- //getModel是ModelDriven<Stock>的一个方法
- @Override
- public Stock getModel() {
- return stock;
- }
- public Stock getStock() {
- return stock;
- }
- public void setStock(Stock stock) {
- this.stock = stock;
- }
- public IStockService getService() {
- return service;
- }
- public void setService(IStockService service) {
- this.service = service;
- }
- }
StockAction继承ActionSupport并且实现ModelDriven
5.搭建两个jsp页面:
- <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
- <%
- 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>
- <form action="addStock" method="post">
- 股票名称:<input type="text" name="sname"/>
- 股票股数:<input type="text" name="scount"/>
- <input type="submit" value="提交"/>
- </form>
- </body>
- </html>
add.jsp页面(插入数据页面)
- <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
- <%
- 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>
- 成功页面
- </body>
- </html>
index.jsp(成功页面)
6.创建Struts.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
- "http://struts.apache.org/dtds/struts-2.3.dtd">
- <struts>
- <package name="default" namespace="/" extends="struts-default">
- <action name="addStock" class="stockAction">
- <result name="success">/index.jsp</result>
- <result name="input">/add.jsp</result>
- </action>
- </package>
- </struts>
struts.xml
7.创建连接具体数据库:本案例用Mysql数据库为例:搭建jdbc.properties
- jdbc.driver=com.mysql.jdbc.Driver
- jdbc.url=jdbc\:mysql\:///test
- jdbc.username=wu
- jdbc.password=xuan
jdbc.properties
8.创建大配置applicationContext.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xmlns:tx="http://www.springframework.org/schema/tx"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
- ">
- <!-- 01.C3p0 数据源 -->
- <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
- <!-- 设值注入,本质上使用的是类的set方法 -->
- <property name="driverClass" value="${jdbc.driver}"></property>
- <property name="jdbcUrl" value="${jdbc.url}"></property>
- <property name="user" value="${jdbc.username}"></property>
- <property name="password" value="${jdbc.password}"></property>
- </bean>
- <!-- 方式二:找到jdbc.peroperties文件 -->
- <context:property-placeholder location="classpath:jdbc.properties"/>
- <!-- 1.1 SessionFactory -->
- <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <property name="dataSource" ref="dataSource" ></property>
- <property name="hibernateProperties">
- <props>
- <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
- <prop key="hibernate.show_sql">true</prop>
- <prop key="hibernate.format_sql">true</prop>
- <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate3.SpringSessionContext</prop>
- </props>
- </property>
- <property name="mappingLocations" value="classpath:cn/happy/beans/Stock.hbm.xml"></property>
- </bean>
- <!-- dao -->
- <bean id="stockDao" class="cn.happy.dao.impl.StockDAOImpl">
- <property name="sessionFactory" ref="sessionFactory"></property>
- </bean>
- <!-- service -->
- <bean id="stockService" class="cn.happy.service.impl.StockServiceImpl">
- <property name="dao" ref="stockDao"></property>
- </bean>
- <!-- action -->
- <bean id="stockAction" class="cn.happy.action.StockAction">
- <property name="service" ref="stockService"></property>
- </bean>
- <!-- 事务;能让多个操作做为一个整体,同生共死 荣辱与共 DataSourceTransactionManager-->
- <!-- 01.事务管理器 -->
- <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
- <!-- 必须配置数据源 -->
- <property name="sessionFactory" ref="sessionFactory"></property>
- </bean>
- <!-- 第三种:AspectJ AOP 配置事务 -->
- <tx:advice id="txAdvice" transaction-manager="transactionManager">
- <tx:attributes>
- <tx:method name="save*" isolation="DEFAULT" propagation="REQUIRED"/>
- </tx:attributes>
- </tx:advice>
- <!-- 具体的AOP -->
- <aop:config>
- <aop:pointcut expression="execution(* *..service.*.*(..))" id="pointCut"/>
- <aop:advisor advice-ref="txAdvice" pointcut-ref="pointCut"/>
- </aop:config>
- </beans>
applicationContext.xml
9.该项目已经成功搭建完毕。可以做一个单测。(该步骤可以省略)
- //购买股票测试
- @Test
- public void addStockTest() {
- ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
- IStockService service=(IStockService)ctx.getBean("stockService");
- Stock stock=new Stock();
- stock.setSname("Y2162基金");
- stock.setScount(23);
- service.saveStock(stock);
- System.out.println("OK!");
- }
MyTest测试类
10.启动项目:
成功插入数据:
SSH-Hibernate+Struts2+Spring的股票项目整合的更多相关文章
- Spring与Web项目整合的原理
引言: 在刚开始我们接触IOC时,我们加载并启用SpringIOC是通过如下代码手动加载 applicationContext.xml 文件,new出context对象,完成Bean的创建和属性的注入 ...
- Eclipse搭建SSH(Struts2+Spring+Hibernate)框架教程
| 版权声明:本文为博主原创文章,未经博主允许不得转载. 前言 确实,刚创博客,对于这个陌生的东西还是有些许淡然.这是我的第一篇博文,希望能给你们有帮助,这就是我最大的乐趣! 好了下面进入正题: SS ...
- struts2+spring的两种整合方式
也许有些人会因为学习了struts1,会以为struts2.struts1与spring的整合也是一样的,其实这两者相差甚远.下面就来讲解一下struts2与spring的整合两种方案.(部分转载,里 ...
- Struts2,Hibernate和Spring之间的框架整合关系
1.首先要认清,hibernate和struts没有半点关系,所以他们之间没有任何可以整合的东西.a:struts 作为中心控制器,肯定要调用一些类来完成一些逻辑.而hibernate开发中,经常使用 ...
- Eclipse搭建SSH框架(Struts2+Spring+Hibernate)
见识少的我经过一天多的研究才知道,在MyEclipse中搭好的框架的配置文件和jar包是通用的.接下来——亮剑! 工具:Eclipse+Tomcat+Mysql 一.先在Eclipse中配置好Tomc ...
- 用MyEclipse搭建SSH框架(Struts2 Spring Hibernate)
1.new一个web project. 2.右键项目,为项目添加Struts支持. 点击Finish.src目录下多了struts.xml配置文件. 3.使用MyEclipse DataBase Ex ...
- java利用myeclipse自带三大框架搭建三大框架(Hibernate+Struts2+Spring)过程详解
搭建过程因人而异,我的搭建过程大致是这样的: 1.创建一个javaweb项目: 2.导入Spring框架,上图: 2.1: 2.2: 2.3: 3.导入struts2框架,上图: 3.1: 3.2: ...
- IDEA整合Mybatis+Struts2+Spring (二)--整合框架
二.搭建目录结构 我这里列出的是搭建完了之后所有的目录和文件,诸位先把目录文件建起来,然后我在给出文件内容 这里的目录建好之后还需要设置一下,让idea识别目录作用,选择File-Project St ...
- Spring boot实战项目整合阿里云RocketMQ (非开源版)消息队列实现发送普通消息,延时消息 --附代码
一.为什么选择RocketMQ消息队列? 首先RocketMQ是阿里巴巴自研出来的,也已开源.其性能和稳定性从双11就能看出来,借用阿里的一句官方介绍:历年双 11 购物狂欢节零点千万级 TPS.万亿 ...
随机推荐
- 深入研究Java类装载机制
目录 1.为什么要研究java类装在机制? 2.了解类装载机制,对于我们在项目开发中有什么作用? 3.装载实现细节. 4.总结 一.为什么药研究Java类装载机制 java类加载机制,便于我们使用自定 ...
- [moka同学笔记]使用composer 安装yii2以及遇到的问题
[一.Yii2安装过程] 使用composer安装,composer安装请参考其他博客 1.下载 Yii2 高级模板 跟普通模板一样 , 可以通过 Composer 和 github 下载 ,不过官方 ...
- ExpandableListView实现展开更多和收起更多
[需求]: 如上面图示 当点开某个一级菜单的时候,其他菜单收起: 子级菜单默认最多5个: 多于5个的显示"展开更多" 点击"展开更多",展开该级所有子级菜单,同 ...
- 【工匠大道】svn使用总结
原文地址 SVN(Subversion)是一个自由.开源的项目源代码版本控制工具.目前,绝大多数开源软件和企业代码管理,都使用SVN作为代码版本管理软件. Subversion将文件存放在中心版本库里 ...
- 三道简单的前端HTML/CSS题目
使用CSS为多个网页进行相同风格的布局和外观设置时,为了方便对这些网页进行修改,最好使用( ).http://hovertree.com/shortanswer/bjae/7bd72acca32068 ...
- 【单页应用】理解MVC
前言 之前我们为view引入了wrapperSet的概念,想以此解决view局部刷新问题,后来发现这个方案不太合理 view里面插入了业务相关的代码,事实上这个是应该剥离出去,业务的需求千奇百怪,我们 ...
- JavaScript 变量声明提前
<JavaScript权威指南>中指出:JavaScript变量在声明之前已经可用,JavaScript的这个特性被非正式的称为声明提前(hoisting),即JavaScript函数中声 ...
- ASP.NET Mvc实用框架(一)Ioc、仓储模式和单元工作模式
Framework.EF 首先看一下这个类库: Extended文件夹存放的是EntityFramework.Extensions这个插件的源代码,没有别的原因,就是本人觉得这个插件挺好的,每次省的下 ...
- HTML5学习之 开发工具
Notepad++.Editplus 是常用的开发编辑器.这些在Window系统下,比较容易找到,但是在MAC系统下,有的是收费的,有的是不支持.我开发的时候,用的是TextWrangler,如图: ...
- IBatis.Net项目数据库SqlServer迁移至Oracle经验
最近完成了一个(IBatis.Net+MVC)项目的数据库+代码迁移工作,可把我折腾得~~~ IBatis.Net是一个ORM框架,具体介绍可以问度娘.我之前没用ORM框架使用经验,所以这一路我不是走 ...