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;
}
}
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;
}
}
相关文章推荐
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- Spring和ThreadLocal
- Spring Boot 开发微服务
- Spring AOP动态代理-切面
- Spring整合Quartz(JobDetailBean方式)
- Spring整合Quartz(JobDetailBean方式)
- 模拟Spring的简单实现
- Spring整合WebSocket应用示例(上)
- spring+html5实现安全传输随机数字密码键盘
- Spring中属性注入详解
- 监听器获取Spring配置文件的方法
- Java利用Sping框架编写RPC远程过程调用服务的教程
- springmvc 发送ajax出现中文乱码的解决方法汇总
- SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
- 详解Java的MyBatis框架和Spring框架的整合运用
- struts2 spring整合fieldError问题
- spring的jdbctemplate的crud的基类dao