• Action方法调用


    一、Action访问路径 Action的访问路径是由struts.xml文件中配置的Action所在包的命名空间,Action的名字和常struts.action.extension共同决定的 例如:

    Xml代码
    1. <constant name="struts.action.extension" value="action, ," /> 
    2. <package name="default"  namespace="/"  extends="struts-default"
    3.    <action name="hello"
    4.      <result>/1.jsp</result
    5.    </action
    6. </package
    7.  
    8. <package name="a"  namespace="/a"  extends="struts-default"
    9.    <action name="hello"
    10.      <result>/2.jsp</result
    11.    </action
    12. </package
        <constant name="struts.action.extension" value="action, ," />
        <package name="default"  namespace="/"  extends="struts-default">
           <action name="hello">
             <result>/1.jsp</result>
           </action>
        </package>
        
        <package name="a"  namespace="/a"  extends="struts-default">
           <action name="hello">
             <result>/2.jsp</result>
           </action>
        </package>
    

    访问default包下的名字叫hello的Action,须运行路径:/hello  或 /hello.action 访问a包下的名字叫hello的Action,须运行路径:/a/hello 或 /a/hello.action 如果将struts.action.extension的值修改成do

    Xml代码
    1. <constant name="struts.action.extension" value="do,action" /> 
    <constant name="struts.action.extension" value="do,action" />
    

    访问a包下的名字叫hello的Action,须运行路径:/a/hello.do 或 /a/hello.action

    包的命名空间 每个包的命名空间不同,包中的Action不能同名,不同包的Action可以同名 同一个Web应用有可能出现同名Action,把它们放在不同的命名空间下,可以避免访问冲突。 如果在某Action在该命名空间找不到,就在默认命名空间找,在默认命名空间还找不到就会报错

    按照上面的配置 访问 /hello.action 则跳转  /1.jsp 访问 /a/hello.action 则跳转 /2.jsp 访问 /b/hello.action 则跳转 /1.jsp 访问 /b/hi.action 则找不到页面,报异常

    二、Action方法调用与动态方法调用 Action接收请求默认调用execute方法,但这已经满足不了我们的需求。通常我们会把一个业务模块的所有请求定义在同一个Action类,这就需要Action类提供更多的方法处理不同的请求,而不仅仅是一个execute方法。 例如我们想定义一个用户模块的增删查改请求,就可以采取如下方式实现

    Java代码
    1. package com.puckasoft.web.action; 
    2.  
    3. public class UserAction { 
    4. public String saveUser() throws Exception{ 
    5.   System.out.println("添加用户"); 
    6.   return null; 
    7. public String updateUser() throws Exception{ 
    8.   System.out.println("修改用户"); 
    9.   return null; 
    10. public String deleteUser() throws Exception{ 
    11.   System.out.println("删除用户"); 
    12.   return null; 
    13. public String showUser() throws Exception{ 
    14.   System.out.println("查询用户"); 
    15.   return null; 
    package com.puckasoft.web.action;
    
    public class UserAction {
     public String saveUser() throws Exception{
      System.out.println("添加用户");
      return null;
     }
     public String updateUser() throws Exception{
      System.out.println("修改用户");
      return null;
     }
     public String deleteUser() throws Exception{
      System.out.println("删除用户");
      return null;
     }
     public String showUser() throws Exception{
      System.out.println("查询用户");
      return null;
     }
    }
    
    

    配置方法一:action方法调用

    Xml代码
    1. <package name="user"  namespace="/user"  extends="struts-default"
    2.     <action name="save"  class="com.puckasoft.web.action.UserAction"   
    3.     method="saveUser"></action
    4.     <action name="update"  class="com.puckasoft.web.action.UserAction"   
    5.     method="updateUser"></action
    6.     <action name="delete"  class="com.puckasoft.web.action.UserAction"   
    7.     method="deleteUser"></action
    8.     <action name="show"  class="com.puckasoft.web.action.UserAction"   
    9.     method="showUser"></action
    10. </package
        <package name="user"  namespace="/user"  extends="struts-default">
          	<action name="save"  class="com.puckasoft.web.action.UserAction"  
          	method="saveUser"></action>
          	<action name="update"  class="com.puckasoft.web.action.UserAction"  
          	method="updateUser"></action>
          	<action name="delete"  class="com.puckasoft.web.action.UserAction"  
          	method="deleteUser"></action>
          	<action name="show"  class="com.puckasoft.web.action.UserAction"  
          	method="showUser"></action>
        </package>

    运行路径路径格式: 包的命名空间/Action的名字  

       用户添加 /user/save.action    用户更新 /user/update.action    用户删除 /user/delete.action    用户查看 /user/show.acton       配置方法二:action动态方法调用DMI

    Xml代码
    1. <constant name="struts.enable.DynamicMethodInvocation" value="true" /> 
    2. <package name="user"  namespace="/user"  extends="struts-default"
    3.      <action name="index"  class="com.puckasoft.web.action.UserAction"/> 
    4. </package
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <package name="user"  namespace="/user"  extends="struts-default">
         <action name="index"  class="com.puckasoft.web.action.UserAction"/>
    </package>
    

         运行路径格式:包的命名空间/Action的名字!Action类中定义的方法名    用户添加 /user/index!saveUser.action    用户更新 /user/index!updateUser.action    用户删除 /user/index!deleteUser.action    用户查看 /user/index!showUser.acton 只用设置常量struts.enable.DynamicMethodInvocation为true才能执行动态调用,它默认是开启的。

    配置方法三:使用通配符定义Action 使用通配符,将配置量降到最低。 在action元素的name属性中可以使用*通配符,它可以匹配除了/以外的多个连续字符,在action元素的class和method属性以及 result元素中可以引用*通配符在访问期间实际匹配的内容

    Xml代码
    1. <package name="user"  namespace="/user"  extends="struts-default"
    2.   <action name="*" class="com.puckasoft.web.action.UserAction" method="{1}User"/> 
    3. </package
    <package name="user"  namespace="/user"  extends="struts-default">
      <action name="*" class="com.puckasoft.web.action.UserAction" method="{1}User"/>
    </package>
    

    运行路径路径格式: 包的命名空间/Action的名字

       用户添加 /user/save.action    用户更新 /user/update.action    用户删除 /user/delete.action    用户查看 /user/show.acton

  • 相关阅读:
    javascipt加强对类的理解
    PHP(http协议)相关应用知识
    javascipt对象成员函数
    PHP(http协议)防盗链技术(小练习)
    javasricpt二维数组矩形转置
    PHP二维数组矩形转置
    javascipt冒泡排序
    用vim解压各种格式
    转载:【菜鸟专用】使用LaTeX轻松撰写精美个人简历
    Ruby的gets和gets.chmop
  • 原文地址:https://www.cnblogs.com/huige-you/p/4201240.html
Copyright © 2020-2023  润新知