strut1.X和spring整合的二种方法
来源:互联网 发布:安卓修改分辨率软件 编辑:程序博客网 时间:2024/05/16 05:23
第一种集成方法
原理:在Action中取得BeanFactory对象,然后通过BeanFactory获取业务逻辑对象
缺点:产生了依赖,spring的类在action中产生了依赖查找。(注意和依赖注入的区别(前者主动))。
1、spring和struts依赖库配置
* 配置struts
--拷贝struts类库和jstl类库
--修改web.xml文件来配置ActionServlet
--提供struts-config.xml文件
--提供国际化资源文件
* 配置spring
--拷贝spring类库
--提供spring配置文件
2、在struts的Action中调用如下代码取得BeanFactory
BeanFactory factory = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());
使用listener配置beanfactory,将其初始化交给servlet,使其维持在ServletContext中,节省资源。(Listener初始化早于Servlet(Weblogic8除外))
<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>
3、通过BeanFactory取得业务对象,调用业务逻辑方法
补充:(Struts1.x相关并和Spring集成)
扩展学习:
l Jboss的jar包加载顺序(根据字母),因此可能使得有些包无法加载。
l 使用高级模板创建的jsp文件,由于有
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
------------
<base href="<%=basePath%>" />
因此,jsp中的目录都会从根目录下查找。
l Servlet Listener
Listener是Servlet的监听器,它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作,比如监听在线的用户的数量。当增加一个HttpSession时,就激发sessionCreated(HttpSessionEvent se)方法,这样就可以给在线人数加1。常用的监听接口有以下几个:
ServletContextAttributeListener监听对ServletContext属性的操作,比如增加、删除、修改属性。
ServletContextListener监听ServletContext。当创建ServletContext时,激发contextInitialized(ServletContextEvent sce)方法;当销毁ServletContext时,激发contextDestroyed(ServletContextEvent sce)方法。
HttpSessionListener监听HttpSession的操作。当创建一个Session时,激发session Created(HttpSessionEvent se)方法;当销毁一个Session时,激发sessionDestroyed (HttpSessionEvent se)方法。
HttpSessionAttributeListener监听HttpSession中的属性的操作。当在Session增加一个属性时,激发attributeAdded(HttpSessionBindingEvent se) 方法;当在Session删除一个属性时,激发attributeRemoved(HttpSessionBindingEvent se)方法;当在Session属性被重新设置时,激发attributeReplaced(HttpSessionBindingEvent se) 方法。
第二种集成方案
原理:将业务逻辑对象通过spring注入到Action中,从而避免了在Action类中的直接代码查询
(客户端请求---->代理action--->取得beanFactory--->getBean(..)创建action示例--->执行exctute方法)
1、spring和struts依赖库配置
* 配置struts
--拷贝struts类库和jstl类库
--修改web.xml文件来配置ActionServlet
--提供struts-config.xml文件
--提供国际化资源文件
* 配置spring
--拷贝spring类库
--提供spring配置文件
2、因为Action需要调用业务逻辑方法,所以需要在Action中提供setter方法,让spring将业务逻辑对象注入过来
3、在struts-config.xml文件中配置Action
* <action>标签中的type属性需要修改为
org.springframework.web.struts.DelegatingActionProxy
DelegatingActionProxy是一个Action,主要作用是取得BeanFactory,然后根据<action>中的path属性值
到IoC容器中取得本次请求对应的Action
4、在spring配置文件中需要定义struts的Action,如:
<bean name="/login" class="com.bjsxt.usermgr.actions.LoginAction" scope="prototype">
<property name="userManager" ref="userManager"/>
</bean>
* 必须使用name属性,name属性值必须和struts-config.xml文件中<action>标签的path属性值一致
* 必须注入业务逻辑对象
* 建议将scope设置为prototype,这样就避免了struts Action的线程安全问题
- strut1.X和spring整合的二种方法
- Strut1和Spring的整合
- Strut1和Spring的整合
- Spring整合Struts1.X的三种方法
- Spring整合Struts1.X的三种方法
- strut1和struts2的区别
- strut1和strut2的区别
- quartz(二):quartz和spring的整合
- struts1.x和spring整合
- 整合Spring和Struts的几种方法
- Mybatis和Spring整合的三种方法
- Spring和iBatis整合的方法
- struts2和strut1的一些比较
- Struts 和 Spring 整合3种方法
- Struts 和 Spring 整合3种方法
- Quartz(08) quartz spring web 项目的整合(方法二)
- Struts1.整合Spring的三种方法
- Struts1.整合Spring的三种方法
- C#附加SQL2005数据库详细代码
- java生产者消费者
- java异常处理机制
- 正则表达式
- 2009年IT两会获奖名单
- strut1.X和spring整合的二种方法
- JavaScript 获取时间
- C语言的inline
- javafx布局入门
- Vmware环境下Linux与ARM开发板的NFS系统搭建
- C++关键字全集整合
- spring核心接口
- 2009年全国物业管理企业实力排行榜top10
- 岁末好读书,看《程序员羊皮卷》得四重好礼!!!