actionservlet struts流程

2024-01-28 16:32
文章标签 流程 struts actionservlet

本文主要是介绍actionservlet struts流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

actionservlet struts流程



ActionServlet class 是整个struts 框架的骨干,也是主要的控制部件,它能够处理客户request 并且决定由哪个Action 处理 客户request。它象一个Action工厂,创建基于客户request清求的Action类的对象

ActionServlet class是一个简单的Servlet,就像其他的Servlet一样,它继承了javax.servlet.http.HttpServlet 并且实现了HttpServlet 的每一个生命方法,其中包括init(), doGet(), doPost(), and destroy() 。其中有两个主要的方法doGet() and doPost(). 它们的代码如下

public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {

process(request, response);

}

public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {

process(request, response);

}
这两个方法惊人的相似,它们都调用同一个单纯的方法process()。Struts的特效行为就是通过这两个方法开始的。process()方法处理所有的request并且还有下面的方法信号
protected void process(HttpServletRequest request,
HttpServletResponse response);

当ActionServlte 得到一个清求时,执行下列步骤


1.doGet(), doPost()收到一个请求并调用process()方法
2.process()方法得到当前RequestProcessor 类和调用RequestProcessor.process()方法
3.RequestProcessor.process()方法为当前得到的请求服务。本方法从struts-config.xml文件里重新得到<action>元素,<action>元素是用来匹配从request对象上提交过来的path。做以上事情是通过匹配传来的<html:form>中action元素和<action>中path元素是否相同。代码如下
<html:form action="/Lookup"
name="lookupForm"
type="ch04.LookupForm" >

<action path="/Lookup"
type="ch04.LookupAction"
name="lookupForm" >
<forward name="success" path="/quote.jsp"/>
<forward name="failure" path="/index.jsp"/>
</action>

4.RequestProcessor.process()匹配了<action>后,开始寻找<form-beans>中的name属性并和<action>中的name属性匹配。代码如下
<form-beans>
<form-bean name="lookupForm"
    type="ch04.LookupForm"/>
</form-beans>

<action path="/Lookup"
type="ch04.LookupAction"
name="lookupForm" >
<forward name="success" path="/quote.jsp"/>
<forward name="failure" path="/index.jsp"/>
</action>

5.当RequestProcessor.process()知道了FormBean的充分有资格的名字时,它开始创建或者重新得到一个池功能的
ActionForm对象并以<form-beans>的type属性命名,然后用request传来的值复给自己的date mumber(属性)

6.ActionForm 的属性复完值后,RequestProcessor.process()调用ActionForm.validate() 方法
,用来检查传来的值是否有效。

7.当RequestProcessor.process()知道所有它需要的东西后,就开始服务这个请求。它做这些是通过用
Action的名字同<action>的type属性匹配,然后调用Action的execute()方法

8.当Action类从处理中返回后,它的excute()方法返回一个ActionForward对象。它是用来决定这个事务的目标。(view)
RequestProcessor.process()重新控制,并且request被转到别决定的目标(view)






它是Structs应用程序的核心,它是主要的控制组件,用于处理客户端请求,决定哪一个Action类处理每个接收到的请求。


ActionServlet类,实质就是一个简单的servlet,和HttpServlet很相似,它继承自HttpServlet类,并且也实现了HttpServlet的生命周期方法,init,doGet,doPost,destroy。


所有指定的行为都起源于ActionServlet类的process()方法,它处理所有的请求。


ActionServlet接收到请求后,按照下面的步骤走:

1)doPost或者doGet收到请求并调用process方法。

2)process方法取得当前的RequestProcessor,然后调用它的process方法。

3)RequestProcessor.process()方法是所有请求得到真正处理的地方。这个方法从struts-config.xml文件找到<action>元素,取得它符合提交请求的路经。这个路经一般是用<html:form/>标记的action属性指定的。

4)如果process方法找到匹配的<action>,就会找到<form-bean>(其中的name属性和<action>元素的name属性一致)。

