亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Spring之WEB模塊配置詳解

2024-07-13 10:13:19
字體:
來源:轉載
供稿:網友

Spring的WEB模塊用于整合Web框架,例如Struts1、Struts2、JSF等

整合Struts1

繼承方式

Spring框架提供了ActionSupport類支持Struts1的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<Cat> catList =catService.listCats();        request.setAttribute("carList",catList);          return mapping.find("list");    } } 

Spring在web.xml中的配置

<context-param><!-- Spring配置文件的位置-->    <param-name>contextConfigLocation</param-name>    <param-value>/WEB-INF/classes/applicationContext.xml</param-value> </context-param>   <listener><!-- 使用Listener加載Spring配置文件-->    <listener-class>        org.springframework.web.context.ContextLoaderListener    </listener-class> </listener>   <filter><!-- 使用Spring自帶的字符過濾器-->    <filter-name>CharacterEncodingFilter</filter-name>    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>    <init-param>        <param-name>encoding</param-name>        <param-value>UTF-8</param-value>    </init-param>    <init-param>        <param-name>forceEncoding</param-name>        <param-value>true</param-value>    </init-param> </filter> <filter-mapping>    <filter-name>CharacterEncodingFilter</filter-name>    <url-pattern>/*</url-pattern> </filter-mapping> 

如果與Hibernate結合使用,需要在web.xml中添加OpenSessionInViewFilter過濾器,將session范圍擴大到JSP層,防止拋出延遲加載異常

<filter>    <filter-name>hibernateFilter</filter-name>    <filter-class>org.springframework.orm.hibernate3.support. OpenSessionInViewFilter</filter-class> </filter> <filter-mapping>    <filter-name> hibernateFilter</filter-name>    <url-pattern>*.do</url-pattern><!-- 對Struts 1的Action啟用--> </filter-mapping> 

代理方式

繼承方式融入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<Cat> catList =catService.listCats();        request.setAttribute("carList",catList);          return mapping.find("list");    } } 

這個Action沒有與Spring發生耦合,只是定義了一個ICatService屬性,然后由Spring負責注入

struts-congfig.xml配置

<form-beans>    <form-bean name="catForm" type="com.clf.spring.CatForm"> </form-beans>   <action-mappings>    <action name=" catForm" path="/cat" type="com.clf.spring.CatAction">        <forward name="list" path="/jsp/listCat.jsp"></forward>    </action> </action-mappings>   <!-- 最核心的配置,該配置把Struts的Action交給Spring代理--> <controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor" />   <!-- controller配置生效后,Action的type屬性就是去作用了,Struts不會用type屬性指定的類來創建CatAction,而是到Spring配置中尋找,因此Spring中必須配置CatAction --> <!-- Spring中配置Action使用的是name屬性而不是id,Spring會截獲"/cat.do"的請求,將catService通過setter方法注入到CatAction中,并調用execute()方法--> <bean name="/cat" class=" com.clf.spring.CatAction">    <property name="catService" ref="catService" /> </bean> 

web.xml的配置與上面的繼承方式相同

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

<bean id="catBeforeInterceptor" class="org.springframework.aop.support.NameMatchMethodPointcutAdvodor">    <property name="advice">        <bean class="com.clf.spring.MethodBeforeInterceptor" />    </property>    <property name="mappedName" value="*"></property> </bean>   <bean id="catAfterInterceptor" class="org.springframework.aop.support.NameMatchMethodPointcutAdvodor">    <property name="advice">        <bean class="com.clf.spring.MethodAfterInterceptor" />    </property>    <property name="mappedName" value="*"></property> </bean>   <bean name="/cat" class="org.springframework.aop.framework.ProxyFactoryBean">    <property name="interceptorNames">        <list>           <value> catBeforeInterceptor</value>           <value> catAfterInterceptor</value>        </list>    </property>    <property name="target">        <bean class="com.clf.spring.CatAction">           <property name="catService" ref="catService"></property>        </bean>    </property> </bean> 

整合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,Struts2將會到Spring中尋找名為catAction的bean

<constant name=" struts.objectFactory" value="spring" />   <packagenamepackagename="cat" extends="struts-default"> <action name="*_cat" method="{1}" class="catAction">    <param name="action" >{1}</param>    <result>/list.jsp</result>    <result name="list">/list.jsp</result> </action> </package> 

Spring配置

<bean id="catAction" scope="prototype" class="com.clf.spring.CatAction">    <property name="catService" ref="catService"></property> </bean> 

web.xml配置

<context-param><!-- Spring配置文件的位置-->    <param-name>contextConfigLocation</param-name>    <param-value>/WEB-INF/classes/applicationContext.xml</param-value> </context-param>   <listener><!-- 使用Listener加載Spring配置文件-->    <listener-class>        org.springframework.web.context.ContextLoaderListener    </listener-class> </listener>   <filter>    <filter-name>Struts2</filter-name>    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping>    <filter-name> Struts2</filter-name>    <url-pattern>/*</url-pattern> </filter-mapping> 

總結

以上就是本文關于Spring之WEB模塊配置詳解的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人妇女淫片aaaa视频| 国产精品黄页免费高清在线观看| 久久久在线免费观看| 国产精品国产福利国产秒拍| 91网站在线免费观看| 国产成人精品免高潮在线观看| 久久久久久久久久婷婷| 91高潮精品免费porn| 亚洲成人黄色在线| 久久福利视频导航| 亚洲人午夜精品| 91久久久久久久久久| 国产精品福利在线观看网址| 亚洲精品在线91| 深夜福利亚洲导航| 日韩欧美中文第一页| 欧美一区二区三区免费视| 国产日韩精品在线观看| 亚洲最大激情中文字幕| 国产一区二区三区久久精品| 日韩风俗一区 二区| 欧美特级www| 国产精品老女人视频| 亚洲成人久久网| 国产综合在线看| 国产精品久久久亚洲| 97国产一区二区精品久久呦| 色在人av网站天堂精品| 在线精品高清中文字幕| 最近中文字幕mv在线一区二区三区四区| 国产福利精品av综合导导航| 久久亚洲精品一区| 欧美激情一区二区三级高清视频| 日韩一级黄色av| 久久久久久久国产精品视频| 亚洲国产精品热久久| 欧美巨猛xxxx猛交黑人97人| 一区二区欧美久久| 亚洲日韩第一页| 久久国产一区二区三区| 亚洲精品永久免费| 人人爽久久涩噜噜噜网站| 在线观看日韩www视频免费| 亚洲精品一区在线观看香蕉| 精品视频久久久久久久| 日韩欧美aaa| 国产精品电影在线观看| 欧美午夜www高清视频| 国产亚洲综合久久| 精品人伦一区二区三区蜜桃免费| 亚洲欧美999| 日韩精品中文字幕在线播放| 亚洲a成v人在线观看| 久久久久久国产精品久久| 操日韩av在线电影| 久久精品国产96久久久香蕉| 欧美尤物巨大精品爽| 国产亚洲aⅴaaaaaa毛片| 亚洲精品久久7777777| 国产成人精品日本亚洲专区61| 成人免费在线视频网址| 在线中文字幕日韩| 久久视频免费在线播放| 日韩欧美在线视频| 国产精品一区二区性色av| 日韩视频免费大全中文字幕| 欧美性jizz18性欧美| 国产日韩精品电影| 日韩av一区在线| 国产香蕉97碰碰久久人人| 欧美激情久久久久久| 最新亚洲国产精品| 国产成人激情小视频| 亚洲国产日韩一区| 欧美成aaa人片免费看| 日韩欧美一区二区三区| 97超级碰碰碰| 久久久久久国产精品三级玉女聊斋| 成人有码在线播放| 欧美老妇交乱视频| 久久精品精品电影网| 日韩精品中文字| 欧美在线视频免费播放| 亚洲最大成人免费视频| 国产精品盗摄久久久| 成人美女免费网站视频| 高清一区二区三区日本久| 国产一区视频在线| 一区二区三区动漫| 欧美性极品xxxx娇小| 欧美不卡视频一区发布| 日韩a**中文字幕| 亚洲www永久成人夜色| 91视频国产一区| 国产欧美日韩免费看aⅴ视频| 国产一区二区三区18| 欧美尺度大的性做爰视频| 美日韩精品免费视频| 亚洲成人激情在线| 日韩成人小视频| 亚洲人成绝费网站色www| 欧美中文在线观看国产| 中文字幕无线精品亚洲乱码一区| 中文字幕日韩精品在线| 一区二区在线视频| 欧美裸体男粗大视频在线观看| 国产欧美日韩视频| 国产精品99久久久久久久久久久久| 欧美日韩在线视频观看| 精品国产一区二区三区在线观看| 色综合伊人色综合网站| 欧美一区视频在线| 亚洲综合成人婷婷小说| 97国产精品久久| 911国产网站尤物在线观看| 日韩亚洲成人av在线| 国产亚洲视频在线观看| 久久久国产精彩视频美女艺术照福利| 国产精品香蕉在线观看| 欧美一级在线播放| 综合网日日天干夜夜久久| 欧美成人午夜影院| 国产精品久久久久福利| 久久国产精品久久久| 最近中文字幕日韩精品| 日韩精品有码在线观看| 久久综合久久美利坚合众国| 欧美片一区二区三区| 国产一区二区黄| 日韩国产在线看| 一夜七次郎国产精品亚洲| 欧美日韩国产中字| 欧美日韩国产综合视频在线观看中文| 欧美亚洲一级片| 日韩精品免费在线观看| 最新69国产成人精品视频免费| 欧美香蕉大胸在线视频观看| 一区二区在线免费视频| 成人精品久久久| 欧美日韩亚洲一区二区三区| 久久视频在线播放| 欧美精品激情blacked18| 亚洲偷熟乱区亚洲香蕉av| 久久九九亚洲综合| 欧洲永久精品大片ww免费漫画| 国产精品视频一区二区三区四| 狠狠干狠狠久久| 日本精品久久电影| 亚洲欧美色婷婷| 欧美性视频网站| 亚洲福利视频网站| 亚洲欧洲自拍偷拍| 奇门遁甲1982国语版免费观看高清| 亚洲91精品在线| 欧美第一黄色网| 国产福利视频一区二区| 国产日韩欧美91| 日韩三级成人av网| 亚洲成色777777在线观看影院| 国产精品偷伦免费视频观看的| 亚洲美女在线视频| 日本精品性网站在线观看| 91免费版网站入口| 亚洲国产福利在线|