Struts2 框架分析

1.Struts 2执行过程解析;

login.jsp----->StrutsPrePareAndExecuteFilter--------->Action-------------->Result-------------------->manage.jsp

Action

怎样在struts.xml中配置Action

<action name="LoginAction" class="cn.wwy.action.LoginAction">//结果为success时跳转到Login.jsp
<result name="success">/Login.jsp</result> </action>-

Result

1.当Web容器收到请求后,将请求交由在web.xml中配置的Struts 2 框架的控制器StrutsPrepareAndExecuteFilter(核心控制器)

2.由StrutsPrepareAndExecuteFilter的确请求对应的Action(业务控制器)

3.框架根据Action返回的结果字符串,由StrtsPrepareAndExecuteFilter选择对应的result,将结果呈现给用户。

动态结果:

<default-action-ref name="ExctionAction"></default-action-ref>
        <action name="ExctionAction">
            <result>/errorAction.jsp</result>
        </action>-->
        <!--<action name="LoginAction" class="cn.wwy.action.LoginAction">
            <result name="success">/Login.jsp</result>
        </action>

1.ActionMapper

提供了在请求和Action调用请求之间的映射,ActionMapper根据请求的URl来查找是否存在对应的Action调用请求,如果有,则返回一个描述Action映射的ActionMapping对象,没有就为null

2.ActionMapping

ActionMaping保存了调用Action的映射信息,其中必须保存Action的命名空间信息和name属性信息。

3.ActionProxy

ActionProxy在XWork和真正的Action之间充当代理,在执行Action的过程中,因为使用代理而非直接操纵对象,所以可以在Action执行前后额外操作。ActionProxy创建了ActionInvocation对象。

4.Actionlnvocation

ActionInvocation 表示Action的执行状态,它保存拦截器Action的实例,Actionlnvocation由ActionProxy创建,通过调用invoke()方法开始Action的执行,执行的顺序为按配置执行拦截器,拦截器执行完毕后,执行Action,Action执行结束返回结果字符串,匹配对应的Result后,在一次执行拦截器。

5.Interceptor(拦截器)

拦截器是一种可以在请求处理以前或者之后执行的Struts2.拦截器是Struts 2的重要特性,Struts 2框架的绝大多数功能是通过拦截器完成的。

public class MyTimer extends AbstractInterceptor {
    public String intercept(ActionInvocation invocation) throws Exception {

        long timeMillis = System.currentTimeMillis();
        System.out.println("开始时间"+timeMillis);
        String invoke = invocation.invoke();
        long time=System.currentTimeMillis();
        System.out.println("结束时间"+timeMillis);
        long s = time - timeMillis;
        System.out.println("一共时间"+s);
        return invoke;
    }
}
 <interceptors>
            <interceptor name="MyTime" class="cn.wwy.action.MyTimer"></interceptor>
        </interceptors>
<action name="action" class="cn.wwy.action.LoginAction">    <result name="success">/Login.jsp</result>    <interceptor-ref name="MyTime"></interceptor-ref>    <interceptor-ref name="defaultStack"></interceptor-ref></action>

时间: 2024-10-18 13:13:01

Struts2 框架分析的相关文章

JAVAWEB开发之Struts2详解(一)——Struts2框架介绍与快速入门、流程分析与工具配置以及Struts2的配置以及Action和Result的详细使用

Struts2框架介绍 三大框架:是企业主流JavaEE开发的一套架构.Struts2 + Spring + Hibernate 什么是框架?为什么要学习框架? 框架是实现部分功能的代码(半成品),使用框架简化企业级软件开发. Struts2与MVC? Struts是一款优秀的MVC框架 MVC:是一种思想,是一种模式,将软件分为Model模型.View视图.Controller控制器 JAVAEE软件三层架构:web层(表现层).业务逻辑层.数据持久层(Sun提供javaEE开发规范) Jav

【DIY系列】动手实现Struts2框架(一)原理分析

