SSH框架的整合 (配置)

需要的jar 包

在这里插入图片描述
(如果jar包有冲突,保留高级版本的,删除低级版本的)

spring + struts 2

配置 web.xml

<!-- 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>*.action</url-pattern>
  </filter-mapping>
  
  <!-- Spring的配置 -->
	<context-param>
	    <param-name>contextConfigLocation</param-name>
	    <param-value>classpath:config/spring.xml,classpath:config/springDao.xml</param-value>
	</context-param>
	<listener>
	    <listener-class>
	        org.springframework.web.context.ContextLoaderListener
	    </listener-class>
	</listener>

struts 2 的配置

<package name="default" namespace="/" extends="json-default">
		<action name="registerPostAction" class="registerPostAction_">
			<result name="input">/WEB-INF/pages/welcome.jsp</result>
			<result name="success">/WEB-INF/pages/register.jsp</result>
		</action>
</package>

struts 2 下的 class属性的值不再是Action类的全限定名,
而是Spring配置文件中相应的Action Bean的名称

spring + hibernate

hibernate 的配置

<session-factory>
		<!-- 数据库链接配置 -->
		<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
		<!-- 在控制台输出sql语句 -->
		<property name="show_sql">true</property>
		<!-- 格式化sql语句 -->
		<property name="format_sql">true</property>
		<!-- 数据库生成策略 -->
		<property name="hibernate.hbm2ddl.auto">update</property>
	</session-factory>

springDao 的配置

<!-- 配置c3p0连接池属性 -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
		<property name="driverClass" value="com.mysql.jdbc.Driver" />
		<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/vote" />
		<property name="user" value="root" />
		<property name="password" value="123456" />
		<!-- 队列中的最小连接数 -->
		<property name="minPoolSize" value="15"></property>
		<!-- 队列中的最大连接数 -->
		<property name="maxPoolSize" value="25"></property>
		<!-- 当连接耗尽时创建的连接数 -->
		<property name="acquireIncrement" value="15"></property>
		<!-- 等待时间 -->
		<property name="checkoutTimeout" value="10000"></property>
		<!-- 初始化连接数 -->
		<property name="initialPoolSize" value="20"></property>
		<!-- 最大空闲时间,超出时间连接将被丢弃 -->
		<property name="maxIdleTime" value="20"></property>
		<!-- 每隔60秒检测空闲连接 -->
		<property name="idleConnectionTestPeriod" value="60000"></property>
	</bean>
		
	<!-- session工厂由spring来管理 -->
	<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" >
	<!-- 加载数据源对象,spring的配置方式 -->
	<property name="dataSource" ref="dataSource"/>
	<!-- 读取hibernate配置信息,hibernate配置方式 -->
	<property name="configLocation" value="classpath:config/hibernate.xml" />
	<!-- 自动加载映射文件 *表示匹配该文件下的所有映射文件 -->
	<property name="mappingLocations" value="classpath:com/znsd/vote/hibernate/entitys/mapping/*.hbm.xml" >
	</property>
	</bean>
	
	<!-- 配置事务 -->
	<bean id="txManager"
		class="org.springframework.orm.hibernate4.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

	<!-- 事务的通知方式 -->
	<tx:advice id="txAdvice" transaction-manager="txManager">
		<tx:attributes>
			<tx:method name="find*" propagation="REQUIRED" read-only="true" />
			<tx:method name="search*" propagation="REQUIRED" read-only="true" />
			<tx:method name="query*" propagation="REQUIRED" read-only="true" />

			<tx:method name="add*" propagation="REQUIRED" />
			<tx:method name="submit*" propagation="REQUIRED" />
			<tx:method name="save*" propagation="REQUIRED" />
			<tx:method name="insert*" propagation="REQUIRED" />

			<tx:method name="del*" propagation="REQUIRED" />
			<tx:method name="remove*" propagation="REQUIRED" />

			<tx:method name="update*" propagation="REQUIRED" />
			<tx:method name="modify*" propagation="REQUIRED" />

			<tx:method name="*" propagation="REQUIRED" read-only="false" />
		</tx:attributes>
	</tx:advice>

	<!-- AOP切面拦截事务,事务一定是加在业务层 -->
	<aop:config>
		<aop:pointcut id="serviceMethod"
			expression="execution(* com.znsd.vote.service.*.*.*(..))" />
		<aop:advisor advice-ref="txAdvice"
			pointcut-ref="serviceMethod" />
	</aop:config>
连接池有两种配置方案
在springDao文件中配置。
在hibernate.cfg.xml文件配置。

Spring可以简化Hibernate编码

public class BaseDaoImpl<T> extends HibernateDaoSupport implements BaseDao<T> {
	//实现添加的方法
	@Override
	public Serializable save(T entity) {
		return getHibernateTemplate().save(entity);
	}

	//实现删除的方法
	@Override
	public void delete(T entity) {
		getHibernateTemplate().delete(entity);
	}

	//根据id来删除的方法
	@Override
	public void delete(Class<T> clazz, Serializable id) {
		T t = (T) getHibernateTemplate().get(clazz, id);
		getHibernateTemplate().delete(t);
	}

	//实现更新的方法
	@Override
	public void update(T entity) {
		getHibernateTemplate().update(entity);
	}

	//根据id来获取对象
	@Override
	public T get(Class<T> clazz, Serializable id) {
		return getHibernateTemplate().get(clazz, id);
	}

	//实现查询所有数据的方法
	@Override
	public List<T> findAll(Class<T> clazz) {
		String hql = "from " + clazz.getName();
		return (List<T>) this.getHibernateTemplate().find(hql, null);
	}

	//实现根据条件查询的方法
	@Override
	public List<T> findAll(Class<T> clazz, String where, Object[] paras) {
		String hql = "from " + clazz.getName() + " where " + where;
		return (List<T>) this.getHibernateTemplate().find(hql, paras);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值