Struts的工作流程
来源:互联网 发布:孚盟软件价格 编辑:程序博客网 时间:2024/06/11 21:01
对于采用Struts框架的Web应用,在Web应用启动时就会加载并初始化ActionServlet,ActionServlet从struts- config.xml文件中读取配置信息,把它们存放到各种配置对象中,例如Action的映射信息存放在ActionMapping对象中。
当ActionServlet接受到一个客户请求时,将执行如下流程。
流程:
(1)减缩和用户请求匹配的ActionMapping实例,如果不存在,就返回用户请求路径无效的信息。
(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中。
(3)根据配置信息决定是否需要表单验证。如果需要验证,就调用ActionForm的validate()方法。
(4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActionErrors对象,就表示表单验证成功。
(5)ActionServlet根据ActionMapping实例包含的映射信息决定将请求转发给哪个Action。如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法。
(6)Action的execute()方法返回一个ActionForward对象,ActinoServlet再把客户请求转发给ActionForward对象只想的JSP组件。
(7)ActionForward对象指向的JSP组件生成动态网页,返回给客户。
对于以上流程的流程(4),如果ActionForm的validate()方法返回一个或多个ActionMessage的ActionErrors对象,就表示表单验证失败,此时ActionServlet将直接把请求转发给包含用户提交表单的JSP组件。再这种情况下,不会再创建Action对象并调用Action的execute()方法。
1:Servlet容器在web.xml文件中寻找<url-pattern>为 *.do的<servlet-mapping>元素
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
2:Servlet容器根据<servlet-mapping>元素的<servlet-name>属性"action",在web.xml中寻找匹配的<servlet>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
</servlet>
3:servlet容器把请求转发给<servlet>元素指定的ActionServlet,ActionServlet根据用户请求路径"/loginAction.do",在struts配置文件中检索path属性为"/loginAction" 的<action>元素
<action-mappings>
<action path="/loginAction" name="loginActionForm" type="test.LoginAction">
<forward name="succ" path="/index.jsp"></forward>
<forward name="fail" path="/login.jsp"></forward>
</action>
</action-mappings>
4:ActionServlet根据<action>元素的name属性,创建一个LoginActionForm对象,把提交的表单数据传给LoginActionForm.
此LoginActionForm作为参数传入LoginAction类中。
public class LoginAction extends Action {
public ActionForward execute(ActionMapping arg0, ActionForm arg1, HttpServletRequest arg2, HttpServletResponse arg3) throws Exception {
LoginActionForm loginActionForm=(LoginActionForm)arg1;
String name=loginActionForm.getName();
String password=loginActionForm.getPassword();
if(name.equals(password))
return(arg0.findForward("succ"));
else
return(arg0.findForward("fail"));
}
}
这样,在LoginAction类中,就可以得到表单中的数据。在进行完业务逻辑的验证之后,根据不同的情况,返回不同的ActionForward对象。
在这里,当用户名等于密码时,转向"succ".这时ActionMapping.findforward()方法从<action>元素中寻找name属性为"succ"的<forward>子元素,然后返回与之对应的ActionForward对象,他代表的请求转发路径为"/index.jsp".
同样的道理,当验证失败时,转向"login.jsp",等待重新输入用户名密码。
- struts的工作流程
- Struts的工作流程
- Struts的工作流程
- Struts 的工作流程
- Struts的工作流程
- Struts的工作流程
- struts的工作流程
- struts的工作流程
- struts的工作流程!
- struts的工作流程
- Struts的工作流程
- Struts的工作流程
- Struts的工作流程
- Struts 的工作流程 .
- struts的工作流程
- struts的工作流程
- Struts的工作流程:
- Struts的工作流程
- 精细讲解最简便的备份MySQL数据库的方法
- 使用PB合并Excel中重复单元格
- 由图像的灰度化看基本图像处理(3)
- MYSQL数据库实用学习资料之常用命令集合
- Debug与Release的补充
- Struts的工作流程
- 基本图象处理代码(1)
- 印度影星沙鲁克-罕简介
- MySQL数据库向Oracle转换时注意若干问题
- parallel-junit
- .Net学习笔记一
- VCL 中的一个内存泄漏 Bug
- 初学MySql5 所应了解的知识和常见问题
- Windows优化大师注册机源码