`

关于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实例

    struts2一个action处理多个请求

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

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

    Struts1.2Action之处理多个业务

    在J2EE中Structs Action之处理多个业务

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

    Struts2的Action多个方法配置和验证实例 博文链接:https://zmx.iteye.com/blog/452289

    Struts2 处理多个请求

    Struts2一个Action内包含多个请求处理方法的处理

    struts多个action处理

    struts2.0.6多个action处理操作很好的学习资料,一个小的实例

    Struts2请求处理方法的处理

    Struts2一个Action内包含多个请求处理方法的处理,method的使用方法,struts2中的路径问题,通配符映射

    Struts1与Struts2本质区别

    1 在Action实现类方面的对比:Struts 1要求Action类继承一个抽象基类;Struts 1的一个具体问题是使用抽象类编程而不是接口。Struts 2 Action类可以实现一个Action接口,也可以实现其他接口,使可选和定制的服务成为...

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

    详细讲解struts2中单个action中多个处理逻辑的配置方法, 以及默认Action的配置.

    struts2分页代码的示例

    基本的思路是:把数据库表中的每一行数据封装成一个对象,用一个返回类型为List的方法返回这些对象,接着在Struts2的action里面定义一个List属性,用这个List来接收从数据库中查询出来并进行了封装的那些对象,然后...

    struts1和struts2的区别

    在理论上Struts2的Action无须实现任何接口或者是继承任何的类,但是,在实际编程过程中,为了更加方便的实现Action,大多数情况下都会继承com.opensymphony.xwork2.ActionSupport类,并且重载(Override)此类里的...

    spring管理struts的action的代码

    spring管理struts的action的代码 从类路径下加载spring的配置文件, 多个配置文件可以用逗号和空格区分 * classpath: 关键字特指类路径下加载

    spring、Struts2、hibernate常见面试题

    Struts 的 Action 都继承自 org.apache.struts.action.Action,而 Spring 中的继承关系更加复杂,涉及到多个模块和组件的继承关系。 五、实现国际化 实现国际化可以通过 Struts 提供的资源文件来实现。例如,编辑 ...

    Struts2_Action学习笔记、通配符{1},{2}

    Struts2_Action学习笔记、通配符{1},{2}......

    配置Struts 2开发环境,了解和熟悉Struts 2的开发流程、了解和熟悉Struts2标签的使用方法.rar

    4. 掌握在视图中多方法调用同一个Action的方法 5.掌握常用标签textfield、radio、paaaword、checkboxlist、select、data的使用方法,实现页面与Action的交互操作 6.要求在创建过程中,包的名称要体现班级和学号,...

    struts2 详解文档

    为应用指定多个配置文件 动态方法调用和使用通配符定义action 请求参数接收 自定义类型转换器 全局类型转换器 访问或添加几个属性 文件上传 多文件上传 自定义拦截器 对Action中所有方法进行输入校验 对...

    Struts2的特点

    2、action是一个pojo,所以struts2.0与框架的藕合度非常低。 实现Action时有时会继承于ActionSupport, 覆盖execute方法,从而创建一个Action。 因为ActionSupport提供了很多方法可以为开发提供方便。 3、...

    Struts 1 学习文档

    在 Struts 中,Controller 是一个 Servlet,称为 ActionServlet。ActionServlet 负责截取和分发 HTTP 请求到相应的动作类。动作类用于实现核心商业逻辑,可以访问 Java Bean 或调用 EJB。 5. View View 主要由 JSP...

    谈谈你对Struts的理解。

     一个扩展知识点:struts的配置文件可以有多个,可以按模块配置各自的配置文件,这样可以防止配置文件的过度膨胀;  2. ActionServlet把请求交给action去处理之前,会将请求参数封装成一个formbean对象(就是一个...

    Struts2实现分页代码

    基本的思路是:把数据库表中的每一行数据封装成一个对象,用一个返回类型为List的方法返回这些对象,接着在Struts2的action里面定义一个List属性,用这个List来接收从数据库中查询出来并进行了封装的那些对象,然后...

Global site tag (gtag.js) - Google Analytics