说到SSH也就是Spring,struts2,Hibernate三大框架那么咱们话不多说开始搭建吧

首先我们这个项目的目的是应用三大框架将一个商品的信息保存到数据库中。

第一步就是创建Web项目,引入相应的Jar包:

Struts2框架开发的相应jar包

Spring框架开发的相应jar包

Hibernate框架开发的相应的jar包

本项目整合共用到43个jar包大家可以看自己需求,以下是项目Jar包构图

第二步我们就开始搭建项目

项目架构图:

这里为了单纯实现效果没有定义接口类不过一样可以达成最后实现的效果!大家可以放心去try!

1.1编写实体类Product类

package cn.ssh.domain;

public class Product {
private Integer pid; //商品编号
private String pname; //商品名称
private Double price; //商品价格

//get set 访问
public Integer getPid() {
return pid;
}
public void setPid(Integer pid) {
this.pid = pid;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
} }

1.2编写DAO类ProductDao

package cn.ssh.dao;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import cn.ssh.domain.Product;
import cn.ssh.service.ProductService; /**
* 商品管理的Dao类
* @author DaPeng
*
*/
public class ProductDao extends HibernateDaoSupport { public void save(Product product){
System.out.println("DAO中保存的方法执行了");
this.getHibernateTemplate().save(product); }
}

1.3编写业务类ProductService

package cn.ssh.service;

import org.springframework.transaction.annotation.Transactional;

import cn.ssh.dao.ProductDao;
import cn.ssh.domain.Product; /**
* 商品管理的业务层类
*
* @author DaPeng
*
*/
@Transactional
public class ProductService { // 业务层注入DAO的类
private ProductDao productDao; //get set 访问
public ProductDao getProductDao() {
return productDao;
}
public void setProductDao(ProductDao productDao) {
this.productDao = productDao;
}
//业务层中的保存方法
public void save(Product product){
System.out.println("Service中的方法执行了!");
productDao.save(product);
}
}

1.4编写action类ProductAction

package cn.ssh.action;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven; import cn.ssh.domain.Product;
import cn.ssh.service.ProductService; /**
* 商品管理的Action类
*
* @author DaPeng
*
*/
public class ProductAction extends ActionSupport implements
ModelDriven<Product> { // 创建一个Product对象 模型驱动需要使用的类
private Product product = new Product(); @Override
public Product getModel() { return product;
} // Struts和Spring整合过程中按名称自动注入的业务层类
private ProductService productService; public void setProductService(ProductService productService) {
this.productService = productService;
} public Product getProduct() {
return product;
} public void setProduct(Product product) {
this.product = product;
} public ProductService getProductService() {
return productService;
} /**
* 保存商品的方法
*/
public String save() {
System.out.println("Action中保存的方法执行了");
productService.save(product);
return null;
} }

项目的搭建就是这样了然后我们需要进行编写相关的配置文件

2.1配置ApplicationContext.xml

<?xml version="1.0" encoding="utf-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.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">
<!-- 引入外部属性文件 -->
<!-- <context:property-placeholder location="classpath:jdbc.properties"
/> --> <!-- c3p0数据源连接池 -->
<!-- <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<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> -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<!--数据源的配置 -->
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property>
<property name="username" value="bdqn"></property>
<property name="password" value="bdqn"></property>
</bean> <!-- 配置 Hibernate 的相关属性 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 注入连接池 -->
<property name="dataSource" ref="dataSource" />
<!-- 配置Hibernate属性 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<!-- 加载Hibernate映射文件 -->
<property name="mappingResources">
<list>
<value>cn/ssh/domain/Product.hbm.xml</value>
</list>
</property>
</bean> <!-- 配置Action类 action类交给Spring容易管理 -->
<bean id="productAction" class="cn.ssh.action.ProductAction"
scope="prototype">
<property name="productService" ref="productService"></property>
</bean>
<!-- 配置业务层的类 -->
<bean id="productService" class="cn.ssh.service.ProductService">
<property name="productDao" ref="productDao"></property>
</bean> <!-- 配置DAO的类 -->
<bean id="productDao" class="cn.ssh.dao.ProductDao">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 开启注解事务 -->
<tx:annotation-driven transaction-manager="transactionManager"/> </beans>

2.2配置struts文件

<?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="ssh" extends="struts-default" namespace="/">
<action name="product_*" class="productAction"
method="{1}"> </action>
</package>
</struts>

2.3配置Hibernate的Product.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>
<class name="cn.ssh.domain.Product" table="product">
<id name="pid" column="pid">
<!-- 主键自动生成策略 -->
<generator class="native"/>
</id>
<property name="pname" column="pname" length="32"></property>
<property name="price" column="price"></property>
</class>
</hibernate-mapping>

2.4如果你们想使用C3P0数据源来获取连接通道那就不能少了jdbc.properties

jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl
jdbc.username=****
jdbc.password=****

2.5配置log4j.properties

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=c\:mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ### set log levels - for more verbose logging change 'info' to 'debug' ### log4j.rootLogger=error, stdout

3.1搭建项目和配置文件这些就差不多完成了接下来我们需要搭建一个添加商品的界面addProduct.jsp

ps:由于框架中涉及到strut2框架所以页面中我采取了<s:from>标签

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<%
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 'addProduct.jsp' starting page</title> </head> <body>
<h1>保存商品的页面</h1>
<s:form action="product_save" method="post" namespace="/" theme="simple">
<table border="1" width="400">
<tr>
<td>商品名称</td>
<td><s:textfield name="pname"></s:textfield></td>
</tr>
<tr>
<td>商品价格</td>
<td><s:textfield name="price"></s:textfield></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="添加"></td>
</tr>
</table>
</s:form>
</body>
</html>

