Struts2学习(1):Struts2框架结构详解
来源:互联网 发布:易企cms怎么换模板 编辑:程序博客网 时间:2024/05/20 18:18
前言
Struts2是一个相对流行的MVC框架。在说Struts2之前,我们先回顾一下传统的servlet/jsp实现的MVC架构,其运行机制是:jsp页面(视图view)发送消息到servlet(控制器Controller),servlet获取请求数据,处理业务逻辑,分发转向。这样的话,servlet就太臃肿了,什么活儿都是servlet在干,而且业务逻辑全是硬编码,代码都写死了不利于维护。
Struts2框架的MVC分别对应:
V:jsp+OGNL
C:action类
M:javabean+ModelDriven
Struts2框架的控制器将“获取请求”和“分发转向”代码抽取出来写在配置文件里,这样一来,控制器(action类)就能专注于业务逻辑的处理了。
正文
1,一个完整的Struts2项目的web目录结构及主要文件的执行流程
各文件执行流程关系
由上图可以看出,Struts2的MVC各个部分都是围绕着struts.xml文件执行的,这样就解放了控制器的负担,而且解决了硬编码的问题。
2,Struts2框架的内部执行过程
上面讲了MVC中个文件的执行过程,那只是一小部分,现在来看一下整个struts2框架的执行机制,下面的图来源于官网,然后加了自己的改动。
由上图看出,整个框架的运行又紧紧围绕着核心过滤器StrutsPrepareAndExecuteFilter展开工作。深入到filter的源码中会对理解有所帮助。下面几篇博客对filter的介绍很好。
(1),struts2请求过程源码分析:博客1
(2),Struts 2配置文件加载顺序:博客2
3,默认拦截器
struts-default.xml配置文件中定义了一个默认拦截器栈,这些拦截器就是动作方法执行之前的要执行的。常用的有封装用户表单数据到javabean的modelDriven拦截器,用于输入验证的validation拦截器,等等。
4,View和Controller之间的交互
从视图页面每次发来的用户请求都会产生一些数据,这些数据都存放在哪儿呢?实际上,每次动作类执行前,核心过滤器StrutsPrepareAndExecuteFilter都会创建2个对象:ActionContext和ValueStack,这2个对象存储了动作访问期间用到的所有数据。这些数据又可以在jsp页面上通过strut标签和OGNL表达式来取得。
(1),ActionContext是一个map数据结构,其中的key是一些常见的域对象(application,session,request等),而value又是一个map。也就是说ActionContext是一个大map包裹着一些小map。
(2),ValueStack是一个ArrayList数据结构,并且是一个栈结构,每次都在栈顶存取数据。
5,Controller与Model之间的交互
C和M之间的交互比较简单,利用Struts框架提供的拦截器:ModelDriven,即可实现将用户表单提交的数据封装到对应的javabean中。要点:(1)javabean类自己编写。(2)动作类要实现ModelDriven接口。(3)实现抽象方法getModel()。
总结
本文从宏观角度解读了Struts2框架的基本结构,每个部分的具体细节以后再讲。
- Struts2学习(1):Struts2框架结构详解
- Struts2学习笔记(1)-Struts2概览
- struts2 学习(1)
- Struts2学习(1)
- struts2学习(1)
- 【Struts2学习笔记(13)】Struts2中OGNL详解
- Struts2系统学习(17)Struts2标签库详解
- Struts2学习(四)---Struts2工作原理详解
- JAVA_WEB Struts2学习:struts2标签详解
- struts2配置详解(1)
- Struts2 标签详解(学习深入)
- 初学struts2笔记---框架结构action等说明
- Struts2入门:框架结构、处理步骤、配置文件
- struts2学习总结(1)
- Struts2学习记录(1)
- 学习struts2框架(1)
- STRUTS2学习笔记(1)
- struts2学习笔记(1)
- Beware of the stopwatch
- 10:数字组合
- 4.Django入门:教程-管理站点
- sonar常见错误以及处理方案
- C#委托的测试
- Struts2学习(1):Struts2框架结构详解
- Tomcat7.0安装配置详细(图文)
- #18.2#3D数学-向量(Vector)
- mybatis的设置
- 设计模式之适配器模式
- Unity3D 自定义UI组件画圆、圆弧、扇形
- 3D建模与处理软件简介
- Web服务器性能/压力测试工具http_load、webbench、ab、Siege使用教程
- 四种以太网帧格式