`

【转&批注】Struts1 控制流程

阅读更多

目前正在看Struts的源码,希望有一天能写出其中的接收转发的完整功能。
不小心看到下面的文字,感觉不错,就转过来了。
同时,有颜色的字体是我自己对其做的笔记。

 

 

Struts1.2依然是应用很广的框架,熟悉其基本的控制流程是必要的:
[
目前最新式1.3,但是也是08年更新的了。没办法,Apache已经全面停止对Struts1的更新了。]

一、ActionServlet的初始化

ActionServlet
作为Struts组件的前端控制器,由于web.xml的相应配置:

<load-on-startup>0</load-on-startup>

在应用一加载时即会被实例化并调用其init方法,init方法所做的主要工作有二:

1.
加载struts配置文件,并创建用于封装配置信息的ModuleConfig对象 
2.
加载资源文件,并创建用于封装资源文件的MessageResources对象 
需要注意两点:如果web.xml有多模块配置,将创建多个ModuleConfig对象和MessageResources对象分别用于封装各个模块的struts配置文件和资源文件。 
针对各个模块所创建的ModuleConfig对象和MessageResources对象将存储在ServletContext中,对应的属性名中有该模块名称的相应标识。 
另外,如果有相应配置的话,init方法还将初始化数据源和PlugIn

二、ActionServletprocess

所有形如*.do的请求(根据web.xml中的相关配置)将提交给ActionServlet,最终将调用其process方法。process方法的主要工作有三:
[ActionServlet
自身也有一个process()方法,作用是选择相应的Module进行处理。然后new一个RequestProcessor实例,并调用这个实例的process()方法]


1.
根据请求信息获知所请求的模块名称,从ServletContext中获得与请求模块对应的的ModuleConfig对象,并存储到request中。 
2.
根据模块信息获得相应的RequestProcessor对象,一个模块对应一个RequestProcessor对象,RequestProcessor对象将关联与所属模块对应的ModuleConfig对象。 
3.
调用RequestProcessor对象的process方法,将requestresponse作为参数传递给它。 


三、RequestProcessorprocess

RequestProcessor
对象的process方法的主要工作有五步:

1.
调用自己的 processPreprocess(request, response)方法,该方法不进行任何操作,用于子类重写扩展其功能。 

[该方法里面只有一条语句 return(true); 1.3的版本中,我没有在该process()方法里面看见对他的调用。在1.3版本中,第一步是获取映射的path。具体哪个path我不确定,不过觉得应该是对应着struts-config.xml中的<action>标签里面的type属性的值。获取path之后,处理一下其他的属性,比如localecontenttypenocache并检验是否已经预处理。]
2.
获得与请求地址所匹配的ActionMapping对象,AcionMapping对象用于封装一个特定action的配置信息。 
3.
根据ActionMapping中的配置信息获得ActionForm对象(该对象将缓存到requestsession中),并将表单数据填充到ActionForm中,然后根据ActionMapping的配置决定是否验证ActionForm,如果验证,将调用ActionFormvalidate方法,若其返回的ActionErros对象中包含ActionMessage对象则表示验证失败,将转向action配置信息input属性所指示的地址。 
4.
如果ActionForm无需验证或验证通过将创建并缓存与请求地址匹配的Action对象,将ActionMapping对象、ActionForm对象、requestresponse [以及Action对象] 作为参数调用其execute方法。 
5.
根据Action对象的execute方法返回的ActionForward对象,将请求转发或重定向到该ActionForward所封装的地址。 

分享到:
评论

相关推荐

    C# 使用 Spire 获取word批注和批注人 导出到excel

    sheet.Cells[0, 1] = "批注内容"; sheet.Cells[0, 2] = "批注日期"; // 填充数据 int rowIndex = 1; foreach (string[] commentInfo in commentsData) { sheet.Cells[rowIndex, 0] = commentInfo[0]; sheet...

    前端使用JQUERY实现批注功能

    以上是使用jQuery实现批注功能的基本流程。为了增强用户体验,还可以添加更多高级特性,如编辑和删除批注、拖动调整批注位置、支持图片和链接等。此外,考虑在多个设备和浏览器上的兼容性也是关键。记住,良好的代码...

    POI_添加批注

    1. **批注位置**:`XSSFClientAnchor` 的构造函数参数决定了批注的显示位置,需要根据实际需求调整。 2. **字体样式**:`XSSFFont` 可以设置多种字体属性,如字体颜色、加粗、斜体等。 3. **批注内容**:`...

    html+JavaScript网页批注.zip

    本项目的需求是创建一个类似Word中的批注功能,允许用户选中文本并在其两侧添加自定义标记,同时将批注内容存储在自定义标签的属性中。下面将详细阐述如何利用HTML和JavaScript来实现这一功能。 首先,我们需要理解...

    网页截图:注释&批注-crx插件

    语言:English,Français,español,italiano,中文 (简体),日本語 捕获整个页面或任何部分,矩形,圆形,箭头,线条和文字,模糊敏感信息,一键上传分享注释。支持PNG和链接 Great for capturing charts, graphs, and ...

    excel把指定单元格内容根据公式引用为批注

    #### 1. 自定义函数简介 在Excel VBA中,自定义函数允许用户创建自己的函数,这些函数可以接受参数并返回结果。这为解决特定问题提供了灵活性,尤其是当内置函数无法满足需求时。自定义函数通常用于执行复杂的计算...

    前端页面添加文字批注.rar

    通过学习这个示例,开发者可以了解到如何利用jQuery来实现前端页面批注功能的基本流程和关键技术点,为自己的项目提供灵感和参考。在实际应用中,可以根据具体需求进行调整和扩展,如增加批注的可编辑性、提高批注的...

    YunXian图纸批注[命令改为yu]20180423修.rar_YUNXIAN.VLX_YunXian_YunXian图纸批注

    1. **简洁易用**:设计者考虑到了用户的使用体验,使得批注过程简单直观。只需几步操作,用户就可以快速标注图纸上的细节,无论是尺寸、文字说明还是图形标记,都能轻松完成。 2. **高效批注**:工具提供了丰富的...

    1_JPA_批注参考.

    1. **@Entity**: 这个批注标记一个Java类为实体类,表示该类将在数据库中对应一个表。例如: ```java @Entity public class User { // ... } ``` 它默认使用类名作为表名,但可以通过@Table批注自定义表名。 ...

    YunXian3.1(图纸批注)(1)_图纸批注_YunXian3.1_yunxian3.1.vlx_

    《YunXian3.1:一款高效便捷的CAD图纸批注工具》 在CAD(计算机辅助设计)领域,高效准确地对图纸进行批注是设计师日常工作中不可或缺的一部分。YunXian3.1就是这样一款专为CAD用户设计的图纸批注工具,它通过其...

    canvas 移动端画板批注pdf预览

    在移动设备上实现PDF预览并添加批注功能,通常会...实现这样的功能需要对Canvas、PDF.js以及移动端事件处理有深入理解,同时要注意性能优化,比如分页渲染和批注的高效存储。希望这个解答能帮助你理解并实现相关功能。

    Excel 2013——添加批注.pdf

    此外,可以通过“审阅”菜单下的“显示/隐藏批注”选项来控制整个工作表的批注可见性。 **删除批注** 如果不再需要某个单元格的批注,可以选中该单元格,然后再次右键点击并选择“删除批注”,或者在“审阅”菜单中...

    Excel 2021单元格批注功能使用教程.docx

    在Excel 2021中,用户可以通过“审阅”选项卡上的“批注”组来控制批注的可见性。若要隐藏批注,只需选择含有批注的单元格,然后单击“显示/隐藏批注”按钮。如果批注当前是可见的,单击该按钮将隐藏批注;再次单击...

    Excel2021 批注添加、删除、打印批注.docx

    在处理Excel表格数据时,往往伴随着信息量大、细节繁多的情况,这时候批注的作用就显得尤为重要。Excel中的批注不仅能够为单元格提供额外的解释和说明,而且还可以在打印文档时一同呈现,便于记录和沟通。为了更加...

    HWPRO全文批注软件Office专用版

    HWPRO全文批注软件有以下八大特性:1、直接集成于Microsoft Word中,直接批改Word文件2、独创嵌入式连续化页面批注方式,滚动式跨页批注3、独创嵌入式对照清稿功能(政府行业版):在一个界面中同时显示原稿和批注稿...

    HTML 页面添加批注

    最近在做一个学校的XXX系统项目,因项目有个需求就是要像在word里面的添加批注功能一样,就是选中一段文字,然后为这些页面添加一些额外的信息;刚开始我们的方案是记录选中内容的下标,然后保存到数据库中,当要...

    在Word2021中使用Word文档批注功能.docx

    1. 选中文本 首先,在 Word 文档中选中需要进行批注的文字。选中文本后,Word 会在所选文字上添加一个用于输入批注的编辑框,并将该编辑框和所选文字显示为粉色。 2. 插入批注 在 Word 菜单栏依次单击“插入”&gt;...

    html5网页截图批注效果

    在批注功能中,Canvas提供了丰富的绘图方法,如`fillRect()`、`strokeRect()`用于画矩形,`beginPath()`、`moveTo()`、`lineTo()`等用于画曲线和线条,`fillText()`用于添加文本,以及`save()`、`restore()`用于保存...

    CHM格式文档批注工具

    1. 打开CHM文件:用户首先需要使用支持批注功能的工具打开CHM文档。 2. 添加批注:在需要的地方点击或选择文本,然后通过工具栏或右键菜单选择添加批注选项。 3. 编辑批注:用户可以输入文字、插入图片或链接,对...

    在Word2021中如何答复批注.docx

    ### 在Word2021中如何答复批注 #### 知识点概述 在Microsoft Word 2021中,用户可以通过多种方式对文档中的批注进行答复。这对于团队协作和文档审查非常重要,因为它允许作者和其他参与者就文档内容的具体部分进行...

Global site tag (gtag.js) - Google Analytics