`
空指针异常
  • 浏览: 21557 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

SSH整合时知识点

ssh 
阅读更多
本文采用struts2.3.16+hibernate3.6+spring3.2.8进行整合

jar包列表
  • antlr-2.7.6.jar
  • aopalliance-1.0.jar
  • asm-3.3.jar
  • asm-commons-3.3.jar
  • aspectjweaver.jar
  • commons-collections-3.1.jar
  • commons-dbcp-1.2.1.jar
  • commons-fileupload-1.3.1.jar
  • commons-io-2.2.jar
  • commons-lang3-3.1.jar
  • commons-logging-api.jar
  • commons-logging.jar
  • commons-pool-1.2.jar
  • dom4j-1.6.1.jar
  • freemarker-2.3.19.jar
  • hibernate-jpa-2.0-api-1.0.1.Final.jar
  • hibernate3.jar
  • javassist-3.18.1-GA.jar
  • jta-1.1.jar
  • mysql-connector-5.1.8.jar
  • ognl-3.0.6.jar
  • slf4j-api-1.6.1.jar
  • spring-aop-3.2.8.RELEASE.jar
  • spring-beans-3.2.8.RELEASE.jar
  • spring-context-3.2.8.RELEASE.jar
  • spring-context-support-3.2.8.RELEASE.jar
  • spring-core-3.2.8.RELEASE.jar
  • spring-expression-3.2.8.RELEASE.jar
  • spring-jdbc-3.2.8.RELEASE.jar
  • spring-orm-3.2.8.RELEASE.jar
  • spring-tx-3.2.8.RELEASE.jar
  • spring-web-3.2.8.RELEASE.jar
  • struts2-convention-plugin-2.3.16.1.jar
  • struts2-core-2.3.16.1.jar
  • struts2-spring-plugin-2.3.16.1.jar
  • xwork-core-2.3.16.1.jar


web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>SSH1</display-name>
  
  <!-- 
   当hibernate采用懒加载时需要用到此过滤器,位于struts过滤器之前,
   因为必须等struts处理完JSP后才能关闭session;如果spring没有配置
   事务边界,则openSessionInView会认为所有事务为readonly,进行增删
   改动作时会报错     
  -->
  <filter>
  	<filter-name>openSessionInView</filter-name>
  	<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
        <!-- 查看源码可知,可过滤器依赖名字为“sessionFactory”的bean,
             如果默认名字不是“sessionFactory”,需要加如下初始化参数。 
        -->
  	<init-param>
  		<param-name>sessionFactoryBeanName</param-name>
  		<param-value>sf</param-value>
  	</init-param>
  </filter>
  
  <filter-mapping>
  	<filter-name>openSessionInView</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>
  
  <!-- spring容器初始化 -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  
  <!-- 加载的配置文件,具体参考spring的文章 -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:beans.xml</param-value>
  </context-param>
</web-app>


另外几个注意点
1.struts2集成spring需加入struts-spring-plugin-2.3.16.jar,在此jar包中有个struts-plugin.xml,其中有个属性为struts.objectfactory=spring。
3.action有两种产生方式
3.1 由struts产生,会自动产生多实例
     action中的属性会自动按照name注入(对应struts-spring.xml的属性为struts.objectfactory.spring.autowire=name),如果存在对应名字的bean,则属性不需要加@resource注解;如果不存在相应的名字的bean,则会注入失败,此时应该加上@Resource。或者将struts.objectfactory.spring.autowire=type。
     action示例注解如下:
    
     @Action(value="userAction",
     results={@Result(name="list",location="/listuser.jsp")})
     

3.2 由spring产生
     action交由spring管理。示例如下:
    
 
     @Controller("userAction")
     @Scope("prototype")
     @Action(className="userAction",value="userAction"
             results={@Result(name="list",location="/listuser.jsp")})
     

     注意scope注解必须加,以及@Action中加className代表引用的spring容器的bean
4.中文问题,有如下几种办法
  a.在struts2.1.6以上版本,直接找struts默认配置文件default.properties文件中的常量struts.i18n.encoding,看看此属性的值是什么,默认是UTF-8,注意JSP也要是UTF-8。
  b.如果是struts2.1.6以下版本,可以自己写fitler(参考spring的实现)或者用spring提供的过滤器。
    
<filter>
  	<filter-name>encodingFilter</filter-name>
  	<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  </filter>
  
    <filter-mapping>
  	<filter-name>encodingFilter</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics