SSH整合!!!!不会的赶紧来

说到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备注博客园即可获取~

时间: 2024-10-16 05:32:06

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

SSH整合基础

1.Spring整合Hibernate 整合步骤 导包 配置appliactionContext.xml 创建实体类和映射关系文件 创建DAO接口及实现类 声明DAO组件,注入SessionFactory 2.Spring整合Struts2 导包 配置web.xml 配置applicationContext.xml,开启注解扫描 创建并声明Action 配置Action 创建JSP 3.整合的基本原理 Struts原本使用StrutsObjectFactory来读取struts.xml,根据ac

SSH整合开发时Scope为默认时现象与原理

1.前提知识 1)scope默认值 进行SSH整合开发时,Struts2的action需要用spring容器进行管理,只要涉及到类以bean的形式入到spring容器中,不管是xml配置还是使用注解方式进行配置,都会涉及到spring管理bean的scope,其一共有五种取值,而其默认值为singleton,也就是单例模型,所有对此bean引用为同一个对象. 2)action应为多例 struts2作为MVC中视图(View)层框架,其最主要任务就是接收用户请求,然后调用业务逻辑层进行处理,这种

Spring(八)SSH整合简述

一.Spring与Struts2的整合 1.1.整合步骤 1.2.配置web.xml 1.3.配置spring配置文件applicationContext.xml 1.4.配置struts配置文件 1.5.Action继承ActionSupport类 二.spring与hibernate整合 2.1.步骤 2.2.注入sessionFactory <--数据源--> <bean id="dataSource" class="org.springframewo

SSH整合(配置方式)

工程目录: /SSH1/src/cn/itcast/domain/Book.java package cn.itcast.domain; /** * 图书 */ public class Book { private Integer id; // 图书编号 private String name; // 图书名称 private Double price; // 图书价格 public Integer getId() { return id; } public void setId(Intege

mysql+ssh整合例子,附源码下载

项目引用jar下载:http://download.csdn.net/detail/adam_zs/7262727 项目源码下载地址:http://download.csdn.net/detail/adam_zs/7262749 今天花时间把ssh整合了一下,重新再学习一下,希望对大家有所帮助! 我用的是mysql数据库,建表语句比较简单就不贴出来了,建表的时候记的设置id为自动增加哦. 项目文件位置,项目引用jar包 项目配置文件 web.xml <?xml version="1.0&q

SSH整合(1)异常

信息: No Spring WebApplicationInitializer types detected on classpath 十二月 01, 2016 10:06:12 下午 org.apache.catalina.core.ApplicationContext log 信息: Initializing Spring root WebApplicationContext log4j:WARN No appenders could be found for logger (org.spr

ssh整合例子

今天给大家介绍一下最新版本的SSH(struts2.2.1+ hibernate3.6+spring3.0.5)组合.注意本讲解为手工搭建! 一.为SSH做好准备 struts2-2.2.1-all.zip       hibernate-distribution-3.6.0.Final-dist.zip spring-framework-3.0.5.RELEASE.zip spring-framework-2.5.6-with-dependencies.zip slf4j-1.6.1.zip 

SSH整合之全注解

  SSH整合之全注解 使用注解配置,需要我们额外引入以下jar包 我们下面从实体层开始替换注解 1 package cn.hmy.beans; 2 3 import javax.persistence.Entity; 4 import javax.persistence.GeneratedValue; 5 import javax.persistence.Id; 6 import javax.persistence.Table; 7 8 @Entity 9 @Table 10 public c

从MVC和三层架构说到SSH整合开发

相信很多人都认同JavaWeb开发是遵从MVC开发模式的,遵从三层架构进行开发的,是的,大家都这么认同.但是相信大家都会有过这样一个疑问,if(MVC三层模式==三层架构思想)out.println(“请继续观看……”) 1.MVC(MODEL-VIEW-CONTROLLER)设计模式: 首先让我们了解下MVC(Model-View-Controller)的概念: MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写

【Java EE 学习第58-67天】【OA项目练习】【SSH整合JBPM工作流】【JBPM项目实战】

一.SSH整合JBPM JBPM基础见http://www.cnblogs.com/kuangdaoyizhimei/p/4981551.html 现在将要实现SSH和JBPM的整合. 1.添加jar包 (1)jbpm项目/lib目录下的所有jar包和根目录下的jbpm.jar包放入/WEB-INF/lib文件夹下,同时删除tomcat服务器/lib文件夹中的el-api.jar包. 注意:必须删除el-api.jar包,该jar包和jbpm项目中需要使用到的三个jar包冲突了:juel-api