SSH整合


一、Struts2框架:

Web层框架:
1.引入Struts2开发的jar包:
    Struts2/apps/struts2-blank.war
  * WEB-INF/lib/*.jar
  * struts2和spring整合的jar包:
* struts2-spring-plugin-2.3.15.3.jar :整合spring
* struts2-json-plugin-2.3.15.3.jar :整合AJAX 
* struts2-convention-plugin-2.3.15.3.jar :使用struts2的注解开发.

2.Struts2开发的配置文件:
web.xml
* 配置核心过滤器:
    <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>

struts.xml
* 

3.Struts2开发步骤:
请求---->Action
public class BookAction extends ActionSupport implements ModelDriven<Book>{
// 处理请求:
<span style="white-space:pre">	</span>public String add(){
<span style="white-space:pre">		</span>WebApplicationContext wac = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
<span style="white-space:pre">		</span>wac.getBean(“bookService”);
<span style="white-space:pre">		</span>return “addSuccess”
<span style="white-space:pre">	</span>}

}

二、Spring框架:

业务层框架:


1.引入Spring的jar包:
Spring3.2 开发最基本jar包
spring-beans-3.2.0.RELEASE.jar
spring-context-3.2.0.RELEASE.jar
spring-core-3.2.0.RELEASE.jar
spring-expression-3.2.0.RELEASE.jar
com.springsource.org.apache.commons.logging-1.1.1.jar
com.springsource.org.apache.log4j-1.2.15.jar
AOP开发
spring-aop-3.2.0.RELEASE.jar
spring-aspects-3.2.0.RELEASE.jar
com.springsource.org.aopalliance-1.0.0.jar
com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
Spring Jdbc开发
spring-jdbc-3.2.0.RELEASE.jar
spring-tx-3.2.0.RELEASE.jar
Spring事务管理
spring-tx-3.2.0.RELEASE.jar
Spring整合其他ORM框架
spring-orm-3.2.0.RELEASE.jar
Spring在web中使用
spring-web-3.2.0.RELEASE.jar
Spring整合Junit测试
spring-test-3.2.0.RELEASE.jar

* 数据库连接池在Hibernate框架中引入:


2.引入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
* 引入约束:

log4j.properties:

3.Spring开发步骤:
1.注入Dao

2.事务的管理:(见上一篇)


三、Hibernate框架:

持久层框架:


1.引入Hibernate的开发的jar包:
hibernate3.jar
lib/required/*.jar
jpa/*.jar
Mysql驱动
C3P0连接池

slf4j整合log4j的jar.


2.Hibernate需要的配置文件:
hibernate.cfg.xml
映射文件:

3.Hibernate的开发步骤:
Configuration cfg = new Configuration().configure();
SessionFactory sessionFactory = cfg.buildSessionFactory();
Session session = sessionFactory.getCurrentSession();
Transaction tx = session.beginTransaction();


操作...


tx.commit();


四、Struts2和Spring的整合:

修改struts.xml

<span style="white-space:pre">	</span><package name="default" namespace="/" extends="struts-default">
		<action name="book_*" class="cn.itcast.ssh.action.BookAction" method="{1}"></action>
	</package>


Struts2整合Spring方式一:


* Action由Struts2自己创建.
* 通过Struts2常量完成自动装配(按名称)
* 1.在Action中提供一个Service的对象.
* 2.对对象属性提供set方法即可.


Struts2整合Spring方式二:(推荐:)


* Action的类交给Spring管理.通过一个伪类名调用Spring中的Action的名称
<span style="white-space:pre">	</span><!-- Action类的配置===========- -->
	<bean id="bookAction" class="cn.itcast.ssh.action.BookAction"></bean>

* 在Struts.xml中
<span style="white-space:pre">	</span><action name="book_*" class="bookAction" method="{1}"></action>

* 必须在Spring中手动注入Service:
<span style="white-space:pre">	</span><bean id="bookAction" class="cn.itcast.ssh.action.BookAction">
		<property name="bookService" ref="bookService"/>
	</bean>

* 千万注意:Struts2框架创建Action的时候是多例的.将Action交给Spring管理了,Spring创建类的时候,创建是单例.scope=”singleton”.单例会有线程安全问题!!!
       * scope="prototype"

五、Spring整合Hibernate

使用Hibernate配置,在Spring中直接引入Hibernate的配置文件.

1.创建一个BookDao:
2.实体的映射文件:

* Book.hbm.xml
<hibernate-mapping>
	<class name="cn.itcast.ssh.vo.Book" table="book">
		<id name="id">
			<generator class="native"/>
		</id>
		
		<property name="name"/>
		<property name="price"/>
	</class>
</hibernate-mapping>
* 引入映射文件:
3.在Spring的配置文件中直接引入Hibernate的配置文件:
<span style="white-space:pre">	</span><!-- 引入Hibernate的配置文件 -->
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="configLocation" value="classpath:hibernate.cfg.xml"/>
	</bean>

4.编写DAO中代码完成对数据库插入操作:
* DAO中使用Hiberante. Spring框架提供了HibernateTemplate.
* 在DAO中使用HibernateTemplate.将Hiberante的模板注入到DAO中.
* 在Dao的类上继承HibernateDaoSupport类.
* 只需要在DAO中注入SessionFactory就可以了.

5.把Dao注入给Service:

6.配置事务管理:

<span style="white-space:pre">	</span><!-- 事务管理器 -->
	<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"/>
	</bean>

7.注解驱动:

<span style="white-space:pre">	</span><tx:annotation-driven transaction-manager="transactionManager"/>
8.使用到事务的类上添加一个注解:

@Transactional


将Hibernate的配置信息交给Spring管理:(不要hibernate的配置文件)


1.hibernate的配置文件中:
* 数据库连接基本参数:(连接池)
* 可选属性:
* 映射配置:
2.把Hibernate的配置信息交给Spring进行管理:
<span style="white-space:pre">	</span><!-- 配置连接池:  -->
	<!-- 引入外部属性文件 -->
	<context:property-placeholder location="classpath:jdbc.properties"/>
	
	<!-- c3p0连接池的配置: -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="driverClass" value="${jdbc.driver}"/>
		<property name="jdbcUrl" value="${jdbc.url}"/>
		<property name="user" value="${jdbc.user}"/>
		<property name="password" value="${jdbc.password}"/>
	</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.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>
		<!-- 配置引入映射文件 -->
		<property name="mappingResources">
			<list>
				<value>cn/itcast/ssh/vo/Book.hbm.xml</value>
			</list>
		</property>
	</bean>

六、 HibernateTemplate的API的使用:

 Serializable save(Object entity) :保存操作
 void update(Object entity) :修改操作
 void delete(Object entity) :删除操作
 <T> T get(Class<T> entityClass, Serializable id) :根据ID查询对象,立即检索
 <T> T load(Class<T> entityClass, Serializable id) :根据ID查询对象,延迟检索
 List find(String queryString, Object... values) :根据HQL查询
 List findByCriteria(DetachedCriteria criteria)  :根据离线条件查询
 List findByNamedQuery(String queryName, Object... values):命名查询


评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值