一、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. 使用MyEclipse 2014构建Maven项目的两种方法

    前提: MyEclipse已配置Maven,具体步骤见http://blog.csdn.net/haishu_zheng/article/details/51492491 方法一: 1 File--& ...

  2. 提取nds游戏的音乐

    nds游戏绝对是游戏界的瑰宝,尤其是有些游戏的音乐还很好听,所以想把它们提取出来.网上搜了下教程,这里整理一下,全程在archlinux下操作. 首先用到的工具是(vgmtrans)[https:// ...

  3. 转: 加快Android编译速度

    转: http://timeszoro.xyz/2015/11/25/%E5%8A%A0%E5%BF%ABandroid%E7%BC%96%E8%AF%91%E9%80%9F%E5%BA%A6/ 加快 ...

  4. 小白系列-免费广告路由器web认证设置(2)

    要设置认证页面图片.须要到后台注冊一个帐号,绑定路由器. 路由器管理后台网址 http://115.29.12.130/router 第一步:自己主动获取一个路由器ID(上一篇文章中的路由器ID也要改 ...

  5. 腾讯技术分享:Android版手机QQ的缓存监控与优化实践

    本文内容整理自公众号腾讯Bugly,感谢原作者的分享. 1.问题背景 对于Android应用来说,内存向来是比较重要的性能指标.内存占用过高,会影响应用的流畅度,甚至引发OOM,非常影响用户体验.因此 ...

  6. onethink 密码加密方式详解

    /** * 系统非常规MD5加密方法 * @param string $str 要加密的字符串 * @return string */ function think_ucenter_md5($str, ...

  7. ionic 项目使用百度地图插件(cordova-qdc-baidu-location)

    现在我们使用'Weizhe He'提供的cordova-qdc-baidu-location来尝试创建简单的定位app. Stpe1:创建一个项目 Stpe2:申请百度地图API秘钥     应用类型 ...

  8. expect脚本免密码

    #!/usr/bin/expect set timeout spawn ssh root@20.0.102.19 expect "password:" send "123 ...

  9. C++实现对数学基本运算表达式的解析

    代码地址如下:http://www.demodashi.com/demo/11078.html 前段时间在LeetCode上刷题,遇到了很多涉及对字符串进行解析的题目.可能是出于这个原因,最近迷恋上了 ...

  10. j2ee高并发时使用全局变量需要注意的问题

    原文:https://blog.csdn.net/jston_learn/article/details/21617311 开发中,全局变量的使用很频繁,但对于多线程的访问,使用全局变量需要注意的地方 ...