您现在的位置:计算机技术学习网 > 技术中心 > WEB编程 > JSP >

Struts2工作原理和框架扩展点

来源:未知 责任编辑:责任编辑 发表时间:2013-12-18 11:35 点击:

 

 

框架主要涉及技术:Spring + Struts2 + Hibernate + Freemarker

 

我们先看看Struts2 工作原理图,这样才方便考虑在设计开发框架时有那些扩展点:

 

 

 

ActionFilter和其它过滤器

在web.xml配置这些Filter在Struts自身的Filter之前。 包括全局缺省的ActionFilter、语言编码LocaleFilter、重定向UrlRewriteFilter等等。

StrutsPrepareFilter

Struts的Action预处理过滤器。我的做法是写一个子类继承它,如CoreStrutsPrepareFilter,这样我可以在子类中实现诸如

动态加载struts.xml和指定目录指定规则的struts-xxx.xml等。

StrutsExecuteFilter

同样是使用写子类继承它,如CoreStrutsExecuteFilter,写根据条件(如Struts相关的配置文件改动了)重新生成ExecuteOperations

(即Dispatcher的高级封装)。

Interceptor

拦截器是Struts2的精华。在这里处理包括异常统一处理、权限控制、参数设置、访问历史和某些特定功能的拦截式保存等处理。

Action

放置若干处理请求的指定包路径的方法,我设计了BaseAction和GenericAction,BaseAction处理全局的Action公共处理,包括继承ActionSupport,

实现InitializingBean、ModelDriven(这样可以做一些初始化操作以及得到Struts2模型驱动的相关功能)。

GenericAction是基于泛型来写的,实现了增删改查之类的公共方法。还有其它若干的项目相关的公共XXXAction,则根据需要设计。

Manager

在Action的Method中,可以调用若干个Manager方法来实现相关业务,事务是写在Manager层的,用的Spring的声明式事务。

ViewManager

由于系统用的是Freemarker模板技术,所以解析模板的方式有两种:1)通过Struts自带的FreemarkerManager;2)通过FreeMarkerTemplateUtils

来解析。为了方便扩展(比如写一些自定义的Freemarker方法等),我对两种方式都写了子类进行扩展。

CoreFreemarkerManager在struts.xml中配置:

<constant name="struts.freemarker.manager.classname"  value="com.xxxx.framework.core.freemarker.CoreFreemarkerManager" />

CoreFreeMarkerTemplateUtils则就是一个工具类了。一般适用于CMS、邮件模板解析等。

返回时经过的Interceptor

AOP的点也就是before和after,而after时的操作一般就是写日志了。

 

作者 元亨利贞

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • JSP与Servlet
    • 自己动手写MiniBBS系列(基本篇)之用户登录
    • JSP取当前日期
    • JDBC 入门(一)
    • 打开一个jsp页面默认查询所有数据,调用action
    • 使用JSP标签库验证用户的输入(2)完
    • 自定义JSP标签(tag)浅议
    • WIN98/2000下的jsp服务器
    • JSP内建对象(二)
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1