博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring之WEB模块
阅读量:5133 次
发布时间:2019-06-13

本文共 4951 字,大约阅读时间需要 16 分钟。

Spring的WEB模块用于整合Web框架,例如Struts 1、Struts 2、JSF等

整合Struts 1

继承方式

Spring框架提供了ActionSupport类支持Struts 1的Action。继承了ActionSupport后就能获取Spring的BeanFactory,从而获得各种Spring容器内的各种资源

import  org.springframework.web.struts.ActionSupport; public class CatAction extends ActionSupport{      public ICatService getCarService(){             return (ICatService) getWebApplicationContext().getBean("catService");      }      public ActionForward execute(ActionMappingmapping,ActionForm form,HttpServletRequest request,HttpServletResponseresponse){             CatForm catForm = (CatForm) form;             if("list".equals(catForm.getAction())){                    returnthis.list(mapping,form,request,response);             }      }       public ActionForward list(ActionMappingmapping,ActionForm form,HttpServletRequest request,HttpServletResponseresponse){             CatForm catForm = (CatForm) form;             ICatService catService =getCatService();             List
catList =catService.listCats(); request.setAttribute("carList",catList); return mapping.find("list"); }}

Spring在web.xml中的配置

contextConfigLocation
/WEB-INF/classes/applicationContext.xml
org.springframework.web.context.ContextLoaderListener
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceEncoding
true
CharacterEncodingFilter
/*

如果与Hibernate结合使用,需要在web.xml中添加OpenSessionInViewFilter过滤器,将session范围扩大到JSP层,防止抛出延迟加载异常

hibernateFilter
org.springframework.orm.hibernate3.support. OpenSessionInViewFilter
hibernateFilter
*.do

 

代理方式

继承方式融入Spring非常简单,但是缺点是代码与Spring发生了耦合,并且Action并没有交给Spring管理,因此不能使用Spring的AOP、IoC特性,使用代理方式则可以避免这些缺陷

 

public class CatAction extends Action{  //此处继承的Struts 1的Action      private ICatService catService;      //setter、getter略       public ActionForward execute(ActionMappingmapping,ActionForm form,HttpServletRequest request,HttpServletResponseresponse){             CatForm catForm = (CatForm) form;             if("list".equals(catForm.getAction())){                    returnthis.list(mapping,form,request,response);             }      }       public ActionForward list(ActionMappingmapping,ActionForm form,HttpServletRequest request,HttpServletResponseresponse){             CatForm catForm = (CatForm) form;             ICatService catService =getCatService();             List
catList =catService.listCats(); request.setAttribute("carList",catList); return mapping.find("list"); }}

这个Action没有与Spring发生耦合,只是定义了一个ICatService属性,然后由Spring负责注入

 

struts-congfig.xml配置

 

web.xml的配置与上面的继承方式相同

 

使用代理方式的Action可以配置拦截器等Spring特性,例如给CatAction配置方法前拦截器和返回后拦截器

catBeforeInterceptor
catAfterInterceptor

整合Struts 2

Spring整合Struts 2需要struts2-spring-2.011.jar包

public class CatAction{      private ICatService catService;      private Cat cat;      //setter、getter略       public String list(){             catService.listCats();             return "list";      }           public String add(){             catService.createCat(cat);             return list();      }}

struts.xml配置

除了正常的配置之外,还需要<contstant/>添加名为struts.objectFactory的常量,把值设为spring,表示该Action由Spring产生。然后把<action/>的class属性改为catAction,Struts 2将会到Spring中寻找名为catAction的bean

{1}
/list.jsp
/list.jsp
 

Spring配置

 

web.xml配置

contextConfigLocation
/WEB-INF/classes/applicationContext.xml
org.springframework.web.context.ContextLoaderListener
Struts2
org.apache.struts2.dispatcher.FilterDispatcher
Struts2
/*

转载于:https://www.cnblogs.com/duadu/p/6335823.html

你可能感兴趣的文章
Android Bitmap 和 Canvas详解
查看>>
最大权闭合子图
查看>>
oracle 创建暂时表
查看>>
201421410014蒋佳奇
查看>>
导入导出数据库和导入导出数据库表
查看>>
linux下操作mysql
查看>>
【03月04日】A股滚动市盈率PE历史新低排名
查看>>
Xcode5和ObjC新特性
查看>>
jvm slot复用
查看>>
高并发系统数据库设计
查看>>
LibSVM for Python 使用
查看>>
入坑的开始~O(∩_∩)O~
查看>>
Centos 7.0 安装Mono 3.4 和 Jexus 5.6
查看>>
Windows 7 上安装Visual Studio 2015 失败解决方案
查看>>
iOS按钮长按
查看>>
Shell流程控制
查看>>
CSS属性值currentColor
查看>>
[Leetcode|SQL] Combine Two Tables
查看>>
《DSP using MATLAB》Problem 7.37
查看>>
ROS lesson 1
查看>>