原始内容:https://www.tutorialspoint.com/struts_2/basic_mvc_architecture.htm

架构(很重要!尤其是图!)

从一个比较高的层次来看,Struts2是一个pull-MVC(或者MVC2)框架。

Struts2的 Model-View-Controller 模式通过以下五个核心组件实现:

  • Actions

  • Interceptors

  • Value Stack / OGNL

  • Results / Result types

  • View technologies

Struts2和传统的MVC框架略有不同,尽管有一些重叠,在Struts2中,Action扮演的是模型的角色,而非控制器。

【注释】可以看到,setXxx()和getXxx()是一对的!

上图描绘了Struts2的高层次架构。控制器是通过Struts2 分派servlet过滤器以及拦截器进行实现,模型是通过Actions进行实现,而视图则是结果类型结果的结合。值栈和OGNL提供公共的thread、linking以及与其他组件之间的集成。

除了上述的组件之外,还有许多配置相关的信息。例如web应用的配置,Actions的配置,拦截器的配置,results的配置等。

这仅仅只是Struts2 MVC模式的体系结构的一个概述,在之后的章节中,我们将详细了解各个组件。

请求的生命周期(重要!!!)

基于上图,我们可以很容易地描述Struts2中请求的生命周期:

  • 用户发送一个请求给服务,期望获得某些资源(比如,页面)
  • 过滤分派器(FilterDispatcher)查看这个请求,然后确定适当的Action.
  • 通过验证、文件上传等方式来配置“拦截器(interceptors)”功能。
  • 被选中的Action执行响应请求的操作
  • 另外,如果需要的话,已配置的“拦截器”可以被用来做任何“后期处理”
  • 最后,由视图显示结果并返回给用户。

Struts2笔记03——架构(转)的更多相关文章

  1. struts2 笔记03 异常支持、防止页面刷新和后退、方法验证

    Struts2对异常支持(声明式异常.自动的异常处理), 异常处理(运行期异常事务自动回滚) 1. 自定义异常类,继承RuntimeException或Exception实现构造方法. 2. 配置异常 ...

  2. Redis:学习笔记-03

    Redis:学习笔记-03 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 7. Redis配置文件 启动 ...

  3. 《30天自制操作系统》笔记(03)——使用Vmware

    <30天自制操作系统>笔记(03)——使用Vmware 进度回顾 在上一篇,实现了用IPL加载OS程序到内存,然后JMP到OS程序这一功能:并且总结出下一步的OS开发结构.但是遇到了真机测 ...

  4. JS自学笔记03

    JS自学笔记03 1.函数练习: 如果函数所需参数为数组,在声明和定义时按照普通变量名书写参数列表,在编写函数体内容时体现其为一个数组即可,再传参时可以直接将具体的数组传进去 即 var max=ge ...

  5. 机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理、源码解析及测试

    机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理.源码解析及测试 关键字:决策树.python.源码解析.测试作者:米仓山下时间:2018-10-2 ...

  6. CS229 笔记03

    CS229 笔记03 局部加权线性回归 Non-Parametric Learning Algorithm (非参数学习方法) Number of parameters grows with the ...

  7. OpenCV 学习笔记03 边界框、最小矩形区域和最小闭圆的轮廓

    本节代码使用的opencv-python 4.0.1,numpy 1.15.4 + mkl 使用图片为 Mjolnir_Round_Car_Magnet_300x300.jpg 代码如下: impor ...

  8. OpenCV 学习笔记03 findContours函数

    opencv-python   4.0.1 1 函数释义 词义:发现轮廓! 从二进制图像中查找轮廓(Finds contours in a binary image):轮廓是形状分析和物体检测和识别的 ...

  9. C++ GUI Qt4学习笔记03

    C++ GUI Qt4学习笔记03   qtc++spreadsheet文档工具resources 本章介绍创建Spreadsheet应用程序的主窗口 1.子类化QMainWindow 通过子类化QM ...

随机推荐

  1. mysql explain22222 system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL

    MySQL性能分析及explain用法的知识是本文我们主要要介绍的内容,接下来就让我们通过一些实际的例子来介绍这一过程,希望能够对您有所帮助. .使用explain语句去查看分析结果 如explain ...

  2. X264码率控制总结

    ABR,CQP,CRF X264显式支持的一趟码率控制方法有:ABR, CQP, CRF. 缺省方法是CRF.这三种方式的优先级是ABR > CQP > CRF. if ( bitrate ...

  3. Spring MVC参数方法名称解析器

    以下示例显示如何使用Spring Web MVC框架来实现多动作控制器的参数方法名称解析器. MultiActionController类可在单个控制器中分别映射多个URL到对应的方法. 所下所示配置 ...

  4. iOS 创建多个button实现点击改变背景颜色

    工程中需要实现与UISegmentedControl效果相似的一排一共十个button,如下图.但是SegmentedControl修改不太方便,就用button替代, 循环创建十个button,点击 ...

  5. Uva1025 A Spy in the Metro

    #include <iostream> #include <cstring> #include <cstdio> using namespace std; ]; ] ...

  6. 用训练好的caffemodel对单个/批量图片进行分类

    一.单个图片进行分类 这个比较简单,在*.bat文件中输入以下代码: @echo off set BIN_DIR=D:\caffe\caffe-windows\Build\x64\Release se ...

  7. I - Doing Homework again(贪心)

    I - Doing Homework again Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & ...

  8. AJAX与后台交互传参的两种方式

    工作中的简单总结备忘,防遗失. 第一种:直接传入json数据(后台一个一个入参对接) 1- js请求: var data = {}; data = {"infoId":infoId ...

  9. <2013 12 28> AOI PCB设计

    主要设计指标: “3.多块拼板最大尺寸:60*50(CM)4. 检测速度:(230-250)片/小时 5.检测通过率:98%6.最窄线宽:设两种精度 A.最窄线宽:0.2mm, 识别精度 0.1mm  ...

  10. 如何使用模板生成 sqlite3 sql 创建语句?

    template<typename T,typename... Args> std::string createTable(T tableName,Args&&... ar ...