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
如:
<action
name="userForm"
attribute="user"
scope="request"
……
/>
则可通过request.getAttribute("user")获取"userForm"指定的ActionForm。
如果省略attribute属性,则可通过request.getAttribute("userForm")获取ActionForm
path
|
来自于请求的URI 路径,用来选择该mapping。(API 命令)
|
forward
|
通过一个forward 服务这个请求的上下文相关的资源路径。实际上是forward,include,type
属性中的一个,必须指定。
|
include
|
通过一个include 服务这个请求的上下文相关的资源路径。实际上是forward,include,type
属性的一个,必须指定。
|
type
|
可选,表明一个org.apache.struts.action.ActionMapping的子类名称,在实例化这个mapping
时使用。
|
name
|
与该Mapping 相关的form bean 的名称,如果有的话。这不是类名称。而是在form bean 配置
中使用的逻辑名称。
|
scope
|
范围(请求或会话)识别符,如果有的话。与该mapping 相关的formaBean 在其中创建。
|
validate
|
如果与该mapping 相关的 form bean 的 validate 方法 (如果有)需要被调用,则设置为
true。默认值是true
|
input
|
输入表单的上下文相关的路径,如果校验错误,控制应该被返回到该表单。可以是任何:
HTML,JSP,VM,或者另一个ActionMapping。转发的过程
|
parameter
|
通用配置参数,用来向ActionMapping 选定的Action
传递额外的参数信息。
|
attribute
|
如果它不是 bean 的特定名称的话,则表示form bean 在要在其中被访问的请求-范围或者会话-范围的属性名称。
|
元素
|
说明
|
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 模块的全限定类名,它接受应用的启动和退出事件的通知
|