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

来源:互联网 发布:原知宏大野智 编辑:程序博客网 时间:2024/06/16 06:07

一、Spring整合Struts 2(底层用hibernate

1.添加jarStruts 2jar包,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 Beanid不是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.xmlstruts2核心过滤器拦截--------发送给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.SpringBean的作用域

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仅在PortletWeb应用中使用,同一个全局会话共享一个实例。对于非Portlet环境,等同于session     

b. 使用Web环境下的作用域,要在web.xml文件中配置RequestContextListenerRequestContextFilter

 <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;

}

}

 


0 0