struts1.2源码分析记录

struts思路:
1.struts使用的三板斧ActionForm、DispatchAction、ActionMapping
2.主要关注点:Form、Action、Forward
3.页面如何发送请求参数,后台如何截取.do请求,如何将参数组装成Form,在Action中如何操作Form,如何查找目标页面,如何将Form返回到页面,页面如何通过标签读取Form属性

框架主流程:
Struts所有的请求都要走DispatchAction类的public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse res)方法
可以重载execute方法(完成用户校验,数据库连接初始化),并可以根据method参数将操作转向处理方法。

框架细节:
1.接收.do请求
2.将参数转化成ActionForm
3.找到对应DispatchAction并将ActionForm传递给该DispatchAction的对应方法
4.从mapping中找到目标页面,将ActionForm进行序列化,发送到页面
5.页面通过标签对Form进行解析
框架细节代码(处理http请求并返回):
1.ActionMapping mapping = processMapping(request, response, path);
2.ActionForm form = processActionForm(request, response, mapping);
3.processPopulate(request, response, form, mapping);
4. ActionForward forward =processActionPerform(request, response,action, form, mapping);
5.processForwardConfig(request, response, forward);
6.response.sendRedirect(response.encodeRedirectURL(uri));
7.RequestDispatcher rd = getServletContext().getRequestDispatcher(uri); rd.forward(request, response);

从配置文件和解析配置文件入手
1.struts-config.xml的结构
a.主要元素:data-sources、form-beans、action-mappings、global-forwards、global-exceptions、message-resources、plug-in
b.通过common-digester工具包结合dtd进行xml的自动解析和加载
2.解析struts-config.xml的过程
a.ModuleConfig是与struts-config.xml配对的java对象
b.将xml配置信息加载到内存后,会将资源分配给各个需要的模块并进行初始化

struts1.2源码分析记录,布布扣,bubuko.com

时间: 2024-12-09 01:29:26

struts1.2源码分析记录的相关文章

Activity的创建和显示以及源码分析记录

Tips:此源码分析基于Android 4.2 先来看看一个Activity上的UI控件结构: 图1-1 Activity中的UI组件结构 好了现在开始分析...... 一.Activity的创建 了解android的zygote分裂你会知道,每个APP都是zygote的子进程,而他的入口函数是ActivityThread类中的main函数.其中有一个handleLaucherActivity函数,这里就是 创建Activity的地方. private void handleLaunchActi

seajs3.0.0源码分析记录

自己边读变加了一些注释,理解了一下seajs3.0.0工作的流程.正则没有一个个去理解,插件模块也没看, 以后有时间了可以补充完整~ 事件系统中事件队列的获取&定义方法 var list = events[name] || (events[name] = []) 以前自己写都是 if(!events[name]){ events[name]=[]; } var list=events[name]; 囧 加载模块文件的方法 webworker环境下加载模块文件 获取seajs的加载路径: var

建筑材料asp.net mvc项目源码分析记录

1.开发工具 vs2010 sp1 mvc4, 问题: 最近遇到项目开发项目,需要缺少的 Web 组件才能进行加载.是否立即使用 Web 平台安装程序下载并安装这些组件? 解决方法如下: 1. 用记事本打开项目XXX.csproj文件,找到WebProjectProperties节点下的 <UseIIS>True</UseIIS>节点,然后改为     <UseIIS>false</UseIIS>即可:

HashMap与TreeMap源码分析

1. 引言     在红黑树--算法导论(15)中学习了红黑树的原理.本来打算自己来试着实现一下,然而在看了JDK(1.8.0)TreeMap的源码后恍然发现原来它就是利用红黑树实现的(很惭愧学了Java这么久,也写过一些小项目,也使用过TreeMap无数次,但到现在才明白它的实现原理).因此本着"不要重复造轮子"的思想,就用这篇博客来记录分析TreeMap源码的过程,也顺便瞅一瞅HashMap. 2. 继承结构 (1) 继承结构 下面是HashMap与TreeMap的继承结构: pu

Solr4.8.0源码分析(22)之 SolrCloud的Recovery策略(三)

Solr4.8.0源码分析(22)之 SolrCloud的Recovery策略(三) 本文是SolrCloud的Recovery策略系列的第三篇文章,前面两篇主要介绍了Recovery的总体流程,以及PeerSync策略.本文以及后续的文章将重点介绍Replication策略.Replication策略不但可以在SolrCloud中起到leader到replica的数据同步,也可以在用多个单独的Solr来实现主从同步.本文先介绍在SolrCloud的leader到replica的数据同步,下一篇

CloudStack核心类ApiServlet、ApiServer、ApiDispatcher、GenericDaoBase源码分析

ApiServlet 首先从整体上看下ApiServlet,Outline视图如下, 一.注意@Inject依赖的是javax.inject.jar,它和spring的@Autowired的区别在于使用它时变量不用生成相应的set方法. 二.CloudStack所有的请求都会被ApiSerlet拦截处理,进入到doGet()或者doPost()方法,然后统一交由processRequest()处理. 三.processRequestInContext()方法: 1.更多的是日志记录和异常信息处理

Webpack-源码三,从源码分析如何写一个plugin

经过上一篇博客分析webpack从命令行到打包完成的整体流程,我们知道了webpage的plugin是基于事件机制工作的,这样最大的好处是易于扩展.社区里很多webpack的plugin,但是具体到我们的项目并不一定适用,这篇博客告诉你如何入手写一个plugin,然后分析源码相关部分告诉你你的plugin是如何工作.知其然且知其所以然. 该系列博客的所有测试代码. 从黑盒角度学习写一个plugin 所谓黑盒,就是先不管webpack的plugin如何运作,只去看官网介绍. Compiler和Co

S5PV210-uboot源码分析-第一阶段

uboot源码分析1-启动第一阶段 1.starts.S是我们uboot源码的第一阶段: 从u-boot.lds链接脚本中也可以看出start.S是我们整个程序的入口处,怎么看出的呢,因为在链接脚本中有个ENTRY(_start)声明了_start是程序的入口.所以_start符号所在的文件,就是我们整个程序的起始文件,_start所在处的代码就是我们整个程序的起始代码. 2.我们知道了程序的入口是_start这个符号,但是却不知道是在哪一个文件中,所以要SI进行查找搜索,点击SI的大R进行搜索

S5PV210-uboot源码分析-uboot环境变量

9.1.uboot的环境变量 1.环境变量的作用 (1)在我们不改变uboot源代码的情况下,只需要改变环境变量的值就可以改变uboot运行时的数据和一些特性.比如说,通过修改bootdelay环境变量,就可以更改开机倒数的秒数. 2.环境变量的优先级 (1)uboot代码当中有一个值,环境变量(DDR 环境变量的分区中)中也有一个值,uboot程序实际运行时,规则是,如果环境变量(DDR中环境变量的分区)为空,则使用代码中的环境变量的值,如果环境变量不为空,优先使用环境变对应的值. (2)比如