ssh框架搭建

本文详细介绍了一个基于Spring、Struts2和Hibernate(SSH)框架的整合案例,包括导入依赖、配置文件、日志管理、数据库映射等内容,并提供了Action、Service、DAO等组件的具体实现示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导入依赖:

<dependencies>

        <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->

<dependency>

    <groupId>org.hibernate</groupId>

    <artifactId>hibernate-core</artifactId>

    <version>5.2.10.Final</version>

</dependency>

       <dependency>

    <groupId>mysql</groupId>

    <artifactId>mysql-connector-java</artifactId>

    <version>5.1.40</version>

</dependency>

<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-c3p0 -->

<dependency>

    <groupId>org.hibernate</groupId>

    <artifactId>hibernate-c3p0</artifactId>

    <version>5.2.10.Final</version>

</dependency>

<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-ehcache -->

<dependency>

    <groupId>org.hibernate</groupId>

    <artifactId>hibernate-ehcache</artifactId>

    <version>5.2.10.Final</version>

</dependency>

<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->

<dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-context</artifactId>

    <version>4.3.9.RELEASE</version>

</dependency>

<!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->

<dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-test</artifactId>

    <version>4.3.9.RELEASE</version>

</dependency>

 <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-orm</artifactId>

    <version>4.3.9.RELEASE</version>

</dependency>

<dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-web</artifactId>

    <version>4.3.9.RELEASE</version>

</dependency>

<dependency>

    <groupId>org.aspectj</groupId>

    <artifactId>aspectjweaver</artifactId>

    <version>1.8.10</version>

</dependency>

<!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-core -->

<dependency>

    <groupId>org.apache.struts</groupId>

    <artifactId>struts2-core</artifactId>

    <version>2.5.13</version>

</dependency>

<!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-json-plugin -->

<dependency>

    <groupId>org.apache.struts</groupId>

    <artifactId>struts2-json-plugin</artifactId>

    <version>2.5.13</version>

</dependency>

        <dependency>

<groupId>net.sf.json-lib</groupId>

<artifactId>json-lib</artifactId>

<version>2.4</version>

    <classifier>jdk15</classifier> 

</dependency>

<!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-convention-plugin -->

<dependency>

    <groupId>org.apache.struts</groupId>

    <artifactId>struts2-convention-plugin</artifactId>

    <version>2.5.13</version>

</dependency>

<!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-spring-plugin -->

<dependency>

    <groupId>org.apache.struts</groupId>

    <artifactId>struts2-spring-plugin</artifactId>

    <version>2.5.13</version>

</dependency>

  </dependencies>

Struts2配置:

配置web.xml

<!-- Struts2框架的核心过滤器配置 -->

<filter>

<filter-name>struts</filter-name>

<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>

</filter>

 

<filter-mapping>

<filter-name>struts</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

创建struts.xml

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

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"

    "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>
</struts>

Spring配置文件

配置web.xml文件

<!-- 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>  

创建applicationContext.xml和日志文件log4j2.xml

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"

xmlns:util="http://www.springframework.org/schema/util"

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-4.3.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd

http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd

http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.3.xsd">

 
</beans>

日志文件log4j2.xml

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

<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->

创建包结构


Spring整合Struts2

Struts管理Action

配置struts.xml

此时method={1}中的{1}代表product_*中的*。最后,如果访问/product_save,则通配符就是save,表明执行ProductAction中的save方法,如果访问/product_update,通配符就是update,那么久执行ProductAction的update方法。 
name中含有多个通配符的时候,method={2} ,就代表第二个通配符,同理以此类推。

<!-- struts管理Action可根据struts和spring联合包完成Service类的按名称注入 -->

   <package name="xpl" extends="struts-default" namespace="/" >

   <action name="product_*" class="com.xpl.action.ProductAction" method="{1}">

   </action>

   </package>