一.struts概念 struts2是一款体现关注点分离思想的架构. struts2将我们web开发中的各个需要处理的细节都封装到了拦截器中(Interceptor),每个拦截器负责自己独立的功能. 例如:参数拦截器(params),令牌拦截器(Interceptor-stack) 我们也可以指定自己的拦截器来拓展struts2的功能(自定义拦截器) 二.struts2的特点 1.关注点分离/解耦 把变化点错落有致的封装在软件系统的不同部分. 系统的一个部分发生了变化,不会影响到其他部分 即使需

自定义验证器——用Struts2框架以框架师的思维灵活做好该事情

面对的问题:自定义一个18位身份验证器,编写验证器,在validators.xml文件中进行注册.在验证配置文件中使用? 第一部分:理解Struts2中自带的验证器 第二部分:怎样通过服务器(后台),再次对前台的数据进行验证 第三部分:用Struts2来自定义验证器(问题解决方案) 第一部分:理解Struts2中自带的验证器 Struts2框架中自带的后台服务器验证分为两种:声明式验证和编程式验证 u  声明式验证(重点) ?  对哪个 Action 或 Model 的那个字段进行验证 ?  使

Struts2框架基本使用

时间:2017-1-6 16:53 修改struts.xml配置文件不需要重启服务器. Struts2框架 一.        *   介绍Struts2        *   关于Struts2配置(关于Action配置)        *   关于Struts2结果类型    二.        *   Struts2处理请求参数        *   Struts2的类型转换(了解)        *   Struts2的校验    三.        *   Struts2的国际化   

Struts2架构分析和运行机制

实例分析 1.在浏览器中输入url地址后,会通过http协议发送给tomcat,tomacat收到请求后查看访问的是哪个 webapplication(如下图的Struts2_0100_Introduction),tomcat把Struts2_0100_Introduction交给对应的 webapplication程序去处理. 2.之后会参考Struts2_0100_Introduction下的对应的web.xml文件,将请求交给Struts2Filter去处理 ("/*"为这个项目

自己定义验证器——用Struts2框架以框架师的思维灵活做好该事情

面对的问题:自己定义一个18位身份验证器.编写验证器.在validators.xml文件里进行注冊.在验证配置文件里使用? 第一部分:理解Struts2中自带的验证器 第二部分:如何通过server(后台).再次对前台的数据进行验证 第三部分:用Struts2来自己定义验证器(问题解决方式) 第一部分:理解Struts2中自带的验证器 Struts2框架中自带的后台server验证分为两种:声明式验证和编程式验证 u  声明式验证(重点) ?  对哪个 Action 或 Model 的那个字段进

Struts2框架之application、Request、Response、paramaters、Session实现及理解(案例驱动)

Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具.Cacti是通过 snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数.它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构.host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善.界面友好.软件 Cacti 的发展是基于让 RRDTool 使用者更方便使用该软件,除了基本的 Snmp 流量

我为什么支持高校的信息系统放弃Apache Struts2框架(五)

月初听闻广东某高校(中山大学)发布通知:关于停止使用Apache Struts2开发框架的通知 鉴于S2漏洞较多.维护难度较大,为防范控制网络安全风险,经研究决定,新建信息化项目不得使用S2: 在用S2的信息系统(网站)应尽快转用其他更安全的MVC框架(如Spring MVC等):从即日起,使用S2的信息系统(网站)将仅限校园网内访问. 作为信息安全爱好者,个人对学校的决定是举双手支持的,Struts 2框架在安全方面似乎有着与生俱来的缺陷,与同类开源项目相比,它的问题是在是太多了.下面说一下我

我为什么支持高校的业务系统放弃Apache Struts2框架(四)

月初听闻广东某高校(中山大学)发布通知:关于停止使用Apache Struts2开发框架的通知 鉴于S2漏洞较多.维护难度较大,为防范控制网络安全风险,经研究决定,新建信息化项目不得使用S2: 在用S2的信息系统(网站)应尽快转用其他更安全的MVC框架(如Spring MVC等):从即日起,使用S2的信息系统(网站)将仅限校园网内访问. 作为信息安全爱好者,个人对学校的决定是举双手支持的,Struts 2框架在安全方面似乎有着与生俱来的缺陷,与同类开源项目相比,它的问题是在是太多了.下面说一下我