知识大全 Struts开发指南之工作流程实例演示
Posted 知
篇首语:男儿欲遂平生志,六经勤向窗前读。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Struts开发指南之工作流程实例演示相关的知识,希望对你有一定的参考价值。
Struts开发指南之工作流程实例演示 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
下图是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 con_tentType= text/;charset=UTF language= java %> // 声明Taglib <%@ taglib uri= /WEB INF/struts bean tld prefix= bean %> <%@ taglib uri= /WEB INF/struts tld prefix= %> <: locale= true > <head> // bean是用来从ApplicationResource中读取i n信息 <title><bean:message key= logon title /></title> <:base/> </head> <body bgcolor= white > // 错误信息部分 <:errors/> // 登录form action为logion do <:form action= /logon focus= username on_submit= return validateLogonForm(this); > <table border= width= % > <tr> <th align= right > <bean:message key= prompt username />: </th> <td align= left > <:text property= username size= maxlength= /> </td> </tr> <tr> <th align= right > <bean:message key= prompt password bundle= alternate />: </th> <td align= left > <:password property= password size= maxlength= redisplay= false /> </td> </tr> <tr> <td align= right > <:submit value= Submit /> </td> <td align= left > <:reset/> </td> </tr> </table> </:form> // Validator插件 用于form验证 <:javascript formName= logonForm dynamicJavascript= true staticJavascript= false /> <script language= Javascript src= staticJavascript jsp ></script> </body> </:> struts config xml配置 <form beans> <! Logon form bean > <form bean name= logonForm type= apache struts validator DynaValidatorForm > <form property name= username type= java lang String /> <form property name= password type= java lang String /> </form bean> <! Subscription form bean > <form bean name= subscriptionForm type= apache struts webapp example SubscriptionForm /> </form beans> <action mappings> <! Edit mail subscription > <action path= /editSubscription type= apache struts webapp example EditSubscriptionAction attribute= subscriptionForm scope= request validate= false > <forward name= failure path= /mainMenu jsp /> <forward name= success path= /subscription jsp /> </action> subscriptionForm 是一个标准的ActionForm 其中reset方法用于清除form的值 validate方法用于验证 public final class SubscriptionForm extends ActionForm // The maintenance action we are performing (Create or Edit) private String action = Create ; // Should we auto connect at startup time? private boolean autoConnect = false; // The host name private String host = null; private String password = null; private String type = null; private String username = null; public String getAction() return (this action); public void setAction(String action) this action = action; public boolean getAutoConnect() return (this autoConnect); public void setAutoConnect(boolean autoConnect) this autoConnect = autoConnect; public String getHost() return (this host); public void setHost(String host) this host = host; public String getPassword() return (this password); public void setPassword(String password) this password = password; public String getType() return (this type); public void setType(String type) this type = type; public String getUsername() return (this username); public void setUsername(String username) this username = username; /** * Reset all properties to their default values * * @param mapping The mapping used to select this instance * @param request The servlet request we are processing */ public void reset(ActionMapping mapping HttpServletRequest request) this action = Create ; this autoConnect = false; this host = null; this password = null; this type = null; this username = null; /** * Validate the properties that have been set from this HTTP request * and return an <code>ActionErrors</code> object that encapsulates any * validation errors that have been found If no errors are found return * <code>null</code> or an <code>ActionErrors</code> object with no * recorded error messages * * @param mapping The mapping used to select this instance * @param request The servlet request we are processing */ public ActionErrors validate(ActionMapping mapping HttpServletRequest request) ActionErrors errors = new ActionErrors(); if ((host == null) || (host length() < )) errors add( host new ActionError( error host required )); if ((username == null) || (username length() < )) errors add( username new cha138/Article/program/Java/ky/201311/28405相关参考
Struts用户和开发指南(前言之二) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 属性(Pr
Struts用户和开发指南(前言之三) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! XML语言
Struts开发指南之MVC架构实际应用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 模型视图
Struts开发指南之其他Web构架介绍 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Stru
Struts开发指南之J2EE n层结构 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 早期的网
演示Struts2实现简单上传代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! webxml&
JakartaStruts学习之实战演示 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Acti
Struts开发工作流程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 最近讲了struts写点
Biztalk开发之架构和实例的验证 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 如果使用的输
以前在网上看到的最简单的拖动对象的代码忘记作者叫什么了原始代码在IE下有些小问题并且声明了文档类型为x后在FF等非IE浏览器下无效对其进行了改进现在已经可兼容:IEFirefoxOpera<