Struts的工作流程..doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Struts的工作流程.

下图是Struts的工作流程,前边我们提到,所有的请求都提交给ActionServlet来处理。   ActionServlet是一个FrontController,它是一个标准的Servlet,它将request转发给RequestProcessor来处理,   ActionMapping是ActionConfig的子类,实质上是对struts-config.xml的一个映射,从中可以取得所有的配置信息   RequestProcessor根据提交过来的url,如*.do,从ActionMapping 中得到相应的ActionForn和Action。然后将request的参数对应到ActionForm中,进行form验证。如果验证通过则调用Action的execute()方法来执行Action,最终返回ActionFoward。   ActionFoward是对mapping中一个foward的包装,对应于一个url   ActionForm使用了ViewHelper模式,是对HTML中form的一个封装。其中包含有validate方法,用于验证form数据的有效性。ActionForm是一个符合JavaBean规范的类,所有的属性都应满足get和set对应。对于一些复杂的系统,还可以采用DynaActionForm来构造动态的Form,即通过预制参数来生成Form。这样可以更灵活的扩展程序。   ActionErrors是对错误信息的包装,一旦在执行action或者form.validate中出现异常,即可产生一个ActionError并最终加入到ActionErrors。在Form验证的过程中,如果有Error发生,则会将页面重新导向至输入页,并提示错误。   Action是用于执行业务逻辑的RequsestHandler。每个Action都只建立一个instance。Action不是线程安全的,所以不应该在Action中访问特定资源。一般来说,应改使用 Business Delegate 模式来对Business tier进行访问以解除耦合。   Struts提供了多种Action供选择使用。普通的Action只能通过调用execute执行一项任务,而DispatchAction可以根据配置参数执行,而不是仅进入execute()函数,这样可以执行多种任务。如insert,update等。LookupDispatchAction可以根据提交表单按钮的名称来执行函数。   我们可以先回到刚才的例子,理解一下Struts的流程。   下面我们看Struts自带的example实例:   说明:实例二是Struts自带的example程序, 实现了登录,注册,修改功能。   代码中大量应用了struts taglib,并且采用validator插件进行form的验证。   但是代码树立了一个不好的榜样,即把大量的业务逻辑写在了action中。   部分代码如下:   登录:logon.jsp <%@ page contentType=text/html;charset=UTF-8 language=java %> // 声明Taglib <%@ taglib uri=/WEB-INF/struts-bean.tld prefix=bean %> <%@ taglib uri=/WEB-INF/struts-html.tld prefix=html %> <html:html locale=true> <head>  // bean是用来从ApplicationResource中读取i18n信息  <title><bean:message key=logon.title/></title>  <html:base/> </head> <body bgcolor=white> // 错误信息部分 <html:errors/> // 登录form,action为logion.do <html:form action=/logon focus=username onsubmit=return validateLogonForm(this);> <table border=0 width=100%>  <tr>   <th align=right>    <bean:message key=prompt.username/>:   </th>   <td align=left>    <html:text property=username size=16 maxlength=18/>   </td>  </tr>  <tr>   <th align=righ

文档评论(0)

sa1fs5g1xc1I + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档