您的位置:首页 > 编程语言 > Java开发

Spring整合Struts 2,以及Spring中Bean的作用域问题

2016-06-24 16:44 555 查看
一、Spring整合Struts 2(底层用hibernate)

1.添加jar:Struts 2的jar包,Spring3.0
core,  Spring3.0 web  ,  spring 3.0 aop,struts-spring-plugin-xxxx.jar


2.Struts 2的核心过滤器StrutsPrepareAndExecuteFilter的配置问题

3.Web.xml查找Spring容器信息:

方法一:默认在web-info下,此时不用配置;

方法二:当放在src下时配置web.xml文件:

 <context-param>

   <param-name>contextConfigLocation</param-name>

   <param-value>classpath:applicationContext.xml</param-value>

 </context-param>

4.web.xml:监听器用于在web环境中启动Spring容器

<listener>

    <listener-class>org.springframework.web.context.ContextLoaderListener

    </listener-class>

</listener>

5.web.xml:过滤器OpenSessionInViewFilter:把一个Hibernate Session和一次完整的请求过程相绑定
 注意:1. 该过滤器要配置在Struts 2核心控制器之前     2.
若Spring中定义的SessionFactory Bean的id不是sessionFactory,则需要为该过滤器配置sessionFactoryBeanName<init-param>参数


 <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>sf</param-value>

  </init-param>

 </filter>

<filter-mapping>

    <filter-name>OpenSessionInViewFilter</filter-name>

    <url-pattern>/*</url-pattern>

</filter-mapping>

6.常规步骤:

服务启动,加载web.xml(启动Spring容器)--------表单提交--------web.xml中struts2核心过滤器拦截--------发送给action调用业务处理并返回字符串

7.struts.xml:

<package name="default"  extends="struts-default" namespace="/">

     <action name="login" class="userAction" method="login">

       <result>/index.jsp</result>

       <result name="input">/login.jsp</result>

     </action>

 </package>

8.applicationContext.xml文件注入Action中的信息:

方法一:常规

方法二:bean id="userBiz"和Action中的set方法一致

<bean id="userBiz" class="com.yh.ssh.biz.impl.UserBiz" >

    <property name="userDao" ref="userDao"></property>

</bean>

<bean id="userAction" class="com.yh.ssh.action.UserAction">

    <property name="userBiz" ref="userBiz"></property>

</bean>

9.Spring中Bean的作用域

a. <bean id="userAction" class="cn.bdqn.jboa.action.UserAction" scope="prototype">
singleton 默认值。Spring以单例模式创建Bean的实例,即容器中该Bean的实例只有一个
prototype 每次从容器中获取Bean时,都会创建一个新的实例
request 用于Web应用环境,针对每次HTTP请求都会创建一个实例
session 用于Web应用环境,同一个会话共享同一个实例,不同的会话使用不同的实例
global session仅在Portlet的Web应用中使用,同一个全局会话共享一个实例。对于非Portlet环境,等同于session
    
b. 使用Web环境下的作用域,要在web.xml文件中配置RequestContextListener或RequestContextFilter
 <listener>  
            <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>  
 </listener>  
 
10.UserAction:

public class UserAction extends ActionSupport {

private Users u;

private IUserBiz userBiz;

public void setUserBiz(IUserBiz userBiz) {

this.userBiz = userBiz;

}

public String login() {

Users user = userBiz.login(u);

if (user != null)

return SUCCESS;

else

return INPUT;

}

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring struts2.0