`
longgangbai
  • 浏览: 7339592 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

在项目中SSH或SSH2中OpenSessionInViewFilter的配置顺序(实质过滤器的配置顺序)

阅读更多

   网上一些网友上在项目中SSH或SSH2中OpenSessionInViewFilter的配置顺序(实质过滤器的配置顺序),配置了但是报session关闭的错误,其实原因在Filter配置顺序的原因:

SSH2正确顺序:

OpenSessionInViewFilter

ActionContextCleanUp

FilterDispatcher

以及其他的Filter

 

配置:


 <filter>
  <filter-name>openSessionInViewFilter</filter-name>
  <filter-class>
   org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
  </filter-class>
  <init-param>
   <param-name>sessionFactoryBeanName</param-name>
   <param-value>hibernate.sessionFactory</param-value>
  </init-param>
 </filter>

 

 

注意:无论怎么配置OpenSessionInViewFilter的配置顺序很重要!!同时配置SessionFactory的名称。

 

 

 

struts/spring/hibernate的时候同样使用OpenSessionInView:

1.首先是web.xml

	<filter>
        <filter-name>OpenSessionInViewFilter</filter-name>
        <filter-class>org.springframework.orm.hibernate.support.OpenSessionInViewFilter</filter-class>
    </filter>
    
    <filter-mapping>
        <filter-name>OpenSessionInViewFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
    <listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

......

 

2. 然后是struts-config.xml:

<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
	<set-property property="contextConfigLocation" 
				  value="/WEB-INF/action-servlet.xml" 
	/>
</plug-in>

 

 

 

 

S2SH配置:

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-2.5.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
           http://www.springframework.org/schema/tx
		   http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
		   
	<context:component-scan base-package="com.fsj" /><!-- 启用自动扫描 -->
	<!-- 基于hibernate注解的sessionFactory -->
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="configLocation" value="classpath:hibernate.cfg.xml">
		</property>
	</bean>
	<!-- 基于hibernate的事务管理器 -->
	<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>
	<!-- 采用注解形式的声明式事务管理 -->
	<tx:annotation-driven transaction-manager="txManager"/>
	
</beans>

 

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">
	
	<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>
		
						
	<filter>
	        <filter-name>OpenSessionInViewFilter</filter-name>
	        <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
	</filter>
	<filter-mapping>
	        <filter-name>OpenSessionInViewFilter</filter-name>
	        <url-pattern>/*</url-pattern>
	</filter-mapping>
	
	<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>
		
	<filter>
		<filter-name>encoding</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encoding</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
		
</web-app>

 

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>

	<!-- 指定Web应用的默认编码集,相当于调用HttpServletRequest的setCharacterEncoding方法 -->
	<constant name="struts.i18n.encoding" value="UTF-8" />
	<!-- 设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭 -->
	<constant name="struts.serve.static.browserCache" value="false" />
	<!-- 当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开 -->
	<constant name="struts.configuration.xml.reload" value="true" />
	<!-- 开发模式下使用,这样可以打印出更详细的错误信息 -->
	<constant name="struts.devMode" value="true" />
	<!-- 默认的视图主题 -->
	<constant name="struts.ui.theme" value="simple" />
	<!-- 把action对象交给spring创建 -->
	<constant name="struts.objectFactory" value="spring" />

	<package name="myDefault" extends="struts-default">
		<default-action-ref name="indexPage" />
		<global-results>
			<result name="exceptionPage">/WEB-INF/exceptionPage.jsp
			</result>
		</global-results>
		<global-exception-mappings>
			<exception-mapping result="exceptionPage" exception="java.lang.Exception" />
		</global-exception-mappings>		
		<action name="indexPage">
			<result>/login.jsp</result>
		</action>
	</package>

	<package name="user" namespace="/user" extends="myDefault">
		<!-- 这里面的class不是指完整类路径,而是指在spring中定义的bean的名称 -->
		<action name="*UserAction" class="userAction" method="{1}">
			<result name="success">/WEB-INF/user/loginSuccess.jsp</result>
			<result name="input">/login.jsp</result>
		</action>
	</package>

</struts>

 

 

   项目中采用单一的SessionFactory,如果有多个SessionFactory该怎么办呢?希望牛人指点!!

 

 

分享到:
评论
1 楼 juliancg65 2010-03-01  
不知道是否解决,多sessionfactory的配置?

相关推荐

    ssh+flex配置

    9. **过滤器顺序**:在`web.xml`中,过滤器的执行顺序很重要。`OpenSessionInViewFilter`必须在`struts2`过滤器之前,以确保在处理请求时能正确地开启和关闭Hibernate Session。 10. **部署描述符** (`web.xml`):...

    ssh配置总结

    为了避免字符集问题,还可以在`web.xml`中配置`CharacterEncodingFilter`过滤器,强制所有HTTP请求使用UTF-8编码: ```xml &lt;filter-name&gt;characterEncoding &lt;filter-class&gt;org.springframework.web.filter....

    SSH框架整合模版,非常详细实用

    4. **配置过滤器**:在`web.xml`中配置Struts2过滤器和`OpenSessionInViewFilter`,确保请求处理流程正确。 5. **测试**:编写JUnit测试用例来验证各组件的正确集成和工作流程。 在实际项目中,SSH框架的整合不仅...

    ssh2开发步骤与项目实践宝典

    在SSH2开发中,首先需要配置`web.xml`文件,它是Servlet容器的核心配置文件,负责初始化应用上下文和设置过滤器。在给出的`web.xml`片段中,可以看到以下关键配置: 1. **Spring上下文初始化**:通过`...

    SSH整合环境 配置

    在Java Web开发中,SSH(Struts2、Spring和Hibernate)是一个常见的集成框架,用于构建高效、可扩展的Web应用程序。SSH整合涉及三个核心组件:Struts2负责控制层,Spring处理业务逻辑和依赖注入,而Hibernate则管理...

    dwr+ssh项目

    在web.xml中,需要配置Struts2的核心过滤器。 2. **Hibernate** - 作为持久层框架,负责数据库操作。通过SessionFactory和Session对象,管理数据库连接和事务。在web.xml中,可以配置`OpenSessionInViewFilter`来...

    SSH全注解环境搭建

    - 配置Struts2过滤器: ```xml &lt;filter-name&gt;struts2 &lt;filter-class&gt;org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter &lt;filter-name&gt;struts2 &lt;url-pattern&gt;/* ``` 2. **配置...

    javaSSH框架搭建配置

    为了让Hibernate在请求处理过程中自动打开和关闭Session,可以使用`OpenSessionInViewFilter`过滤器。 ```xml &lt;!--Hibernate Session自动开启--&gt; &lt;filter-name&gt;lazy &lt;filter-class&gt;org.springframework.orm....

    ssh基本配置过程,是struts2的

    - 修改`web.xml`,添加Struts2的过滤器配置: ```xml &lt;filter-name&gt;struts2 &lt;filter-class&gt;org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter &lt;filter-name&gt;struts2 ...

    SSH配置模板[参照].pdf

    在SSH配置中,SSH指的是Struts2、Spring和Hibernate三个开源框架的组合,它们协同工作以构建企业级的Java Web应用程序。Struts2负责MVC(模型-视图-控制器)架构,Spring提供依赖注入和事务管理,而Hibernate则作为...

    SSH配置模板[总结].pdf

    在软件开发中,SSH(Struts2、Spring、Hibernate)是一种常见的Java Web应用框架组合,用于构建高效、模块化的应用程序。SSH配置模板是开发者为了快速搭建项目结构和配置而创建的一种标准化文件,其中包含了这三大...

    ssh构架搭建步骤 (2).pdf

    - Spring提供了一个名为`OpenSessionInViewFilter`的过滤器,用于解决在Web应用中处理请求时的事务边界问题。它确保每个HTTP请求都有一个开启的Hibernate Session。 - 配置过滤器,并指定`sessionFactoryBeanName`...

    ssh配置文件

    在给定的文件信息中,虽然标题和描述指向了“SSH配置文件”,但【部分内容】却涉及到了Struts2、Spring、Hibernate这三个框架在Web项目中的集成与配置。因此,以下将围绕这部分内容进行深入解析,详细介绍如何在Web...

    搭建SSH框架步骤

    - 修改`web.xml`,添加Struts2的过滤器配置,确保请求能被Struts2拦截和处理。 7. **引入Struts2和Spring整合的库**: - 添加Struts2的核心库以及Spring与Struts2的整合包到项目的类路径中。 8. **配置Struts2**...

    OA项目SSH整合框架

    3,在web.xml中配置 spring 的 OpenSessionInView 过滤器(解决抛LazyInitializationException的问题) 1,配置 &lt;!-- 配置 spring 的 OpenSessionInView 过滤器 --&gt; &lt;filter-name&gt;OpenSessionInView ...

    SSH整合的配置文件详解

    在IT领域,特别是Java开发中,SSH(Struts、Spring、Hibernate)框架的整合是构建企业级应用的常见...通过本文的介绍,希望能帮助读者更深入地理解SSH框架整合的工作原理,从而在实际项目中更加熟练地运用这些技术。

    ssh2学习笔记

    - 配置`OpenSessionInViewFilter`过滤器,使得Hibernate会话与HTTP请求绑定在一起,便于处理数据库操作。 - 指定自定义的`struts.xml`文件位置,以及指定Struts2 Action的扫描路径。 - 配置Proxool的可视化监控...

    SSH整合的简单操作

    - 在`web.xml`中设置Spring的`ContextLoaderListener`监听器加载上下文,以及`OpenSessionInViewFilter`过滤器,确保每个请求都有一个打开的Session。 - 配置Struts2的Filter,确保请求匹配`.action`结尾的URL,...

Global site tag (gtag.js) - Google Analytics