Struts快速入门(三)

利用ActionMapping的命令模式

       Struts提供一个公开的基于XML语句的方法来说明请求URIservlet路径与适当的请求处理器之间的映射。这个实现与命令模式[Gof]很相似。以下片断摘自struts-config.xml文件,下列声明用于建立ActionMapping配置对象,它是<action>元素的运行时表现。

<action-mappings>

<action path="/editCustomerProfile"

type="packageName.EditCustomerProfileAction"

name="customerProfileForm"

scope="request"/>

</action-mappings>

       以下简要说明上述声明中用到的属性。

       pathHTTP请求中虚拟目录的相对路径,用于识别这个动作映射。

       type类名,将用于在处理这个请求的时候建立一个请求处理器实例。

       nameJavaBean的逻辑名称,也叫做表单bean,将用于保存表单数据。表单bean将用这个名称保存在指定的范围(scope)中。

       scope保存bean时用请求或会话范围。

       上例中Path属性映射到HTML文件中<form>元素的action属性。在上面范例中避免了硬代码映射到代码内部而且可以方便的看到HTML表单中的servlet路径如何映射到请求处理器的实例。另外,应用系统行为和导航语义可以方便的通过修改动作映射来完成。请求处理器是Struts提供的Action类的子类。

       对于HTML<form>标签,使用自定义的org.apache.struts.taglib.html.FormTagaction属性动态生成动态URL可以保护HTML文档避免修改虚拟目录或<url-pattern>时的大量变动。对于*.do模式的URL,下面的自定义FormTag  <html:form action="/editCustomerProfile?customerType=preferred"> 将使用action属性包含的如下服务器相关URL动态生成一个HTML <form>标签:<form action="/contextPath/editCustomerProfile.do?customerType=preferred"/>

使用name属性,行为映射可以声明一个特定的JavaBean ,其特性将保存来自HTTP请求的参数,该JavaBeanActionFrom类的子类。行为映射声明中的name属性是在特定范围内使用哪个ActionForm类的实例保存的唯一标示。ActionForm子类使用<form-beans>标签声明于struts-config.xml文件中,如下:

<form-bean name="customerProfileForm" type="packageName.customerProfileForm"/>

参阅“获取表单数据”章节以得到关于<form-beans>元素和ActionForm类的更多信息。

 

模型与请求处理器的相互作用

       Action的一个子类是用于作为提交的请求和模型之间的适配器。Action子类,也叫做请求处理器,是为每个请求特别建立的。一个动作最初被RequestProcessor解释,然后轮流实例化一个相应的请求处理器。这个Action类的对象为每个请求特别建立,已经在前面章节中的发送者阐述。请求处理器实现了命令模式[Gof]。一个终端请求在请求URL中封装了欲执行的行为即servlet路径,该路经信息随后被发送者(RequestProcessor)提取以建立一个相应的请求处理器实例。命令模式消除了用户界面(UI)对请求处理器的影响。

       基本的Action类提供访问架构相关资源的常用函数以及保存使用其子类的execute(…)方法而产生的错误的方法。该错误随即通过采用定制的org.apache.struts.taglib.html.ErrorsTag,被获取并显示到HTML表单。请求处理器的execute(…)方法应该包含处理请求参数和相关ActionForm的控制流程,它应该封装模型相关语义,并且应该在模型操作结果的基础上提供下一个视图。请求处理器在第一次建立后就被RequestProcessor捕获,随即被设为对其他的提交请求可用;同样的,请求处理器必须不含有用户特定的状态信息;请求处理器也必须同步化访问需要串行访问的资源。对于一个分布式应用,动作类包括与EJB组件中的事务逻辑相关联的控制逻辑且一般采用Business Delegate[Core]对象来实现该目的。事务委托保护请求处理器免于处理访问分布式组件的复杂度。因为访问服务器端组件的逻辑被嵌入到事务委托中,事务委托设计模式促进了请求处理器与服务器端组件的松散耦合。请求处理器由表示层工作的开发者编写,然而事务委托常常由负责建立事务层服务的开发者编写。对于小型非分布式应用,动作类或许包含事务逻辑。当分布式处理不是必需的且事务逻辑被嵌入在请求处理器中时,Data Access Object [Core]可以用于抽象潜在的数据访问实现,它为请求处理器与数据访问层提供了松散的耦合,从而保护表示层避免在整合层中改变实现。请求处理器基本的Action类提供部分方便的方法,请查阅API文档位于:http://jakarta.apache.org/struts/api/index.html

 

(待续...)

 

冰云翻译,转载请告知。

icecloud@sina.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
JavaWeb是一种用Java语言来开发动态网页的技术栈。它包括了Servlet和JSP两个主要的技术组件。JavaWeb的开发速度很快,功能也很强大,并且具有跨平台的特点。 JavaWeb可以用来开发静态网页和动态网页。静态网页是指提供给所有人看的数据始终不会发生变化,而动态网页是指提供给所有人看的数据会随着时间和地点的不同而发生变化。大部分网站都属于动态网页。在Java中,动态网页开发的技术统称为JavaWeb。 JavaWeb采用B/S架构,即浏览器和服务器之间的交互。相比之下,C/S架构是客户端和服务器之间的交互。JavaWeb被广泛使用,因为它可以处理高并发、高性能和高可用性的问题,并且语法类似于ASP。 如果你想快速入门JavaWeb,你可以首先学习Servlet和JSP的基本语法和用法。Servlet是JavaWeb中的核心组件,用于处理请求和响应。JSP则是一种在HTML中嵌入Java代码的技术,可以方便地生成动态内容。你可以通过学习这两个组件的基础知识,了解JavaWeb的基本工作原理和开发流程。然后,你可以进一步学习JavaWeb框架,如Spring MVC和Struts,以提高开发效率和代码质量。还可以学习数据库连接和操作、前端技术等相关知识,以完善你的JavaWeb开发技能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [JavaWeb入门](https://blog.csdn.net/Massimo__JAVA/article/details/124496596)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

icecloud

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值