zoukankan      html  css  js  c++  java
  • java--Struts中请求的过程

    一个请求在Struts2框架中的处理步骤:

    a) 客户端初始化一个指向Servlet容器的请求;

    b) 根据Web.xml配置,请求首先经过ActionContextCleanUp过滤器,其为可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助(SiteMesh Plugin),主要清理当前线程的ActionContext和Dispatcher;

    c) 请求经过插件过滤器,如:SiteMesh、etc等过滤器;

    d) 请求经过核心过滤器FilterDispatcher,执行doFilter方法,在该方法中,询问ActionMapper来决定这个请求是否需要调用某个Action;

    e) 如果ActionMapper决定需要调用某个Action,则ActionMapper会返回一个ActionMapping实例(存储Action的配置信息),并创建ActionProxy(Action代理)对象,将请求交给代理对象继续处理;

    f) ActionProxy对象根据ActionMapping和Configuration Manager询问框架的配置文件,找到需要调用的Action类;

    g) ActionProxy对象创建时,会同时创建一个ActionInvocation的实例;

    h) ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用;

    i) 一旦Action执行完毕,ActionInvocation实例负责根据struts.xml中的配置创建并返回Result。Result通常是一个需要被表示的JSP或者FreeMarker的模版,也可能是另外的一个Action链;

    j) 如果要在返回Result之前做些什么,可以实现PreResultListener接口,PreResultListener可以在Interceptor中实现,也可以在Action中实现;

    k) 根据Result对象信息,生成用户响应信息response,在生成响应过程中可以使用Struts2 框架中继承的标签,在此过程中仍会再次涉及到ActionMapper;
  • 相关阅读:
    Spring Boot将Mybatis返回结果转为驼峰的三种实现方式
    Lodash-一个好用的JavaScript工具库
    基于Docker搭建LNMP环境并启用ssl证书(certbot)
    CentOS忘记mariadb/mysql root密码解决办法
    Debian如何安装curl?
    SpringBoot Controller如何接收数组参数?
    nginx web服务器概念了解 配置
    c语言二维数组的转置
    顺序表有序插入数据
    elasticsearch master_not_discovered_exception
  • 原文地址:https://www.cnblogs.com/w-wfy/p/6416529.html
Copyright © 2011-2022 走看看