• struts2.Action中的method属性配置


    .Action中的method属性

    在struts1.x中我们知道通过继承DispatchAction可以实现把多个Action进行统一操作,在struts2中实现action的统一操作也很简单。我们以crud操作为例,把crud集中到一个Action中。
    步骤一、建立CRUDAction,内容如下:
    package com.asm;

    import com.opensymphony.xwork2.ActionSupport;

    public class CRUDAction extends ActionSupport {

        public String add() {

           return "success";

        }

        public String del(){

           return "success";

        }

        public String update() {

           return "success";

        }

        public String query() {

           return "success";

        }

    }

    步骤二、配置此Action,为了清晰明了,专为此Action,建立一个配置文件crud.xml,主要内容如下:
    <struts>

        <package name="crud" extends="struts-default"namespace="/crud">

           <action name="add" class="com.asm.CRUDAction"method="add">

               <result name="success">/crud/addSuccess.jsp</result>

           </action>

           <action name="del"class="com.asm.CRUDAction" method="del">

               <result name="success">/crud/delSuccess.jsp</result>

           </action>

           <action name="update" class="com.asm.CRUDAction"method="update">

               <result name="success">/crud/updateSuccess.jsp</result>

           </action>

           <action name="query" class="com.asm.CRUDAction"method="query">

               <result name="success">/crud/querySuccess.jsp</result>

           </action>

        </package>

    </struts>

    分析:上面的method方法的值来源于CRUDAction中方法的名字,这样当我们访问上面的每一个Action时,它实质是和method指定的方法关联上。

    步骤三、把crud.xml配置文件并入struts.xml中,只需增加如下代码:
    <include file="jack.xml"></include>

    步骤四、编写相应的jsp页面,在此略去crud文件夹下的四个跳转jsp页面(addSuccess.jsp等),重点是crud.jsp页面。内容如下:
    <html>

    <%

        String path=request.getContextPath();

    %>

        <body>

           <a href="<%=path %>/crud/add.action">添加数据</a><br>

           <a href="<%=path %>/crud/del.action">删除数据</a><br>

           <a href="<%=path %>/crud/query.action">查询数据</a><br>

           <a href="<%=path %>/crud/update.action">修改数据</a><br>

        </body>

    </html>
    步骤五、发布测试。
    补充扩展,动态调用DMI不使用method实现统一.我们在crud.xml中增加如下内容:
    <action name="op" class="com.asm.CRUDAction">

               <result name="success">/crud/op.jsp</result>

    </action>

    然后再在crud.jsp中定义如下链接:

    <a href="<%=path %>/crud/op!add.action">添加数据</a><br>

    <a href="<%=path %>/crud/op!del.action">删除数据</a><br>

    <a href="<%=path %>/crud/op!query.action">查询数据</a><br>

    <a href="<%=path%>/crud/op!update.action">修改数据</a><br>

    注意查看上面的链接地址,它们都是针对op action,然后再加地上“!+CRUDAction中相应的方法名”,最后再写上.action即可以访问到统一页面op.jsp。这样做虽然能减少页面,但是由于它们实质用到的是同一个Action,所以这就意味着我们要使用的拦截器相同,相同的跳转result。实际中这种方式很少使用,在此略作了解。如果不想使用动态方法调用,我们可以通过常量来关闭,即在struts.xml中增加如下配置:
    <constant name="struts.enable.DynamicMethodInvocation" value="false"/>

    扩展2:在CRUDAction中使用do。举例:我们在CRUDAction中增加一个新的方法,内容如下:

        public String doMain(){

           return "success";

        }

    然后再在在crud.xml中增加如下内容:

    <action name="main" class="com.asm.CRUDAction"method="main">

               <result name="success">/crud/main.jsp</result>

    </action>
    注意:配置中method属性值是doMain中去掉do后M小写。然后再在crud.jsp中增加如下链接:
    <a href="<%=path%>/crud/main.action">main页面</a><br>

    随后便可以访问到.../crud/main.jsp页面了。

  • 相关阅读:
    Java提高班(五)深入理解BIO、NIO、AIO
    Java提高班(四)面试必备—你不知道的数据集合
    Spring Boot 系列总目录
    Java提高班(三)并发中的线程同步与锁
    Java提高班(二)深入理解线程池ThreadPool
    Spring Boot(十四)RabbitMQ延迟队列
    Spring Boot(十三)RabbitMQ安装与集成
    Spring Boot(十二)单元测试JUnit
    Spring Boot(十一)Redis集成从Docker安装到分布式Session共享
    VS2013中Python学习笔记[环境搭建]
  • 原文地址:https://www.cnblogs.com/mrcharles/p/11879883.html
Copyright © 2020-2023  润新知