日期:2014-05-20  浏览次数:20691 次

SSH框架的搭建
SSH框架的搭建
步骤:
1,构建一个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>

注意:1),由于从struts2.1.3之后的版本不再建议采用org.apache.struts2.dispatcher.FilterDispatcher,所以,我们最好配置成StrutsPrepareAndExecuteFilter或者StrutsExecuteFilter以及StrutsPrepareFilter,需要注意的是:如配置成StrutsExecuteFilter需要将StrutsPrepareFilter也配置上,否则将会报错。所以建议就只直接采用StrutsPrepareAndExecuteFilter。
2),将来配置OpenSessionInViewFilter,必须在struts2过滤器之前

2,添加struts配置文件。 在WEB-INF/classes目录下,新建struts.xml,模版如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
  "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>

</struts>

3,导入struts的核心包,发布到tomcat上去测试,服务器启动正常,说明配置成功
4,书写一个struts,action,然后测试
比如简单的login
5,配置hibernate
1) 创建Hibernate配置文件,hibernate.cfg.xml
2)配置表的映射文件
3)结合struts运行,注意操作框架的分层处理

6,配置Spring相关操作
1)首先修改web.xml文件,增加如下代码:
<!--
* 从类路径下加载spring的配置文件, 多个配置文件可以用逗号和空格区分
* classpath: 关键字特指类路径下加载-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
  classpath:applicationContext*.xml
</param-value>
</context-param>
 <!-- 开启监听 -->
  <listener>
  <listener-class> org.springframework.web.context.ContextLoaderListener
  </listener-class>
  </listener>
  <!-- 配置OpenSessionInViewFilter,必须在struts2监听之前 -->
  <filter>
  <filter-name>lazyLoadingFilter</filter-name>
  <filter-class> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
  </filter-class>
  </filter>
<filter-mapping>
  <filter-name>lazyLoadingFilter</filter-name>
  <url-pattern>*.action</url-pattern>
  </filter-mapping>

注意:OpenSessionInViewFilter:这主要是为了实现Hibernate的延迟加载功能。基于一个请求
一个hibernate session的原则。
spring中对OpenSessionInViewFilter的描述如下:
它是一个Servlet2.3过滤器,用来把一个Hibernate Session和一次完整的请求过程对应的线程相绑定。目的是为了实现"Open Session in View"的模式。
例如: 它允许在事务提交之后延迟加载显示所需要的对象。
这个过滤器和 HibernateInterceptor 有点类似:它是通过线程实现的。无论是没有事务的应用,还是有业务层事务的应用(通过HibernateTransactionManager 或
JtaTransactionManager的方式实现)它都适用。在后一种情况下,事务会自动采用由这个filter绑定的Session来进行相关的操作以及根据实际情况完成提交操作。

 
2)根据配置书写spring配置文件
3)书写一个测试类,测试spring的配置是否成功

7,整合structs框架
1)导入struts2-spring-plugin.jar
2) 配置web.xml文件。在web.xml中加入以下代码:
<listener>
<listener-class> org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
3)struts和Spring集成
1)将struts2.xml委托spring管理
<constant name="struts.objectFactory" value="spring"/>
2)将structs的action注入给spring
以struts示例中的login.action为例,首先创建一个LoginAction类的Bean。在applicationContext.xml中增加如下代码:
<bean id="loginAction" class="test.action.LoginAction" scope="prototype">
</bean>

这里,我们把这个bean的id设为loginAction。Scope设为prototype,含义是每一次请求创建一个LoginAction类的实例,Scope还有另一个值“singleton”意为“单例模式”。
接下来修改struts.xml文件,把原来login.action的配置做如下修改:
把<action name="login" class=" test.action.LoginAction ">
改为
<action name="login" class="loginAction"> 

8,整合hibernate框架