`

关于struts如何在action中实现多个处理方法

阅读更多

原本一个action对应一个exctue方法做业务处理,那么是不是很浪费呢?怎么让一个action可以包含多个处理方法呢?
1,继承(a)DispatchAction,(b)MappingDispatchAction,(c)LookupDispatchAction
2,分别适用于什么情况,a,b都可以通过在form的action和link等传递一个参数过去,让struts框架得知需要调用action中哪个方法,但是a的耦合性没有b的好。
3,a的配置文件

  1. <action
  2. attribute="buyForm"
  3. input="/buy.jsp"
  4. name="buyForm"
  5. path="/buy"
  6. parameter="ope"
  7. scope="request"
  8. type="prj11_1.action.BuyAction"/>
  9. [code=HTML]<html:formaction="/buy.do?ope=add">
  10. insertbook:<html:textproperty="book"/><html:errorsproperty="book"/><br/>
  11. <html:submit/><html:cancel/>
  12. </html:form>
  13. <hr>
  14. showbook:<logic:presentname="cart">
  15. <logic:iterateid="book"name="cart">
  16. <bean:writename="book"/>
  17. <html:linkaction="/buy?ope=delete"paramId="BOOK"paramName="book">delete</html:link>
  18. </logic:iterate>
  19. </logic:present>


这段代码就调用a的action。到底区别在哪里呢?<html:linkaction="/buy?ope=delete><html:formaction="/buy.do?ope=add">就在这里,系统通过add和delete来识别调用的方法,但是jsp必须知道是哪个action。这样不太好。

b的配置文件

  1. <action
  2. attribute="buyForm"
  3. input="/buy.jsp"
  4. name="buyForm"
  5. path="/add"
  6. parameter="add"
  7. scope="request"
  8. type="prj11_1.action.BuyAction"/>
  9. <action
  10. attribute="buyForm"
  11. input="/buy.jsp"
  12. name="buyForm"
  13. path="/delete"
  14. parameter="delete"
  15. scope="request"
  16. type="prj11_1.action.BuyAction"/>


[/code]

  1. <html:formaction="/add">
  2. insertbook:<html:textproperty="book"/><html:errorsproperty="book"/><br/>
  3. <html:submit/><html:cancel/>
  4. </html:form>
  5. <hr>
  6. showbook:<logic:presentname="cart">
  7. <logic:iterateid="book"name="cart">
  8. <bean:writename="book"/>
  9. <html:linkaction="/delete"paramId="BOOK"paramName="book">delete</html:link>
  10. </logic:iterate>
  11. </logic:present>


调用了继承b的action通过配置文件,直接可以确定调用那个action方法了。注意parameter="delete"和parameter="add"。

c的配置文件
<action
attribute="lrForm"
input="/lr.jsp"
name="lrForm"
parameter="ope"
path="/lr"
scope="request"
type="prj11_1.action.LrAction"/>
c可以用来判断2个不同功能按钮到底怎么做出来。但是要结合资源文件来使用。
jsp页面

  1. <html:formaction="/lr">
  2. account:<html:textproperty="account"/><br/>
  3. password:<html:passwordproperty="password"/><br/>
  4. <html:submitproperty="ope"><bean:messagekey="info.login"/></html:submit>
  5. <html:submitproperty="ope"><bean:messagekey="info.register"/></html:submit>
  6. </html:form>



资源文件
info.login=login
info.register=register
action的代码

  1. publicclassLrActionextendsLookupDispatchAction{
  2. protectedMapgetKeyMethodMap(){
  3. Mapmap=newHashMap();
  4. map.put("info.login","login");
  5. map.put("info.register","register");
  6. returnmap;
  7. }
  8. publicActionForwardlogin(ActionMappingmapping,ActionFormform,
  9. HttpServletRequestrequest,HttpServletResponseresponse){
  10. LrFormlrForm=(LrForm)form;
  11. returnnull;
  12. }
  13. publicActionForwardregister(ActionMappingmapping,ActionFormform,
  14. HttpServletRequestrequest,HttpServletResponseresponse){
  15. LrFormlrForm=(LrForm)form;
  16. returnnull;
  17. }


必须实现getKeyMethodMap

分享到:
评论

相关推荐

    struts2一个action处理多个请求 struts2实例

    本实例探讨了如何让一个Action类处理多个请求,这在开发中常见于需要集中处理相似请求的情况,可以提高代码复用性和结构的整洁性。 首先,理解Struts2的映射机制至关重要。在Struts2的配置文件(通常为struts.xml或...

    Struts1.2Action之处理多个业务

    1. **单一Action处理多个业务**:在一个Action类中定义多个方法,每个方法对应一个业务,然后在struts-config.xml配置文件中为每个方法指定不同的`&lt;action&gt;`元素。请求参数可以用来区分调用哪个方法。 2. **使用...

    一个Action多方法调用的Struts 2的应用程序

    具体要求是在loginAction类中分别用login()和registered()处理用户登录和注册的过程,分别创建login.jsp和register.jsp两个页面实现登录和注册的输入,这两个页面提交给loginAction中的两个方法进行业务处理,...

    Struts2 处理多个请求

    在Struts2框架中,处理多个请求的方法是通过一个Action类实现多个处理方法。这使得代码结构更加清晰,每个方法对应特定的业务逻辑。以下是Struts2处理多个请求的三种主要方式的详细说明: 1. **动态方法调用 (DMI -...

    Struts2的Action多个方法配置和验证

    这篇博客主要讨论了如何配置Struts2 Action中的多个方法以及如何进行数据验证。 首先,一个Action类可以包含多个方法,每个方法对应一个特定的HTTP请求。这种多方法配置允许我们根据不同的请求路径来调用不同的业务...

    struts多个action处理

    在"struts2.0.6多个action处理"这个主题中,我们将深入探讨如何在Struts2框架下管理并执行多个Action。这通常涉及到配置、映射和Action类的设计,以及请求的路由。 1. **Action配置**:在Struts2中,Action是业务...

    struts2 对action中的所有方法进行校验

    Struts2作为一款流行的Java Web框架,其在处理用户请求时扮演着重要的角色。它提供了强大的功能,包括对Action类中的方法进行校验。在Web应用程序中,数据校验是确保用户输入合法性和应用程序安全性的关键步骤。...

    struts2利用通配符调用同一个Action里面不同的方法

    当我们想要调用同一个Action中的多个方法时,通常需要为每个方法创建单独的`&lt;action&gt;`元素,这可能会导致配置文件变得冗长且难以维护。 为了解决这个问题,Struts2引入了通配符机制。在URL路径中使用星号(*)作为...

    struts2实现的多个文件上传

    在处理文件上传时,Struts2提供了便捷的API和配置方式,使得开发人员能够轻松实现多文件上传的功能。下面将详细阐述如何使用Struts2来实现多个文件的上传。 首先,理解文件上传的基本原理。在HTTP协议中,文件上传...

    Struts2实现单个文件多个文件上传与下载-多个拦截器

    本项目主要展示了如何在Struts2框架下实现单个文件和多个文件的上传及下载,并且运用了多个拦截器来增强功能和安全性。 首先,让我们详细了解一下文件上传的过程。在Struts2中,文件上传主要依赖于`struts2-...

    Struts2 Action参数详细说明

    但是,通过`method`属性,我们可以指定不同的方法对应不同的Action,这样可以实现一个类中多个方法的映射,提高代码复用性。例如: ```xml &lt;action name="add" class=...

    struts2笔记之动态调用Action指定方法及默认Action

    在实际开发中,我们经常需要在一个 Action 中实现多个处理逻辑,这样可以减少代码的重复和提高开发效率。那么,在 Struts2 中如何动态调用 Action 的指定方法呢? 首先,我们可以在表单中使用 `&lt;form action="login...

    struts2.0之action

    `ActionSupport`提供了诸如国际化、错误处理和验证等基础功能,它实现了多个接口,包括`com.opensymphony.xwork2.Action`、`com.opensymphony.xwork2.LocaleProvider`、`com.opensymphony.xwork2.TextProvider`、`...

    Struts2教程:处理一个form多个submit.doc

    在处理一个表单(form)中存在多个submit按钮的情况时,Struts2提供了一种优雅的方式来区分用户点击了哪个按钮,而无需像Struts1那样使用额外的动作类(如LookupDispatchAction或EventDispatchAction)。 在传统的...

    struts 2 action 动态调用

    它允许开发者在一个Action类中定义多个处理方法,而不仅仅局限于传统的`execute()`方法。这种机制不仅能够减少代码重复,还能提高代码的可读性和可维护性。本文档将详细介绍如何在Struts 2中实现Action动态方法调用...

    Struts_In_Action(中文完整版)

    10. **案例研究**:书中包含多个完整的案例,帮助读者将理论知识应用于实际项目,加深理解和应用。 通过阅读《Struts In Action》中文完整版,开发者不仅能掌握Struts框架的核心技术,还能了解如何在实际项目中灵活...

    struts中dispatchAction用法

    Struts是Java Web开发中的一款经典MVC框架,它的核心组件之一是DispatchAction,这个组件在处理用户请求时起到了至关重要的作用。DispatchAction是Struts提供的一个可扩展的Action类,它允许开发者将一个单一的...

    struts2 使用action属性接收中文参数(post提交)

    在处理用户请求时,Struts2允许开发者通过Action类来接收和处理参数,包括中文参数。当我们需要通过POST方法提交包含中文字符的数据时,可能会遇到编码问题,因为HTTP请求默认使用的是ASCII编码,而中文字符需要UTF-...

    使用struts1.x上传多个文件的一中方法

    在Struts1.x中,实现文件上传功能是一个常见的需求,特别是在处理用户提交的表单时需要包含多个文件。下面我们将详细介绍如何使用Struts1.x来实现多个文件的上传。 首先,我们需要在HTML表单中添加`...

    用struts上传多个文件的方法

    Apache Struts作为一款成熟的MVC框架,在处理文件上传方面有着独特的优势。本文将详细解析如何使用Struts框架实现多文件上传的功能,并对相关的代码进行深入分析。 #### 一、Struts框架简介 Struts是一款开源的...

Global site tag (gtag.js) - Google Analytics