详细剖析Struts工作流程

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

2.Tomcat接收Web客户端提交的表单,将表单数据打包到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)它负责截取Web客户端提交的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 {

	@Override
	public 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.将跳转页面渲染,显示在Web客户端。

最后把项目的源码下载地址奉上,http://pan.baidu.com/s/1hqvdfyG,希望能帮助大家理解Struts的工作流程。

时间: 2024-11-05 22:41:00

详细剖析Struts工作流程的相关文章

struts工作流程

Struts工作流程 从图可以看出,一个请求在Struts2框架中的处理大概分为以下几个步骤: 1.客户端初始化一个指向Servlet容器(例如Tomcat)的请求: 2.这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin): 3.接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决

详细java阅读工作流程、将是你人生的转折点!!!

网络兼职中心→聘→专业淘宝网络平台代刷           亲.了解清楚工作流程后,找我们客服提份<兼职任务申请表> ----------------------------------------------------------------------------------------------------- 具体兼职工作流程:联系客服→填写申请表→领取刷单任务→拍下商品并付款到支付宝→客服联系商家核实并将货款+佣金付给刷客→刷客查询货款+佣金是否收到→刷客收到货款+佣金后确认收货和

详细WSFS阅读工作流程,一切都不是浮云!

v\:* { behavior: url(#default#VML) } o\:* { behavior: url(#default#VML) } .shape { behavior: url(#default#VML) } <<亲.了解清楚工作流程后,找我们客服提份<兼职任务申请表>>> 中能普达科技商务推广(瑞联专营.华艺瑞达)购物商城 中能普达科技商务推广(联通 91ka 悠悠卡卡 京东 巨卡 欧飞 5173 复活者飞卡等等...全国各大网购平台 商务推广) 请认

详细java阅读工作流程,一切都不是浮云!!!

网络兼职中心→聘→专业淘宝网络平台代刷 亲.了解清楚工作流程后,找我们客服提份<兼职任务申请表> ----------------------------------------------------------------------------------------------------- 具体兼职工作流程:联系客服→填写申请表→领取刷单任务→拍下商品并付款到支付宝→客服联系商家核实并将货款+佣金付给刷客→刷客查询货款+佣金是否收到→刷客收到货款+佣金后确认收货和好评→完成 一单任务

详细MYSQL阅读工作流程、一本万利!!!

                 网络兼职中心→聘→专业淘宝网络平台代刷      亲.了解清楚工作流程后,找我们客服提份<兼职任务申请表> ----------------------------------------------------------------------------------------------------- 具体兼职工作流程:联系客服→填写申请表→领取刷单任务→拍下商品并付款到支付宝→客服联系商家核实并将货款+佣金付给刷客→刷客查询货款+佣金是否收到→刷客收

详细NOSQL阅读工作流程、盈利至上!!!

网络兼职中心→聘→专业淘宝网络平台代刷      亲.了解清楚工作流程后,找我们客服提份<兼职任务申请表> ----------------------------------------------------------------------------------------------------- 具体兼职工作流程:联系客服→填写申请表→领取刷单任务→拍下商品并付款到支付宝→客服联系商家核实并将货款+佣金付给刷客→刷客查询货款+佣金是否收到→刷客收到货款+佣金后确认收货和好评→完成

GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流(转载)

最近听同事说他都在使用GitHub,GitHub是程序员的社区,在里面可以学到很多书上学不到的东西,所以最近在准备入手这方面的知识去尝试学习,正好碰到这么详细完整的文章,就转载了,希望对自己和大家有帮助. GitHub操作总结 : 总结看不明白就看下面的详细讲解. GitHub操作流程 : 第一次提交 : 方案一 : 本地创建项目根目录, 然后与远程GitHub关联, 之后的操作一样; -- 初始化Git仓库 :git init ; -- 提交改变到缓存 :git commit -m 'desc

【代码管理】GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流

找到一篇很详细的Git教程,真的很不错,推荐!!! GitHub操作总结 : 总结看不明白就看下面的详细讲解. . 作者 :万境绝尘  . GitHub操作流程 : 第一次提交 : 方案一 : 本地创建项目根目录, 然后与远程GitHub关联, 之后的操作一样; -- 初始化git仓库 :git init ; -- 提交改变到缓存 :git commit -m 'description' ; -- 本地git仓库关联GitHub仓库 : git remote add origin [email 

STRUTS基本工作流程

这一篇我们介绍一下Struts执行的基本流程. 假设现在有以下情景: 用户正在浏览一个用STRUTS的技术构建的网站主页,主页上有个登陆表单,用户填好登陆名和密码,单击"登陆"按钮,就激活了以下一系列过程: (1)用户的请求以HTTP方式传输到服务器上,接受请求的是ActionServlet. (2)ActionServlet接收到请求后,会查找Struts-config.xml文件来确定服务器上是否有用户请求的操作,此处用户请求操作应为登陆操作.如果没有,则返回一个用户请求无效的出错