SHH框架搭建
2017-01-13 22:32
134 查看
创建WEB项目并引入相应的jar包
在/ASSH/WebRoot/WEB-INF/lib目录下面放置需要的jar包Struts2的jar包
下载好struts2包后,打开
struts-2.3.24\apps找到
struts2-blank.war使用压缩软件打开,在
struts2-blank.rar\WEB-INF\lib目录下所有的包拷贝到项目的
lib目录下
打开
struts-2.3.24\struts-2.3.24-lib目录下找到下面两个
jar包
struts2-convention-plugin-2.3.24.jar:支持struts2的注解的jar包
struts2-spring-plugin-2.3.24.jar:支持spring整合的jar包,一般情况下可有可无,在引入spring的时候也会有这样一个类似的jar包,两个jar包任选一个就可以了
Hibernate的jar包
hibernate所有的jar包
日志记录,整合log4j的jar包
slf4j-api-1.6.1.jar
slf4j-log4j12-1.7.5.jar
Spring的jar包
ioc:spring-beans-4.0.5.RELEASE.jar
spring-context-4.0.5.RELEASE.jar
spring-core-4.0.5.RELEASE.jar
spring-expression-4.0.5.RELEASE.jar
AOP:
spring-aop-4.0.5.RELEASE.jar
spring-aspects-4.0.5.RELEASE.jar
com.springsource.org.aopalliance-1.0.0.jar
com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
事务管理的包:
spring-tx-3.2.0.RELEASE.jar
spring-jdbc-3.2.0.RELEASEjar
整合hibernate的包:
spring-orm-4.0.5.RELEASE.jar
整合WEB项目:
spring-web-4.0.5.RELEASE.jar
整合Junit单元测试:
spring-test-4.0.5.RELEASE.jar
c3p0连接池:
com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar
SHH框架整合实例
上面引入所需要的各种jar包之后,还需要创建各个框架所必须的配置文档。目的:创建数据库
ssh和
product表用来存放数据。在页面中输入商品名称和价格,然后点击提交按钮,将数据提交至数据库中并保存。
hibernate负责将接收到的数据保存至数据库中,struts2负责业务的具体逻辑操作的执行,spring负责解耦和注入。
项目结构
action:负责执行业务逻辑service:负责业务逻辑
dao:负责数据库层逻辑操作
AsshDemo -src |_ com.bart.shh.action | |_ ProductAction.java |_ com.bart.shh.dao | |_ ProductDao.java |_ com.bart.shh.service | |_ ProductService.java |_ com.bart.shh.domain | |_ Product.java | |_ Product.hbm.xml |_ applicationContext.xml |_ jdbc.properties |_ log4j.properties |_ struts.xml - WebRoot |_ WEB_INF | |_ lib | |_ web.xml |_ index.jsp |_ addProduct.jsp
ProductAction.java
package com.bart.shh.action; import com.bart.shh.domain.Product; import com.bart.shh.service.ProductService; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; /** *商品管理的Action类 * */ public class ProductAction extends ActionSupport implements ModelDriven<Product>{ //模型驱动使用的类 private Product product = new Product(); public Product getModel() { // TODO Auto-generated method stub return product; } //Struts2和Spring整合过程中按名称自动注入的业务层类 private ProductService productService; public void setProductService(ProductService productService) { this.productService = productService; } /** * 保存方法 * */ public String save(){ System.out.println("Action的save方法执行了..."); //调用service的save方法 productService.save(product); return NONE; } }
ProductDao.java
package com.bart.shh.dao; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.bart.shh.domain.Product; /** * 商品实体DAO类 */ public class ProductDao extends HibernateDaoSupport{ /* * 保存 * */ public void save(Product product) { System.out.println("DAO层的save方法..."); //利用模板的方法保存 this.getHibernateTemplate().save(product); } }
Product.java
package com.bart.shh.domain; public class Product { 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; } private Integer pid; private String pname; private Double price; }
Product.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.bart.shh.domain.Product" table="product"> <id name="pid" column="pid"> <generator class="native"></generator> </id> <property name="pname" column="pname" length="20" /> <property name="price" column="price" /> </class> </hibernate-mapping>
ProductService
package com.bart.shh.service; import org.springframework.transaction.annotation.Transactional; import com.bart.shh.dao.ProductDao; import com.bart.shh.domain.Product; /** * 商品管理的服务类 * */ @Transactional public class ProductService { //注入 private ProductDao productDao; public void setProductDao(ProductDao productDao) { this.productDao = productDao; } /** *Service的save方法 **/ public void save(Product product){ System.out.println("Service层执行了save方法..."); productDao.save(product); } }
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.driverClass}"/> <property name="jdbcUrl" value="${jdbc.url}"/& 11d69 gt; <property name="user" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> <!-- 配置Hibernate的相关属性效果等同于hibernate.cfg.xml --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <!-- 注入连接池 --> <property name="dataSource" ref="dataSource"/> <!-- 配置属性 --> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> </props> </property> <!-- 配置mapping --> <property name="mappingResources" > <list> <value>com/bart/shh/domain/Product.hbm.xml</value> </list> </property> </bean> <!-- Action层 使用Spring 管理action--> <bean id="productAction" class="com.bart.shh.action.ProductAction"> <property name="productService" ref="productService"/> </bean> <!-- DAO层 --> <bean id="productDao" class="com.bart.shh.dao.ProductDao"> <!-- 使用spring提供的 模板 首先需要注入--> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <!-- 配置业务层的类 --> <bean id="productService" class="com.bart.shh.service.ProductService"> <property name="productDao" ref="productDao"></property> </bean> <!-- 配置事务管理 --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <!-- 开始事务注解 --> <tx:annotation-driven transaction-manager="transactionManager"/> </beans>
jdbc.properties
jdbc.username=root jdbc.password= jdbc.url=jdbc:mysql://localhost:3306/ssh?useUnicode=true&characterEncoding=utf8 jdbc.driverClass=com.mysql.jdbc.Driver
log4j.properties
# Configure logging for testing: optionally with log file log4j.rootLogger=WARN, stdout # log4j.rootLogger=WARN, stdout, logfile log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n log4j.appender.logfile=org.apache.log4j.FileAppender log4j.appender.logfile.File=target/spring.log log4j.appender.logfile.layout=org.apache.log4j.PatternLayout log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
strust.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" extends="struts-default" namespace="/"> <!-- class="com.bart.shh.action.ProductAction":使用struts2管理action class="productAction":使用Spring管理action --> <action name="product_*" method="{1}" class="productAction"> </action> </package> <constant name="struts.i18n.encoding" value="UTF-8"></constant> </struts>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- 配置Spring框架的核心监听器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <!-- 配置Struts2框架的核心过滤器 --> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <display-name></display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
addProduct.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!-- 引入struts2的 标签表达式 --> <%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>添加商品页面</title> </head> <body> <h1>添加商品</h1> <s:form action="product_save" method="post" namespace="/" theme="simple"> <table border="2" width="400"> <tr> <td>商品名称</td> <td><s:textfield name="pname"/></td> </tr> <tr> <td>商品价格</td> <td><s:textfield name="price"/></td> </tr> <tr> <td colspan="2"><s:submit value="提交"/></td> </tr> </table> </s:form> </body> </html>
测试:
网页中输入:http://127.0.0.1:8080/AsshDemo/addProduct.jsp
输入数据并提交:
控制台输出
Action的save方法执行了... Service层执行了save方法... DAO层的save方法... Hibernate: insert into product (pname, price) values (?, ?)
查看数据库
mysql> select * from product; +-----+-------+-------+ | pid | pname | price | +-----+-------+-------+ | 1 | ??? | 2300 | | 2 | ??? | 2300 | | 3 | tv | 2300 | +-----+-------+-------+
提示插入成功,显示问号是因为编码问题,设置好网页编码格式后解决。
相关文章推荐
- JAVA SHH框架搭建(多图)
- SHH框架的搭建
- SHH框架的搭建
- struts+spring+hibernate基本项目框架的搭建(3)--Struts校验框架的使用
- 用JSF+Spring+IBatis搭建一个简单的框架
- struts+spring+hibernate基本项目框架的搭建(1)
- Struts 2框架搭建(Hello World)
- Direct3D入门之框架的搭建
- 搭建系统框架发现的三个Web.Config问题
- JSON 超级快速入门 完 搭建一个超级不规范的REST框架
- java web后台开发SSM框架(Spring+SpringMVC+MyBaitis)搭建与优化
- 搭建系统框架发现的三个Web.Config问题
- 关于SSH集成框架的搭建步骤
- Spring2.5、Struts2、Ibatis开发框架搭建(三)
- JSON超级快速入门 后续 搭建REST框架技巧
- struts+spring+hibernate基本项目框架的搭建(2)
- SSH程序开发框架搭建过程
- Struts Spring Hibernate 框架搭建并测试完毕,小结
- 快速搭建ERP的框架
- Spring2.5、Struts2、Ibatis开发框架搭建之二