`
元博之
  • 浏览: 52087 次
社区版块
存档分类
最新评论

Struts2 Request Process Procedure

阅读更多
Version=2.0.13, StrutsPrepareAndExecuteFilter

1. [StrutsPrepareAndExecuteFilter]
[StrutsPrepareAndExecuteFilter]doFilter(ServletRequest request, ServletResponse response,FilterChain filterChain);
1.1 [StrutsPrepareAndExecuteFilter]
prepare.findActionMapping(request, response);
1.2 [StrutsPrepareAndExecuteFilter]
execute.executeAction(request, response, mapping);
{PrepareOperations prepare, ExecuteOperations execute}


2. [ExecuteOperations]
[ExecuteOperations] .executeAction(request, response, mapping);
[ExecuteOperations] dispatcher.serviceAction(request, response, context,mapping);
{Dispatcher dispatcher,ServletContext servletContext}


3. [Dispatcher]
[Dispatcher].serviceAction(request, response, servletContext, mapping);
3.1 [Dispatcher] extraContext.putAttribute(“valueStack”,Request.getAttribute(“struts.valueStack”));
3.2 [Dispatcher] proxy=ActionProxyFactory.createActionProxy(namespace,name,method,Context);
3.3 [Dispatcher]
proxy.execute();
{ActionProxy proxy,ConfigurationManager configrationManager}


4. [StrutsActionProxy]
[StrutsActionProxy].execute();
4.1 [StrutsActionProxy] ActionContext previous=ActionContext.getContext();
4.2 [StrutsActionProxy] ActionContext.setContext(invocation.getInvocationContext());
4.3 [StrutsActionProxy] invocation.invoke();
4.4 [StrutsActionProxy] cleanupContext; ActionContext.setContext(previous);
{ActionInvocation invocation,ActionContext actionContext,Boolean cleanupContext}


5 [DefaultActionInvocation]
[DefaultActionInvocation].invoke(); ps:Iterator  interceptors
5.1 [DefaultActionInvocation] Interceptors.hasNext()=true;
interceptor.intercept(DefaultActionInvocation.this);
5.2 [DefaultActionInvocation] Interceptors.hasNext()=false;
resultCode = invokeActionOnly(); [system.exit(0)]
{Object action,ActionProxy proxy, Iterator interceptors}


6. [ExceptionMappingInterceptor]
[ExceptionMappingInterceptor].intercept(ActionInvocation invocation);
6.1 [ExceptionMappingInterceptor] do something about interceptor
6.2 [ExceptionMappingInterceptor] invocation.invoke();
{ActionInvocation invocation}


Procedure:
1.StrutsPrepareAndExecuteFilter.doFilter(ServletRequest,ServletResponse,FilterChain);
2.ExecuteOperations.executeAction(HttpServletRequest,HttpServletResponse,ActionMapping);
3.Dispatcher.serviceAction
(HttpServletRequest,HttpServletResponse,ServletContext,ActionMapping);
4.StrutsActionProxy.execute();
5.DefaultActionInvocation.invoke();
6.ExceptionMappingInterceptor.intercept(ActionInvocation);
7. DefaultActionInvocation.invoke();
8.AliasInterceptor.intercept(ActionInvocation);
9.DefaultActionInvocation.invoke(); ……. ……
n. DefaultActionInvocation.invokeActionOnly();
n+1. DefaultActionInvocation.invokeAction(Object,ActionConfig);
n+2.Method.invoke(Object,Object…); …………
n+m.SomeAction.execute();

分享到:
评论

相关推荐

    struts2 获取request

    struts2 获取request session对象

    Struts2获取request的四种方式

    在Struts2中,经常需要从Action类中获取请求(Request)和响应(Response)对象来处理用户请求和传递数据。本文将详细解释Struts2中获取Request对象的四种不同方式。 1. **Servlet不相关的非IoC取得Request等对象的...

    struts2使用request、response

    ### Struts2中request与response的使用方法 #### 一、引言 Struts2作为Struts1的后续版本,在架构设计与实现机制上进行了大量的改进。相较于Struts1,Struts2对request、response、session等核心对象的处理方式有所...

    struts2中获得request对象

    本文将详细讲解在Struts2中获取`request`对象的几种常见方法,以及它们的适用场景。 1. **Action上下文(ActionContext)** `ActionContext`是Struts2的核心组件之一,它封装了与当前请求相关的所有上下文信息,...

    struts的request包装替换的思想

    在Struts框架中,请求(Request)扮演着至关重要的角色,因为它承载了客户端的所有请求信息。本篇文章将深入探讨“Struts的request包装替换的思想”,以及如何通过自定义Filter来实现这一过程。 在标准的Struts框架...

    Struts2的Action中获得request response session几种方法

    以下将详细介绍如何在Struts2的Action中获取request、response、session。 ### 1. 使用ActionContext获取request、response、session Struts2的Action可以通过`ActionContext`来间接获取`request`、`response`和`...

    Struts2上传文件(直接用request)

    Struts2上传文件(直接用request)

    struts2访问application、session以及request等web资源的示例代码

    在Struts2中,访问Web资源,如application、session和request,是常见的操作,这有助于实现数据共享和传递。本示例代码将帮助开发者更好地理解和运用这些功能。 一、Application域对象 Application域对象在所有用户...

    struts2中request和session的获取

    在Struts2框架中,对request和session的管理和获取是实现Web应用中用户交互和状态维护的重要手段。本文将深入探讨Struts2中如何获取request和session,以及这两种对象的作用和应用场景。 ### Struts2框架简介 ...

    Struts2漏洞检查工具Struts2.2019.V2.3

    Struts2是一款非常流行的Java Web框架,用于构建企业级应用。然而,随着时间的推移,Struts2在安全方面暴露出了一些重要的漏洞,这给使用该框架的系统带来了潜在的安全风险。"Struts2漏洞检查工具Struts2.2019.V2.3...

    Struts2中获得Request,Response的几种方法

    Struts2中获得Request,Response的几种方法,有代码作为参考。

    struts2访问request,session,application作用域

    ### Struts2 访问 Request、Session 和 Application 作用域详解 #### 一、引言 Struts2 是一个基于 Java 的开源 Web 开发框架,它继承了 Struts1 的优秀特性并进行了改进,提供了更加灵活和强大的功能。在 Struts2...

    struts2jar包

    Struts2是一个强大的Java EE应用程序框架,主要用于构建企业级的Web应用。它的核心是MVC(Model-View-Controller)设计模式,可以帮助开发者组织代码,提高开发效率,并且提供了丰富的特性来支持表单验证、国际化、...

    struts2-core.jar

    struts2-core-2.0.1.jar, struts2-core-2.0.11.1.jar, struts2-core-2.0.11.2.jar, struts2-core-2.0.11.jar, struts2-core-2.0.12.jar, struts2-core-2.0.14.jar, struts2-core-2.0.5.jar, struts2-core-2.0.6.jar,...

    Struts2漏洞测试

    Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试...

    struts2 学习重点笔记

    - **自动填充**:Struts2 自动从 request 中获取数据并填充到 Action 对象中。 - **原理**:通过拦截器实现,拦截器会查找与 Action 类中的 setter 方法相匹配的请求参数,并调用这些方法填充数据。 **3.3 数据传递...

    struts2 总结工程大全

    struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全...

    Struts2接口文档

    Struts2是一个强大的Java web应用程序开发框架,它基于Model-View-Controller(MVC)设计模式,旨在简化创建用户交互式、数据驱动的web应用的过程。这个“Struts2接口文档”是开发者的重要参考资料,提供了关于...

    struts2项目开发

    Struts2 项目开发 Struts2 是一个基于 Java Web 的框架,广泛应用于 Web 应用程序的开发。下面将从 Struts2 项目开发的角度,详细介绍 Struts2 框架的应用、开发流程、技术架构、实践经验等方面的知识点。 项目...

Global site tag (gtag.js) - Google Analytics