这样一个页面就画好了我们就可以开启Tomcat服务进行添加了

我们点击添加前往数据库中查看即可:

PS:其实三大框架整合并不难,反而为我们的程序省了很多的事情。项目素材及jar包需要的同学可以联系本人QQ1097503654备注博客园即可获取~

SSH整合!!!!不会的赶紧来的更多相关文章

  1. 三大框架SSH整合

    三大框架SSH整合 -------------------------------Spring整合Hibernate------------------------------- 一.为什么要整合Hi ...

  2. 【Java EE 学习 67 下】【OA项目练习】【SSH整合JBPM工作流】【JBPM项目实战】

    一.SSH整合JBPM JBPM基础见http://www.cnblogs.com/kuangdaoyizhimei/p/4981551.html 现在将要实现SSH和JBPM的整合. 1.添加jar ...

  3. SSH整合(struts2.3.24+hibernate3.6.10+spring4.3.2+mysql5.5+myeclipse8.5+tomcat6+jdk1.6)

    终于开始了ssh的整合,虽然现在比较推崇的是,ssm(springmvc+spring+mybatis)这种框架搭配确实比ssh有吸引力,因为一方面springmvc本身就是遵循spring标准,所以 ...

  4. SSH整合之全注解

    SSH整合之全注解 使用注解配置,需要我们额外引入以下jar包

  5. 用ssh整合时,用sessionfactory的getCurrentSession()获取不到session

    在用ssh整合时,一开始用的是getCurrentSession(),获取当前线程上的session,但是总是抛异常,不能获取. 后来用sessionfactory的openSession(),但是, ...

  6. SSH整合(1)异常

    信息: No Spring WebApplicationInitializer types detected on classpath 十二月 01, 2016 10:06:12 下午 org.apa ...

  7. Spring(八)SSH整合简述

    一.Spring与Struts2的整合 1.1.整合步骤 1.2.配置web.xml 1.3.配置spring配置文件applicationContext.xml 1.4.配置struts配置文件 1 ...

  8. SSH整合之spring整合hibernate

    SSH整合要导入的jar包: MySQL中创建数据库 create database ssh_db; ssh_db 一.spring整合hibernate带有配置文件hibernate.cfg.xml ...

  9. 【转载】Ssh整合开发介绍和简单的登入案例实现

    Ssh整合开发介绍和简单的登入案例实现 Ssh整合开发介绍和简单的登入案例实现 一  介绍: Ssh是strtus2-2.3.1.2+ spring-2.5.6+hibernate-3.6.8整合的开 ...

  10. 【转载】SSH整合使用步骤

    SSH整合使用步骤 由于刚开始学习SSH,其中的配置比较多,为了下次能够快速的进行配置,将SSH整合的过程记录下来,以便下次查阅. 软件环境:MyEclipse 9.0.Struts2.2.Sprin ...

随机推荐

  1. Maven中的DependencyManagement和Dependencies

    Maven 使用dependencyManagement 元素来提供了一种管理依赖版本号的方式.通常会在一个组织或者项目的最顶层的父POM 中看到dependencyManagement 元素.使用p ...

  2. 在input中实现点点点与当鼠标移上去时显示剩余的字

    项目中经常会遇到这个问题,在一个内容框中,由于框的宽度是固定的,但是里面的内容却有很多,那么这个时候需求里就要求第一,多余的字要以点点点的形式隐藏,第二,当鼠标移上去的时候要以title提示的方式显示 ...

  3. Java—Servlet技术

    1  Servlet 概述 Servlet简介——开发动态web资源的技术Sun公司在API提供了一个servlet接口,如开发一个java程序向浏览器输出数据:1)编写一个java类,实现servl ...

  4. CodeForces #368 div2 D Persistent Bookcase DFS

    题目链接:D Persistent Bookcase 题意:有一个n*m的书架,开始是空的,现在有k种操作: 1 x y 这个位置如果没书,放书. 2 x y 这个位置如果有书,拿走. 3 x 反转这 ...

  5. 基于任务的异步模式(TAP)

    Task .net 4.0为我们带来了Task的异步,我们有以下三种方法创建Task. 1,Task.Factory.StartNew,比较常用. 2,Task.Run,是.net 4.5中增加的. ...

  6. PHP字符串处理函数

    /* * 确定字符串长度 * int strlen(string str) * 比较两个字符串 * 1.strcmp函数对两个字符串进行二进制安全的比较,并区分大小写 * int strcmp(str ...

  7. 临界区 TRTLCriticalSection 和 TCriticalSection

    临界区对象TCriticalSection(Delphi) 与 TRtlCriticalSection 的区别 TRtlCriticalSection 是一个结构体,在windows单元中定义: 是I ...

  8. USACO 2014 JAN 滑雪录像

    2. 滑雪录像{silver题3} [问题描述] 冬奥会的电视时刻表包含N (1 <= N <= 150)个节目,每个节目都有开始和结束时间.农民约翰有两台录像机,请计算他最多可以录制多少 ...

  9. linux 安装python-setuptools

    > wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py > python ez_setup.py --ins ...

  10. DeepLearning之路 (五) CNN

    自今年七月份以来,一直在实验室负责卷积神经网络(Convolutional Neural Network,CNN),期间配置和使用过theano和cuda-convnet.cuda-convnet2. ...