zoukankan      html  css  js  c++  java
  • Struts2中动态方法的调用

      Struts2中动态方法调用就是为了解决一个action对应多个请求的处理,以免action太多。

      主要有一下三种方法:指定method属性、感叹号方式和通配符方式。推荐使用第三种方式。

      1.指定method属性

        LoginAction.java

    public class LoginAction extends ActionSupport{
         public String execute (){
               
                return  "success" ;
         }
         public String add(){
                return "add" ;
         }
         public String update(){
                return "update" ;
         }
    }

        struts.xml,配置多个action标签。

    <struts >
        <package name= "default" namespace ="/" extends="struts-default" >
            <action name= "LoginAction" class="com.struts2.action.LoginAction" method ="execute" >
                <result name= "success">/success.jsp </result>
            </action>
             <action name= "addAction" class="com.struts2.action.LoginAction" method ="add" >
                <result name= "add">/add.jsp </result>
            </action>
             <action name= "updateAction" class="com.struts2.action.LoginAction" method ="update" >
                <result name= "update">/update.jsp </result>
            </action>
        </package>
    </struts >

       当访问路径为http://localhost:8088/jspToAction1/LoginAction.action时,跳转到success.jsp

       当访问路径为http://localhost:8088/jspToAction1/addAction.action时,跳转到add.jsp

         当访问路径为http://localhost:8088/jspToAction1/updateAction.action时,跳转到update.jsp

      

      2.感叹号方式

      LoginAction.java不变如1所示。

      struts.xml

      struts.enable.DynamicMethodInvocation = true 表示动态方法调用

    <struts >
        <package name= "default" namespace ="/" extends="struts-default" >
            <action name= "LoginAction" class="com.struts2.action.LoginAction" method ="execute" >
                <result name= "success">/success.jsp </result>
                <result name= "add">/add.jsp </result>
                 <result name= "update">/update.jsp </result>
            </action>
        </package>
        <constant name= "struts.enable.DynamicMethodInvocation" value="true" ></constant>
    </struts >

      

      访问链接时:http://localhost:8080/struts2Demo/LoginAction!update.action,跳转到update.jsp

      访问链接时:http://localhost:8080/struts2Demo/LoginAction!add.action,跳转到add.jsp

      3.通配符方式(最常用的方式也是struts官方推荐的方式)

      LoginAction.java同样不变,struts.xml改为如下:

    <struts >
        <package name= "default" namespace ="/" extends="struts-default" >
    <!--    {1}通过*的方式传递进来 -->
            <action name= "LoginAction_*" class="com.struts2.action.LoginAction" method ="{1}" >
                <result name= "success">/{1}.jsp</result>
                <result name= "add">/{1}.jsp</result>
                 <result name= "update">/{1}.jsp</result>
            </action>
        </package>
        <constant name= "struts.enable.DynamicMethodInvocation" value="false" ></constant>
    </struts >
      "LoginAction_*"中的“*”就代表{1},通过链接的方式进行匹配、传值,从而达到一个动态访问的效果。如果name=""中有多个”*“,则第一个用{1}来表示,第二个有{2}来表示,以此类推。
      访问链接时: http://localhost:8088/jspToAction1/HelloWorld_add.action 跳转到add.jsp
      访问链接时: http://localhost:8088/jspToAction1/HelloWorld_update.action   跳转到update.jsp
      

    **************************************************************************************************

      如若转载请注明出处,谢谢。By奋斗的小蘑菇

    by奋斗的小蘑菇
  • 相关阅读:
    POJ2407:Relatives(欧拉函数) java程序员
    POJ1664:放苹果(搜索) java程序员
    关于android中数据库的创建以及基础的增删改查的相应操作
    家庭版记账本app开发进度。开发到现在整个app只剩下关于图表的设计了,具体功能如下
    在tap的碎片上与活动进行绑定实现点击事件(日期时间选择以及按钮跳转时间)
    使用tap、Fragment等相关相关知识点。实现类似微信的界面
    android学习相关intent和fragment的先关知识点
    家庭记账本app进度之关于tap的相关操作1
    家庭版记账本app进度之关于listview显示账单,并为其添加点击事件
    家庭版记账本app进度之编辑框组件
  • 原文地址:https://www.cnblogs.com/liyuchen/p/4881630.html
Copyright © 2011-2022 走看看