6月15日 struts1.x初级

本文介绍了Struts框架的启动过程及请求处理流程,包括ActionServlet的初始化、表单数据的处理与验证、ActionMapping的工作机制等核心内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

struts执行流程:
  1。启动服务器做的工作:

       (1)* 服务器启动时,根据web.xml文件的配置信息实例化ActionServlet

        (2)* ActionServlet加载struts-config.xml文件,读物信息放置到内存中

* 客户端发出请求, 例如请求路径:/empAction.do(ActionServlet要求是*.do的格
   式,这样才能走ActionServlet)
* ActionServlet解析请求路径/empAction
* ActionServlet 根据解析后的请求路径/empAction在struts-config.xml文件中查找,该路径所对应的path属性,找到type属性,获取属性值
*  ActionServlet 创建type执行类的实例(cn.itcast.web.action.EmpAction),上朔到Action类型,调用execute方法

 

开发人员:
  定义请求路径是*.do
  定义xxxAction extend Action 重写execute方法
  配置struts-config.xml文件

 

 

2。struts含有表单执行流程:

* 1  客户端发出请求, 例如请求路径:/login.do(ActionServlet要求是*.do的格
   式,这样才能走ActionServlet)
* 2 ActionServlet解析请求路径/loginAction
* 3  ActionServlet 根据解析后的请求路径/loginAction在struts-config.xml文件中查找,该 路径所对应的path属性.

* 4 ActionServlet根据action中name属性的值,找到封装表单数据的javaBean(LoginForm)
* 5 ActionServlet把表单的数据封装到javaBean(ActionForm对象)
* 6 ActionServlet把<action path="/login" name="loginForm"  scope="request"  type="cn.itcast.web.action.LoginAction"></action>
   信息封装到javabean ---ActionMapping中
* 7 ActionServlet根据path获取到type属性的值
* 8  ActionServlettype执行Action类的实例(cn.itcast.web.action.LoginAction),上朔到Action类型,
* 9  Action类的实例 调用execute方法(6步产生ActionMaping对象,5步产生的ActionForm对象,请求对象,响应对象)
* 10 在重写的execute方法中开发人员处理********************************
* 11 ActionServlet根据execte方法返回的ActionForward对象,后去path属性值,转发或者重定向

开发人员:
  定义请求路径是*.do
  定义xxxAction extend Action 重写execute方法
  配置struts-config.xml文件

工作流程

 

 

 

 

 

 

 ActionServlet

 

 RequestProcessor

 

lorg.apache.struts.action.RequestProcessor类型真正封装了Struts控制器在处理servlet请求时所遵循的控制逻辑。
lActionServlet通过调用RequestProcessor对象的process()方法来委托其处理客户端请
l ActionForm:
 
创建一个ActionForm 并不困难,但是你的类必须符合一些要求:
ActionForm 必须扩展自org.apache.struts.action.ActionForm。基类ActionForm 是不能实例化的。
ActionForm 必须为每个应该从请求中收集的HTML输入控件定义一个公共属性。
ActionForm还可能要符合一些可选的要求:
如果你要求ActionForm 在传递属性到Action之前校验它们,你就必须实现validate方法
如果想在组装前初始化属性,必须实现 reset , 它在ActionForm 组装前被调用
  作用
数据校验器: validate 方法
 
3ActionForm 作为类型转换器
1ActionForm 作为字段收集器
疑问:struts的action中attribute属性是什么作用?
回答:
为<action>中name属性制定的ActionForm制定一个key关键字,这样就可根据scope属性指定的范围获取该ActionForm:
如:
<action 
  name="userForm" 
  attribute="user"
  scope="request"
  ……
/>
通过ActionForward 用forward转发后可以
则可通过request.getAttribute("user")获取"userForm"指定的ActionForm。
如果省略attribute属性,则可通过request.getAttribute("userForm")获取ActionForm
 ActionMapping :
 
l系统针对每个<action>元素都创建一个与之对应的 ActionMapping一组ActionMapping 对象被放在一个ActionMappings 集合之中(org.apache.struts.action.ActionMappings).
lActionMapping将对Struts 应用中有效的业务逻辑进行分类。当一个请求到达时,ActionServlet(使用 path 属性)ActionMapping目录中查找对应条目,并调用相应的Action Bean。当ActionServlet转发请求时,ActionMapping实例被作为参数之一传递给相应Action对象的execute()方法
   
