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

  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. <package name="a"  namespace="/a"  extends="struts-default">
  8. <action name="hello">
  9. <result>/2.jsp</result>
  10. </action>
  11. </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

  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方法。 例如我们想定义一个用户模块的增删查改请求,就可以采取如下方式实现

  1. package com.puckasoft.web.action;
  2. public class UserAction {
  3. public String saveUser() throws Exception{
  4. System.out.println("添加用户");
  5. return null;
  6. }
  7. public String updateUser() throws Exception{
  8. System.out.println("修改用户");
  9. return null;
  10. }
  11. public String deleteUser() throws Exception{
  12. System.out.println("删除用户");
  13. return null;
  14. }
  15. public String showUser() throws Exception{
  16. System.out.println("查询用户");
  17. return null;
  18. }
  19. }
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方法调用

  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

  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元素中可以引用*通配符在访问期间实际匹配的内容

  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

Action方法调用的更多相关文章

  1. struts2内Action方法调用

    1.struts2流程: jsp页面-->web.xml-->struts.xml-->user.acrion-->UserAction.java 中的execute()--r ...

  2. Struts2学习笔记 - Action篇<动态方法调用>

    有三种方法可以使一个Action处理多个请求 动态方法调用DMI 定义逻辑Acton 在配置文件中使用通配符 这里就说一下Dynamic Method nvocation ,动态方法调用,什么是动态方 ...

  3. 第三章Struts2 Action中动态方法调用、通配符的使用

    01.Struts 2基本结构 使用Struts2框架实现用登录的功能,使用struts2标签和ognl表达式简化了试图的开发,并且利用struts2提供的特性对输入的数据进行验证,以及访问Servl ...

  4. struts之动态方法调用改变表单action属性

      一.动态方法调用(DMI:Dynamic Method Invocation) ⒈struts2中同样提供了这个包含多个逻辑业处理的Action,这样就可以在一个Action中进行多个业务逻辑处理 ...

  5. Struts2 Action中动态方法调用、通配符的使用

    一.Struts2执行过程图: 二.struts2配置文件的加载顺序 struts-default.xml---struts-plugin.xml---struts.xml 具体步骤: 三.Actio ...

  6. 在MVC或WEBAPI中记录每个Action的执行时间和记录下层方法调用时间

    刚才在博客园看了篇文章,http://www.cnblogs.com/cmt/p/csharp_regex_timeout.html  突然联想到以前遇到的问题,w3wp进程吃光CPU都挂起IIS进程 ...

  7. Struts2中使用execAndWait后,在 Action中调用getXXX()方法报告java.lang.NullPointerException异常的原因和解决方法

    使用 Struts2 编写页面,遇到一个要长时间运行的接口,因此增加了一个execAndWait ,结果在 Action 中调用 getContext()的时候报告异常 ActionContext c ...

  8. Struts2学习---基本配置,action,动态方法调用,action接收参数

    首先我们先来直接配置,然后再来讲原理: 第一步:jar包的引入: 我们可以到struts2的官网上下载: http://struts.apache.org/download.cgi#struts251 ...

  9. Struts2-整理笔记(二)常量配置、动态方法调用、Action类详解

    1.修改struts2常量配置(3种) 第一种 在str/struts.xml中添加constant标签 <struts> <!-- 如果使用使用动态方法调用和include冲突 - ...

随机推荐

  1. metal的gpu query

    https://developer.apple.com/documentation/metal/mtlcommandbuffer/1639924-gpustarttime gpuStartTime 看 ...

  2. scala 内部类

    scala内部类不同于java内部类, java类中内部类从属于外部类,而scala的内部类从属于外部类对象 /** * 第一种方式 * 在内部类通过 外部类.this.成员名称 访问外部类成员 */ ...

  3. MySQL分库备份与分表备份

    MySQL分库备份与分表备份 1.分库备份 要求:将mysql数据库中的用户数据库备份,备份的数据库文件以时间命名 脚本内容如下: [root@db01 scripts]# vim backup_da ...

  4. JavaScript的String对象

    1.创建String对象 Html标签的格式编排方法:可以将String对象的字符串内容输出成对应的html标签. 示例: var str = "JavaScript程序设计"; ...

  5. WIN7如何替换开机登录画面

    1 把你的图片保存为backgroundDefault.jpg,并确保和你的屏幕分辨率相同 2 把下面的代码另存为@开启自定义登录界面.reg(注意格式为ASCII格式) Windows Regist ...

  6. jQuery Recipies - 使用map来过滤对应的元素集

    <table id="tblEmployee" class="normal_table"> <tr> <td>Employe ...

  7. CDN新应用和客户

    目前的CDN配置服务主要应用于证券.金融保险.ISP.ICP.网上交易.门户网站.大中型公司.网络教学等领域.另外在行业专网.互联网中都可以用到,甚至可以对局域网进行网络优化.利用CDN,这些网站无需 ...

  8. Python中的关键字的用法

    Python有哪些关键字 -Python常用的关键字 and, del, from, not, while, as, elif, global, or, with, assert, else, if, ...

  9. chromedriver中的浏览器选项

    There are lots of command lines which can be used with the Google Chrome browser. Some change behavi ...

  10. Php如何返回json数据

    php返回json,xml,JSONP等格式的数据 返回json数据: header('Content-Type:application/json; charset=utf-8'); $arr = a ...