Spring管理Action类(建议用这种可以使用springAOP

配置applicationContext.xml

<!-- spring管理Action类 -->

<bean id="productAction" class="com.xpl.action.ProductAction" scope="prototype">

<!-- 手动注入Service类 -->

<property name="productService" ref="productService"/>

</bean>

struts.xml中的配置改为

<package name="xpl" extends="struts-default" namespace="/" >

   <action name="product_*" class="productAction" method="{1}">

   </action>

   </package>

ServiceDao类管理(spring管理)

配置applicationContext.xml

<!-- 配置业务层的类 -->

<bean id="productService" class="com.xpl.service.ProductService">

<property name="productDao" ref="productDao" />

</bean>    

    <!--配置Dao的类  -->

    <bean id="productDao" class="com.xpl.dao.ProductDao">

    </bean>

Spring整合Hibernate

创建本地数据库和映射文件product.hbn.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="com.xpl.model.Product" table="product">

  <id name="pid" column="pid">

  <generator class="native" />

  </id>

  <property name="pname" column="pname" length="20" />

  <property name="price" column="price" />

  </class>

  </hibernate-mapping>

dataSource.properties文件

driverClass=com.mysql.jdbc.Driver

jdbcUrl=jdbc:mysql://localhost:3306/ssh

user=root

password=root

initialPoolSize=10

配置applicationContext.xml文件

<!-- 引入外部的属性文件 -->

<context:property-placeholder location="classpath:dataSource.properties"/>

<!-- 配置连接池 -->

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">

<property name="driverClass" value="${driverClass}"/>

<property name="jdbcUrl" value="${jdbcUrl}"/>

<property name="user" value="${user}" />

<property name="password" value="${password}" />

<property name="initialPoolSize" value="${initialPoolSize}"></property>

</bean>

<!-- 配置Hibernate的相关属性 -->

<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">

<!-- 注入连接池 -->

<property name="dataSource" ref="dataSource" />

<!-- 配置Hibernate的属性 -->

<property name="hibernateProperties">

<props>

<!-- MySQL5.5以上的版本方言设置需加个5否则不会自动建表 -->

<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</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>com/xpl/model/product.hbn.xml</value>

</list>

</property>

</bean>

编写Dao代码编写

Dao中的类继承org.springframework.orm.hibernate5.support.HibernateDaoSupport这个类

applicationContext.xml,在配置Dao的时候注入sessionFactory

<!--配置Dao的类  -->

    <bean id="productDao" class="com.xpl.dao.ProductDao">

    <property name="sessionFactory" ref="sessionFactory" />

    </bean>

Dao中调用模板完成保存的操作

public void save(Product product) {

System.out.println("Dao中的save方法执行了。。。");

this.getHibernateTemplate().save(product);

}

事务管理:

<!-- 配置事务管理器 -->

<bean id="" class="org.springframework.orm.hibernate5.HibernateTransactionManager">

<property name="sessionFactory" ref="sessionFactory"></property>

</bean>

<!-- 开启注解事务 -->

<tx:annotation-driven transaction-manager="transactionManager"/>

service类上方加入注解@Transactional

@Transactional

public class ProductService

Action示例:

package com.xpl.action;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.xpl.model.Product;
import com.xpl.service.ProductService;

/**
 * 商品管理的Action类
 * @author xpl
 *
 */
public class ProductAction extends ActionSupport implements ModelDriven<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;
		}
	/**
	 * 保存商品的执行的方法:save
	 */
	public String save() {
		System.out.println("Action中的save方法执行了 。。");
		productService.save(product);
		return NONE;
	}
		
}

Dao示例:

package com.xpl.dao;

import org.springframework.orm.hibernate5.HibernateTemplate;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;

import com.xpl.model.Product;

/**
 * 商品管理的Dao类
 * @author xpl
 *
 */
public class ProductDao extends HibernateDaoSupport{
	
	/**
	 * Dao中的保存商品的方法
	 * @param product
	 */
	public void save(Product product) {
		System.out.println("Dao中的save方法执行了。。。");
		
		this.getHibernateTemplate().save(product);
		
	}

}

映射文件示例:

<?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="com.xpl.model.Product" table="product">
  		<id name="pid" column="pid">
  		<generator class="native" />
  		</id>
  		
  		<property name="pname" column="pname" length="20" />
  		<property name="price" column="price" />
  	</class>
  </hibernate-mapping>

Service示例:

package com.xpl.service;

import javax.transaction.Transactional;

import com.xpl.dao.ProductDao;
import com.xpl.model.Product;

/**
 * 商品管理的Service(业务类)类
 * @author xpl
 *
 */
@Transactional
public class ProductService {
	//业务层注入Dao的类
	private ProductDao productDao;
	
	public void setProductDao(ProductDao productDao) {
		this.productDao = productDao;
	}
	
/**
 * 业务层保存商品的方法
 * @param product
 */
	public void save(Product product) {
		System.out.println("Service中的save方法执行了。。");
		productDao.save(product);
		
	}
}
jsp页面示例:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ 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>Insert title here</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" /></td>	
		</tr>
		<tr>
			<td>商品价格</td>
			<td><s:textfield name="price" /></td>	
		</tr>
		<tr>
			<td colspan="2"><input type="submit" value="添加" /></td>	
		</tr>
	</table>
</s:form>
</body>
</html>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值