• Struts2深入之动态调用Action


    使用过Struts2的小伙伴们应该知道当我们的action的方法过多是如果需要通过Struts2框架进行运行,我们就必须在Struts2的配置文件Struts2.xml文件中配置多个action属性标签,但是当action个数在10以上时这种方法就显得不那么方便了,在此我们使用三种方法通过Struts2框架来动态地调用action

    【1】通过配置action属性
    【2】通过感叹号的方式来调用
    【3】通过通配符的方式

    接下来我们就一一为大家讲解以上三种方法的使用:

    【1】通过配置action属性

    首先在我们action中有两个方法---add和update,核心代码如下:

    public String add()

    {
            return SUCCESS;
    }
    public String update()
    {
            return SUCCESS;
    }
    接下来我们就需要在Struts.xml文件中进行相关配置,配置中action的name属性不能出现同名,在其后的action的method属性,指出调用action的哪个方法
    
     <struts>
           <package name="default" namespace="/" extends="struts-default">
            <action name="helloworld" class="helloworld所在包的路径">
                            <result>/result.jsp</result>
                    </action>
            <action name="addAction"method="add" class="helloworld所在包的路径">
                            <result>/add.jsp</result>
                    </action>
         <action name="updateAction"method="update" class="helloworld所在包的路径">
                       <result>/update.jsp</result>
                    </action>
            </package>
    </struts>
    

    当我们在地址栏中输入http://localhost:8080/struts2...,即可调用HelloWorld这个action的add方法,结果如下图所示:
    调用add方法

    【2】通过感叹号的方式来调用

    (Struts官方不推荐使用该方法,但在此仍在这里和大家分享一下)
    使用该方法,首先应该在Struts.xml配置文件一句话:

    <constant name="struts.enable.DynamicMethodInvocation" value="true"</constant>
    

    使用这句话的目的是允许Struts动态地调用方法
    之后的Struts.xml配置文件对action的配置如下:

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

            <action name="helloworld" class="helloworld所在包的路径">
                    <result>/result.jsp</result>
                    <result name="add">/add.jsp</result>
                    <result name="update">/update.jsp</result>
            </action>
    </package>
    

    另外也需要在action相关的方法中的返回值进行修改,执行时success,而实现这个方法动态调用action时则需要将return 后的值应和action标签中result属性的name值一致,具体如下图:

    public String add()

    {
            return "add";
    }
    public String update()
    {
            return "update";
    }
    

    在地址栏输入的地址也需做相应的改变,具体如下:
    http://localhost:8080/struts2...,其结果如下图:
    调用action的update方法

    【3】通过通配符的方式(官方推荐的使用方式)

    首先应该讲Struts.xml配置文件中的constant标签中的value属性改为false,另外Struts.xml文件中的其他部分应需做相应的修改,具体如下:

     <package name="default" namespace="/" extends="struts-default">
                    <action name="helloworld_*" method="{1}" 
                class="cn.imooc.action.HelloWorldAction">
                            <result>/result.jsp</result>
                            <result name="add">/add.jsp</result>
                            <result name="update">/update.jsp</result>
                    </action>
            </package>

    action和方法二中的方法一样
    在地址栏输入的地址有所不同,具体如下:
    http://localhost:8080/struts2...结果和上图一样
    这就是三种调用action的方法,希望对大家有所帮助。

  • 相关阅读:
    让程序只有一个进程实例在运行
    HDFS写入和读取流程
    HBase技术详细介绍
    Eclipse下配置使用Hadoop插件
    Hadoop节点热拔插
    剖析为什么在多核多线程程序中要慎用volatile关键字?
    MapReduce 模式、算法和用例(MapReduce Patterns, Algorithms, and Use Cases)
    并行编程中的“锁”难题
    配置 eclipse 编译、开发 Hadoop(MapReduce)源代码
    HBASE松散数据存储设计初识
  • 原文地址:https://www.cnblogs.com/twodog/p/12139403.html
Copyright © 2020-2023  润新知