`
jeffyzhang
  • 浏览: 9867 次
  • 性别: Icon_minigender_1
  • 来自: 天津
最近访客 更多访客>>
社区版块
存档分类
最新评论

[旧作]我的技术架构之二-struts1.1中通过Spring对ACTION进行横切

阅读更多
 

由于Struts2.0以下版本设计先天的原因,struts的理念并不先进(这一点比同样基于请求的webwork框架差很多,不过现在struts大大把webwork给吞了很久,不知道消化的如何了).在struts中对ACTION进行横切只能靠其它方法了.

现在我就在这里给出如何对struts action进行横切的一种简单方法:

1,在web.xml中配置spring

2,在struts-config.xml中配置如下信息:
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/action-servlet.xml"/>
</plug-in>

3,在struts-config.xml中配置ACTION代理:

<action
attribute="xxxForm"
name="xxxForm"
scope="request"
path="/xxxAction"
parameter="method"
type="org.springframework.web.struts.DelegatingActionProxy"
validate="false">
.........
</action>

4,在action-servlet.xml做如下配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="autodetect">
<!-- 你的业务ACTION-->
<bean name="/xxxAction" class="xxx.yyy.zzz.YourAction"/>
<!-- 你的横切面-->
<bean id="secureAdvice" class="xxx.yyy.YourAdvice"/>
<!--autoProxyCreator -->
<bean name="secureAutoProxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<list>
<value>/xxxAction</value>
</list>
</property>
<property name="interceptorNames">
<list>
<idref local="secureAdvice"/>
</list>
</property>
<property name="optimize" value="true"/>
</bean>
</beans>

5,当然,要先写好一个很普通的struts Action 和 ActionForm,但是也别忘了,还有一个横切面类:YourAdivice.这里简单的介绍一下YourAdivice:
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.ajaxanywhere.AAUtils;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class SecureAroundAdvice implements MethodInterceptor {
private static Log _log=LogFactory.getLog(SecureAroundAdvice.class);
public Object invoke(MethodInvocation invocation) throws Throwable {
Object[] args=invocation.getArguments();
ActionMapping mapping=(ActionMapping)args[0];
ActionForm form=(ActionForm)args[1];
HttpServletRequest request=(HttpServletRequest)args[2];
HttpServletResponse response=(HttpServletResponse)args[3];
ActionForward forward=execute(mapping,form,request,response);
return forward==null?invocation.proceed():forward;
}
//下面这个方法是我为了使得invoke方法简洁,并且迎合struts而写的.不是必须.
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response ) throws Exception{
//这里可以写你的ACTION的横切处理
}
}

分享到:
评论

相关推荐

    东方旧作(含中文翻译版)整合

    【东方旧作(含中文翻译版)整合】是一款集合了东方系列早期作品的游戏包,它通过DOSBOX模拟器使得这些经典游戏能在现代Windows XP及更高版本的操作系统上顺利运行。DOSBOX是一个开源的DOS环境模拟器,它允许用户在...

    TH旧作1-5 PC 98 用

    【标题】"TH旧作1-5 PC 98 用" 涉及的是日本著名弹幕射击游戏系列《东方Project》的早期作品。这些游戏最初是在个人计算机平台PC-98上发布,因此标题中的"PC 98"指的是它们适配于该平台。"TH旧作1-5"指的是《东方...

    大学时光的陈年旧作:代码收集软件

    在编程学习中,积累和整理代码是提升技能的重要步骤,这款工具可能包含了对代码分类、搜索、版本控制等功能,对于初学者和开发者来说非常实用。 【描述】:“NULL” 由于描述部分为空,我们无法获取具体的软件功能...

    布鲁金斯学会-疫情后如何重启米果经济(英文)-2020.5-17页.pdf

    当前,关于COVID-19的工作出现在这里,这是我们机构对国家和全球社区能做出的最重要的贡献之一。我们乐观地相信,这些工作将作为那些在困难现实中努力做到最好的人们的希望灯塔。 美国和世界的重新开放很可能会是一...

    命中考题 高考作文是河北一老师旧作.doc

    命中考题 高考作文是河北一老师旧作.doc

    手机PDA程序设计入门-序与导读

    2. **书籍背景与更新:**本书是基于两年前出版的《Java手机程序设计入门》第二版,融合了原计划中的进阶内容,并对原有入门内容进行了全面修订。 3. **市场环境变化:**随着系统厂商和手机制造商对Java支持的增加,...

    初中语文文学讨论现当代文学旧作新炒再打口水仗余秋雨叫板老相识

    初中语文文学讨论现当代文学旧作新炒再打口水仗余秋雨叫板老相识

    小学语文三年级作文复习PPT课件.pptx

    - 错别字等基础错误:通过阅读和修改旧作,强化字词句的理解和应用。 - 审题训练:列出习作要求,逐句解读,通过实例让学生理解错误所在。 - 写作具体化:通过修改问题习作,指导如何丰富细节,使叙述更具吸引力...

    农业2021年6月USDA供需报告点评:美豆旧作压榨下调,中国棉花库存消费比降至9年新低(10页).pdf

    农业2021年6月USDA供需报告点评:美豆旧作压榨下调,中国棉花库存消费比降至9年新低(10页).pdf

    温度计旧作翻新,204EA升级为408AS,打造更出色的设计-电路方案

    前言: 一个旧作品的更新,以前做过一个基于STC15F204EA的NTC温度计,这次更新为STC15W408AS,同时程序也做了一些修改。 功能介绍: 测温范围在-40°~110°,4...附件中分享了Keil C程序,原理图,需要的朋友可以下载。

    oldworks:我所有的作品 - 这里非常令人兴奋,只是备份

    描述中的“旧作”进一步确认了这是作者早期创作的集合,可能包括使用ActionScript编写的动画、交互式内容或游戏。 ActionScript的发展历程与Flash Player紧密相连,早期版本主要用于控制Flash动画的时间轴和实现...

    《自己的嫁衣》读后感.doc

    《自己的嫁衣》是章品镇先生的一部文集,收录了他四十一篇作品,其中一半为旧作,展现了他在文艺工作中的独特见解和才华。章老一生致力于推动文学发展,他的文字深思熟虑,内容丰富,尤其擅长描绘人物和讲述文坛掌故...

    八年级政治上册第一单元教案人民版.pdf

    6. 课堂活动:课程设计了多种教学环节,如“真爱阅读”、“涟漪片片”、“旧作重读”等,旨在通过不同的活动形式激发学生的情感共鸣,加深对父母之爱的认识。 7. 理解与尊重:教学难点在于理解父母的爱可能随时间...

    在国立图书馆.docx

    - **实例分享**:作者提及的一本个人旧作,虽然在国内难以找到,但在王先生的帮助下,通过美国书目系统成功查找到,并考虑从国会图书馆获得副本。 ### 结语 综上所述,澳洲国立图书馆不仅在建筑设计和服务理念方面...

    20210626-中信期货-饲料养殖半年度策略报告(玉米):紧平衡延续,预计玉米期价宽幅震荡运行.pdf

    玉米作为我国主要的饲料原料和深加工原料之一,其价格波动对饲料养殖行业具有重大影响。2021年上半年,玉米市场呈现紧平衡状态,价格宽幅震荡,主要受到供需、政策和市场预期等多个因素的共同作用。 1. 供需状况:...

    小型下载系统 v1.2 Build 0306 电影版

    10. **技术支持与更新**:作为v1.2版本,说明开发者持续对产品进行维护和升级,用户可以期待未来会有更多新功能和性能优化。 综上所述,小型下载系统 v1.2 Build 0306 电影版是一款集便捷、高效、安全于一体的下载...

    GameProbe游戏修改器

    但 GameProbe 目前非常不完善,它是我几年前的旧作。 现在我没有太多的经历来完善它,也许您可以。 同时,他附带了作者自己研究出的《DX下弹出对话框》与暂停进程的源程序,相信您用它制作一个商业修改器也没问题...

    初中语文文学讨论名著导读历数几宗罪谁来整治“注水书”

    综上所述,“注水书”现象揭示了当前出版业中存在的问题,对内容质量的忽视和对消费者权益的侵犯,强调了出版业需回归本质,坚持诚信原则,以提供高质量的图书满足社会需求。同时,这也警示了其他行业,无论何时,...

    学校干部述职报告范文5篇.docx

    【学校干部述职报告范文5篇】是一份关于教育系统中学校干部的工作汇报文档,主要涵盖了教学管理、教学成果、个人工作、团队协作以及自我提升等多个方面。以下是文档中提到的知识点: 1. **教学成果展示**:文中提到...

Global site tag (gtag.js) - Google Analytics