1.Webclient提交数据到Tomcat,在form表单中需说明表单提交的action是*.do或*.action,mothod是post或get;

2.Tomcat接收Webclient提交的表单。将表单数据打包到HttpServletRequest和HttpServletResponse对象中。然后通过doPost或doGet方式把request、response提交到ActionServlet(ActionServlet是Struts内部封装好的);

要使用Struts封装的ActionServlet,须要在web.xml中配置ActionServlet,配置信息例如以下:

  <servlet><servlet-name>action</servlet-name><servlet-class>org.apache.struts.action.ActionServlet</servlet-class><init-param><param-name>config</param-name><param-value>/WEB-INF/struts-config.xml</param-value></init-param><init-param><param-name>debug</param-name><param-value>2</param-value></init-param><init-param><param-name>detail</param-name><param-value>2</param-value></init-param><load-on-startup>2</load-on-startup></servlet><!-- Standard Action Servlet Mapping --><servlet-mapping><servlet-name>action</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>

3.ActionServlet是struts的中央控制器。它任务例如以下:

(1)它负责截取Webclient提交的URL。比方login.jsp的action是login.do,然后依据URL从struts-config.xml中获得配置信息。配置信息须要手动在struts-config.xml中配置。配置信息例如以下:

    <action-mappings><action path="/login" type="com.tgb.struts.LoginAction" name="loginForm"scope="request"><forward name="success" path="/login_success.jsp"></forward><forward name="error" path="/login_error.jsp"></forward></action></action-mappings>

login.jsp中action的url名必须和配置信息中的path名一致,这样ActionServlet才干依据URL找到相应的Action,完毕请求响应。

(2)创建ActionForm类的对象,用于收集表单数据,ActionForm类代码例如以下:

package com.tgb.struts;import org.apache.struts.action.ActionForm;/*** 登录ActionForm,负责表单收集数据* 表单的属性必须和ActionForm中的get、set属性一致* @author quwenzhe* */public class LoginActionForm extends ActionForm {private String username;private String password;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}

创建后须要在struts-config.xml中配置ActionForm信息。这样struts才干检測到有ActionForm的存在,配置信息例如以下:

  <form-beans><form-bean name="loginForm" type="com.tgb.struts.LoginActionForm" /></form-beans>

通过action-mappings中的scope属性,把表单数据赋值给ActionForm。

(3)创建Action,Action类代码例如以下:

package com.tgb.struts;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;/*** 登录Action 负责获得表单数据,调用业务逻辑。返回转向视图* * @author quwenzhe* */
public class LoginAction extends Action {@Overridepublic ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {LoginActionForm laf = (LoginActionForm) form;String username = laf.getUsername();String password = laf.getPassword();if ("admin".equals(username) && "admin".equals(password)) {// 登录成功return mapping.findForward("success");} else {// 登录失败return mapping.findForward("error");}}}

action的信息已经在strut-config.xml中的action-mappings中配置。而且在配置信息中我们已经说明。forward name为"success"的相应login_success.jsp页面,forward name为"error"的相应login_error.jsp页面。
   (4)调用action的execute方法。将ActionForm中的信息提交到业务层控制器Action中处理

4.Action是struts的业务层控制器,它获得ActionServlet提交的ActionForm,对ActionForm中的信息进行处理,将处理结果返回到ActionServlet。这里返回的是forward name为"success"或"error"的ActionFoward对象。

5.ActionServlet依据Action返回的ActionFoward,选择须要跳转的页面。

6.将跳转页面渲染,显示在Webclient。

温馨提示:假设改动了strus-config.xml文件,重新启动Tomcatserver后改动才干生效。我在这吃亏了。希望大家能引以为戒。
   最后把项目的源代码下载地址奉上,http://pan.baidu.com/s/1hqvdfyG,我们希望能帮助你理解Struts流程。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/4638968.html,如需转载请自行联系原作者

具体分析Struts工作流程相关推荐

  1. 学习Struts框架系列(一):模拟Struts工作流程

