• Struts2整体构架


    由于这几天在学习Struts2框架,自己有点体会,写下来以便自己复习,同时也整理下学习框架的思路。个人感觉学习struts2框架,应该先了解struts2的整体构架。

    上图是strut2官网上的整体构架。

    struts2工作流程大致如下:

    (1)浏览器客户端发送HttpServletRequest请求。

    (2)经过servlet组件中的一系列的过滤,比如ActionContentCleanUp,SiteMesh等这些过滤器是可选的,对struts2和其他框架集成时有帮助。FilterDispatcher是Struts2的核心控制过滤器,一般只需要在web.xml中配置FlterDispatcher这个过滤器就可以了。

    (3)当经过FilterDispatcher过滤器时,FilterDispatcher会调用doFilter方法,通过该方法询问ActionMapper,ActionMapper根据请求的url找到相应的Action类返回给FilterDispatcher。

    (4)FilterDispatcher将控制权交给ActionProxy,ActionProxy通过ConfigurationManger读去Struts.xml中内容找到所需调用的Action实例并获取拦截器链等信息,并实例化ActionInvocation类。

    (5)ActionInvocation类,根据自身持有的拦截器链,按照拦截器链来调用各个拦截器,比如Exception拦截器、params拦截器等,拦截器主要完成一些参数的解析、数据验证等功能,执行拦截器后,开始执行Action类的excute方法,根据excute方法返回的结果,调用相应的视图,然后再经过拦截器的拦截后,将数据写到HttpServletResponse中,返回给浏览器客户端。注拦截器的调用采用类似递归调用的方式,ActionInvocation会调用invoke方法,该方法会判断拦截器是否调完,如没有调完会继续调用拦截器。

    框架的大致流程就是这样,但是在struts2.2.1中StrutsPrepareAndExecuteFilter替代的FilterDispatcher类,但是struts2的大致流程是没有变化的。

    以上内容是参考网上部分教程写的,由于是新手可能某些地方说的不对,欢迎大家的指正。

  • 相关阅读:
    查看sql 语句io执行情况
    MVC API 返回json 对象,使用netjson 返回
    微信支付——调用微信客户端支付之【服务端】开发详解
    React-Native hello word 搭建及新手常见问题
    PD中将Comment 从Name复制值
    Redis_DataType
    ConCurrent in Practice小记 (1)
    单链表是否存在环的检测(快慢指针法)
    开园第一天
    我希望……
  • 原文地址:https://www.cnblogs.com/guiyi/p/struts2_1.html
Copyright © 2020-2023  润新知