5) process()方法知道FormBean的完整命名后,会创建或者取得一个ActionForm的缓冲实例,这个ActionForm的命名由<form-bean>元素的类型属性命名,然后将请求中提交的值填入这个实例中。

6) 填充完数据后,process方法调用ActionForm的validate方法,对提交的值进行验证。

7)这时,process方法就可以开始处理请求了。它从<action>元素的type属性取得完整的Action类名,然后创建这个类,然后调用这个Action子类的execute方法。

8)Action类从processing返回后,execute方法返回一个ActionForward对象,这个对象用于确定这个事务处理的目标。process方法继续控制,请求也会被转发到确定的目标。

9)到这里,ActionServlet实例就完成了它处理请求的过程,并且已经准备好了为将来的请求进行服务

这篇关于actionservlet struts流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/654170

相关文章

SpringBoot使用minio进行文件管理的流程步骤

《SpringBoot使用minio进行文件管理的流程步骤》MinIO是一个高性能的对象存储系统,兼容AmazonS3API,该软件设计用于处理非结构化数据,如图片、视频、日志文件以及备份数据等,本文... 目录一、拉取minio镜像二、创建配置文件和上传文件的目录三、启动容器四、浏览器登录 minio五、

Nginx、Tomcat等项目部署问题以及解决流程

《Nginx、Tomcat等项目部署问题以及解决流程》本文总结了项目部署中常见的four类问题及其解决方法:Nginx未按预期显示结果、端口未开启、日志分析的重要性以及开发环境与生产环境运行结果不一致... 目录前言1. Nginx部署后未按预期显示结果1.1 查看Nginx的启动情况1.2 解决启动失败的

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

kubelet组件的启动流程源码分析

概述 摘要: 本文将总结kubelet的作用以及原理,在有一定基础认识的前提下,通过阅读kubelet源码,对kubelet组件的启动流程进行分析。 正文 kubelet的作用 这里对kubelet的作用做一个简单总结。 节点管理 节点的注册 节点状态更新 容器管理(pod生命周期管理) 监听apiserver的容器事件 容器的创建、删除(CRI) 容器的网络的创建与删除

火语言RPA流程组件介绍--浏览网页

🚩【组件功能】:浏览器打开指定网址或本地html文件 配置预览 配置说明 网址URL 支持T或# 默认FLOW输入项 输入需要打开的网址URL 超时时间 支持T或# 打开网页超时时间 执行后后等待时间(ms) 支持T或# 当前组件执行完成后继续等待的时间 UserAgent 支持T或# User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器

UMI复现代码运行逻辑全流程(一)——eval_real.py(尚在更新)

一、文件夹功能解析 全文件夹如下 其中,核心文件作用为: diffusion_policy:扩散策略核心文件夹,包含了众多模型及基础库 example:标定及配置文件 scripts/scripts_real:测试脚本文件,区别在于前者倾向于单体运行,后者为整体运行 scripts_slam_pipeline:orb_slam3运行全部文件 umi:核心交互文件夹,作用在于构建真

C++/《C/C++程序编译流程》

程序的基本流程如图:   1.预处理        预处理相当于根据预处理指令组装新的C/C++程序。经过预处理,会产生一个没有宏定义,没有条件编译指令,没有特殊符号的输出文件,这个文件的含义同原本的文件无异,只是内容上有所不同。 读取C/C++源程序,对其中的伪指令(以#开头的指令)进行处理将所有的“#define”删除,并且展开所有的宏定义处理所有的条件编译指令,如:“#if”、“

笔记本电脑的具体选购步骤流程

2.1 笔记本电脑的具体选购步骤流程   关于笔记本电脑的选购,一直是热点话题。不管是新手还是老前辈,选购前,总是要先上网查一查,汇总一些信息或经验。因为选购一台笔记本电脑,从它的配置、外观到做工等很多方面都需要考量,所以挑一台自己喜欢的、适合自己的笔记本电脑也是一件很费脑筋的事情。本节将一些选购笔记本电脑的经验进行了总结,供广大读者选购笔记本电脑时参考。   笔记本电脑选购流程如下