說到SSH也就是Spring,struts2,Hibernate三大框架那麼我們話很少說開始搭建吧html
首先咱們這個項目的目的是應用三大框架將一個商品的信息保存到數據庫中。java
第一步就是建立Web項目,引入相應的Jar包:spring
Struts2框架開發的相應jar包sql
Spring框架開發的相應jar包數據庫
Hibernate框架開發的相應的jar包apache
本項目整合共用到43個jar包你們能夠看本身需求,如下是項目Jar包構圖session
第二步咱們就開始搭建項目架構
項目架構圖:oracle
這裏爲了單純實現效果沒有定義接口類不過同樣能夠達成最後實現的效果!你們能夠放心去try!app
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備註博客園便可獲取~