    进入j2ee的学习,听到了不少框架,可谓百家争鸣,框架对基本的操作进行了封装,如果不懂得实现原理,尽管可以配配文件,让网站跑起来,但未免有时一头雾水,不知其因,所以想要明白其理,甚至灵活运用,必须对框 ...

  2. struts工作流程

    1.在web.xml中添加structs前端过滤器 2.过滤器请求 3.写一个类实现Action方法 4.编写struct.xml

  3. PPP协议工作流程,结合ppp-2.4.9 源码分析

    ppp-2.4.9 源码分析 文章目录 ppp-2.4.9 源码分析 PPP协议工作流程 ppp-2.4.9 源码分析 全局变量和结构体说明 第一阶段 初始化 第二阶段 开始链接 第三阶段 建立PPP ...

  4. 小程序工程化实践(上篇)-- 手把手教你撸一个小程序 webpack 插件,一个例子带你熟悉 webpack 工作流程...

    本文基于 webpack 4 和 babel 7,Mac OS,VS Code 小程序开发现状: 小程序开发者工具不好用,官方对 npm 的支持有限,缺少对 webpack, babel 等前端常用工 ...

  5. 单细胞分析:聚类流程(六)

    1. 学习目标 描述质量控制步骤后scRNA-seq分析的工作流程(聚类). 现在有了高质量的细胞,可以继续工作流程.最终,希望对细胞进行聚类并识别不同的潜在细胞类型,但是在那之前需要完成几个步骤.下 ...

  6. Nginx源码分析:master/worker工作流程概述

    nginx源码分析 nginx-1.11.1 参考书籍<深入理解nginx模块开发与架构解析> Nginx的master与worker工作模式 在生成环境中的Nginx启动模式基本都是以m ...

  7. NSURLSession使用说明及后台工作流程分析

    NSURLSession简介 NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的.在程序在前台时,NSURLSession与NSURLConnect ...

  8. android的构成和工作流程,分析Android中View的工作流程

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 在分析View的工作流程时,需要先分析一个很重要的类,MeasureSpec.这个类在View的测量(Measure)过 ...

  9. Zygote工作流程分析

    Zygote 接收客户端创建进程的请求,使用JNI调用linux fork函数创建进程. Zygote是在Init进程中作为Service被启动的.Zygote进程的主体是:ZygoteInit. Z ...

最新文章

  1. python是用c写的吗-python和c语言的区别是什么
  2. leetcode算法题--栈的压入、弹出序列
  3. 区块链即数字生产关系
  4. python的类包括_Python的类,复杂吗
  5. 将1bpp的bmp图像存储为1bpp或者2bpp的tiff格式
  6. [vue] 说说你对vue的错误处理的了解?
  7. TensorFlow实战——深度学习训练个性化推荐系统
  8. Android TextView 带背景的文字垂直方向显示(ems属性)
  9. Python稀疏矩阵运算库scipy.sparse用法精要
  10. 再硬写一个最简单的HTTPSERVER
  11. 只需简单的整理,让你的Mac 更安全、更智能
  12. 不用MindManager打开mmap文件
  13. STM32标准外设库(标准库)官网下载方法,附带2021最新标准固件库下载链接
  14. 大一计算机php认证考试,2017年计算机基础大一考试试题【附答案】.doc
  15. Liang-Barsky算法思想及简单cpp实现
  16. 微分几何学习(一)(向量函数)
  17. 初识htpp与tcp
  18. 人工智能导论 第二章 搜索技术
  19. 计算机主机和外设的接口是,外设接口
  20. ET篇:master项目结构梳理

热门文章

  1. 03.LoT.UI 前后台通用框架分解系列之——多样的表格
  2. Dispatcher.Invoke方法
  3. 点到线段的距离计算方法
  4. javascript 检测 header下载文件--插件
  5. 润乾报表新功能静态页面和report4包分离
  6. 华为软件测试工程师与普通软件工程师的区别
  7. SAMBA的一些特殊设置
  8. 7-Zip 19.00 正式版发布,修正 Win10 1809(17763) 可能无法正常使用大内存页
  9. ES6中的promise、async、await用法详解
  10. 疯狂位图之——位图实现12GB无重复大整数集排序