path
来自于请求的URI 路径,用来选择该mapping(API 命令)
forward
通过一个forward 服务这个请求的上下文相关的资源路径。实际上是forwardincludetype
属性中的一个,必须指定。
include
通过一个include 服务这个请求的上下文相关的资源路径。实际上是forwardincludetype
 属性的一个,必须指定。
type
可选,表明一个org.apache.struts.action.ActionMapping的子类名称,在实例化这个mapping
 时使用。
name
与该Mapping 相关的form bean 的名称,如果有的话。这不是类名称。而是在form bean 配置
中使用的逻辑名称。
scope
范围(请求或会话)识别符,如果有的话。与该mapping 相关的formaBean 在其中创建。
validate
如果与该mapping 相关的 form bean validate 方法 (如果有)需要被调用,则设置为
true。默认值是true
input
输入表单的上下文相关的路径,如果校验错误,控制应该被返回到该表单。可以是任何:
HTMLJSPVM,或者另一个ActionMapping。转发的过程
parameter
通用配置参数,用来向ActionMapping 选定的Action
传递额外的参数信息。
attribute
如果它不是 bean 的特定名称的话,则表示form bean 在要在其中被访问的请求-范围或者会话-范围的属性名称。
DispatchAction:
 
**在该action 的配置中,增加了parameter属性,该属性用于指定参数名,即Struts 将根据该参数的值调用对应的方法**
Struts 配置元素介绍:
 
元素
说明
set-property
标识一个额外的JavaBean 配置属性的方法名称和初始化值。
global-exceptions
描述一个可以被Action 对象抛出的异常的集合
exceptions
为一个异常类型注册ExceptionHandler
form-beans
描述这个应用模块中的form bean 描述符集合
form-bean
描述一个可以被<action>元素引用的ActionForm 子类
form-properties
描述一个 JavaBean 属性, 可用来配置一个DynaActionForm 实例或者其子类
global-forwards
描述对所有Action 对象都可以作为返回值的ActionForward 对象集合
forward
描述一个可以被Action 作为返回值的ActionForward对象
action-mappings
描述一个可以用来处理匹配ActionServlet 注册到容器的url-pattern 格式的请求的ActionMappings
象集合
action
描述一个ActionMapping 对象,可以用来处理一个对特定的模块相关的URI 的请求
controller
描述一个封装了应用模块运行时配置的控制器配置bean
message-resources
描述该模块的消息模板一起配合使用的消息资源MessageResources 对象
plug-in
标识一个通用应用的plug-in 模块的全限定类名,它接受应用的启动和退出事件的通知
 
Struts配置元素介绍
 
struts-config.xml配置文件--<action>
lAction对应的是配置文件中的子元素<action>
lpath - 和本Action匹配的请求页面相对路径,不包括后缀(如".do"),该相对路径必须以"/"开头。本例中表明该Action负责接收login.do请求。
ltype - 指定处理请求的Action类,必须是包含完整的package路径的类名。
lname - 指定要用到的ActionForm的名字。该名字必须在前面的<form-beans>元素中声明过。
lscope - 规定ActionForm的使用范围,缺省为session范围,这里规定为request
linput - 表单验证出错时要转向的错误处理页面。
lforward - 指定目标响应页面。
lStruts架构中Controller组件的核心控制器组件是ActionServlet
lorg.apache.struts.action.ActionServlet类型的servlet
l所有客户端提交的用户请求都由它进行处理
负责接收客户端请求后将之分发到相应的Action Bean处理,再根据处理的结果将不同的显示请求重定向到响应页面。
实际上,ActionServlet完全是在幕后工作,它将其他组件绑定在一起。
l与控制器组件相关的类主要包括:
ActionServletStruts架构的中央控制器,用于接受浏览器客户端用户请求以及状态改变,并依据处理结果选择表示层不同视图的重定向。
RequestProcessor:包含了Struts控制器在处理servlet请求时所遵循的控制逻辑。
Action:控制器的一部分,用于模型交互,执行状态改变或状态查询,以及告诉ActionServlet 下一个选择的视图。
ActionForm:用于保存表单数据相关的状态数据的改变。
ActionMapping:用于控制在状态数据改变后的事件处理的方式。
ActionForward:用户指向或者视图选择
l
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值