`

Struts2学习笔记---DMI(动态方法调用)

阅读更多


用action的我们可以使用method来调用一个方法,不过还可以用DMI,动态方法调用

Action执行的时候并不一定要执行execute方法
可以在配置文件中配置Action的时候用method=来指定执行哪个方法
也可以在url地址中动态指定(动态方法调用DMI)(推荐)
前者会产生太多的action,所以不推荐使用

 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <!-- Add packages here -->
	<constant name="struts.devMode" value="true" />
    <package name="user" extends="struts-default" namespace="/user">
        <action name="userAdd" class="org.hualang.actionmethod.ActionMethod" method="add">
            <result>/MyJsp.jsp</result>
        </action>
        
        <action name="user" class="org.hualang.actionmethod.ActionMethod">
        	<result>/MyJsp.jsp</result>
        </action>
    </package>
</struts>

 

这里有两个action,第一个action用的就是method方式,但是不推荐用,而第二个就是用的DMI动态方法调用

 

ActionMethod.java(在src目录下的org.hualang.actionmethod包中)

这里没有execute()方法,而是add方法

第一个method="add",说明调用add()方法,只要返回值是String,想调用什么就调用什么
action的名字是userAdd,而对应的result是MyJsp.jsp,所以到这个页面,显示“添加页面”

package org.hualang.actionmethod;

import com.opensymphony.xwork2.ActionSupport;

public class ActionMethod extends ActionSupport {
	public String add()
	{
		return SUCCESS;
	}
}

 
index.jsp(另外还有个MyJsp.jsp就是显示字符串“添加页面”)

<body>
Action执行的时候并不一定要执行execute方法<br />
可以在配置文件中配置Action的时候用method=来指定执行哪个方法<br/>
也可以在url地址中动态指定(动态方法调用DMI)(推荐)<br />
	<a href="<%=context %>/user/userAdd">添加用户</a>
	<br />
	<a href="<%=context %>/user/user!add">添加用户</a>
	<br />
前者会产生太多的action,所以不推荐使用
	
</body>

 

其他的跟以前的基本一样

 

运行结果如下:


点击第一个链接
 

 点击第二个链接

 



 

  • 大小: 12.6 KB
  • 大小: 10 KB
  • 大小: 10 KB
分享到:
评论
12 楼 jianson_wu 2011-05-16  
我看了马士兵的视频,个人感觉使用通配符的方式来做页面提交更强大。。。。  并且在企业中都是约定优于配置的。。。。。。   
11 楼 serbry0033 2011-05-14  
动态调用只是一种新的写法 至于用不用还是整个项目的设计规范 安全问题谈不上
10 楼 java_vm 2011-05-13  
wuliaolll 写道
你说的action大多是什么情况,配置文件的action配置吗?写action代码并没有减少。

如果是这样,产生多个action未尝不可,项目大了,全用aaa!method的方式,不好维护,难以形成规范性,以method配置方式一目了然,而且你在请求路径上加上方法名,无疑是把代码级别的东西暴露了,不太适合。

是不是这个跟通配符差不多了,项目中是不是通配符也尽量不要用???
9 楼 悲剧了 2011-05-12  
用struts2插件吧 零配置
8 楼 waitingmyself 2011-05-10  
KimShen 写道
使用不当会造成严重安全问题,强烈建议关闭掉

同意  性能问题 安全问题
7 楼 KimShen 2011-05-10  
使用不当会造成严重安全问题,强烈建议关闭掉
6 楼 limaofeng 2011-05-10  
这个写法只是减少了 action 的配置代码    并不能减少 action 的数量,  因为每次请求都会new action    如果这样写的话。 匹配方法的时候可能还会更加消耗性能。 因为每次都会通过反射去寻找方法,而且还不知道方法是否存在。
5 楼 簡單從泚銷夨 2011-05-10  
使用 org.apache.struts2.convention.annotation 比较方便
4 楼 wuliaolll 2011-05-10  
你说的action大多是什么情况,配置文件的action配置吗?写action代码并没有减少。

如果是这样,产生多个action未尝不可,项目大了,全用aaa!method的方式,不好维护,难以形成规范性,以method配置方式一目了然,而且你在请求路径上加上方法名,无疑是把代码级别的东西暴露了,不太适合。
3 楼 take 2011-05-09  
bluemare 写道
那对于多个页面result如果配置呢?

判断嘛..
2 楼 bluemare 2011-05-09  
那对于多个页面result如果配置呢?
1 楼 java_user 2011-05-05  
Dynamic Method Invoke的缩写?

相关推荐

    chromedriver-win64_116.0.5840.0.zip

    chromedriver-win64_116.0.5840.0.zip

    基于Java Servlet实现的灾情控制系统.zip

    该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

    计算机毕业设计-求职与招聘.zip

    计算机毕业设计资源包含(项目部署视频+源码+LW+开题报告等等),所有项目经过助教老师跑通,有任何问题可以私信博主解决,可以免费帮部署。

    【PID优化】粒子群算法和遗传算法自动电压调节器 (AVR) 系统PID控制器优化调整【含Matlab源码 4698期】.zip

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    瘢痕挛缩护理规定(医院规章制度管理文件).docx

    瘢痕挛缩护理规定(医院规章制度管理文件).docx

    java课程设计项目:基于SpringBoot的在线订餐系统.zip

    该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

    网页设计特殊的的行为代码

    html网页制作 行为代码 事件效果 特写脚本代码

    chromedriver-win64_116.0.5842.0.zip

    chromedriver-win64_116.0.5842.0.zip

    长亭网络通信基础详情了解word

    长亭网络通信基础详情了解word

    基于Selenium的Java爬虫实战(内含谷歌浏览器Chrom和Chromedriver版本124.0.6344.0)

    资源包括: 1.Java爬虫实战代码 2.selenium学习笔记 3.代码演示视频 4.谷歌浏览器chrom124.0.6344.0 chrome-linux64.zip chrome-mac-arm64.zip chrome-mac-x64.zip chrome-win32.zip chrome-win64.zip 5.谷歌浏览器驱动器Chromedriver124.0.6344.0 chromedriver-linux64.zip chromedriver-mac-arm64.zip chromedriver-mac-x64.zip chromedriver-win32.zip chromedriver-win64.zip 特别说明:Chrome 为测试版(不会自动更新) 仅适用于自动测试。若要进行常规浏览,请使用可自动更新的标准版 Chrome。)

    32位alu设计实验logisim-ma开发笔记

    32位alu设计实验logisim

    常用变量名合集(喜欢请点赞+收藏+转发)

    变量名的命名直接影响到程序的易读性,好的变量名应该简洁、易于理解。 一、单字符变量名 数学中通常用x,y来表示坐标,同样的,在命名变量时,可以使用一些具有特定含义的单个字符。这样的变量名兼具有意义和极简两大优点,作为编程人员应熟记。 具体列举如下。 i、j、k:数值(integer(整数))。 s:字符串(string)。 c:字符(char)。 p:指针(pointer)。 a:数组(array)。 x、y、z:坐标。 l:长度(length)。 n:数字、数量(number)。 二、常用变量名 1.计数器和循环: count:用于计数或记录数量的变量。 i、j、k:常用于循环中的迭代变量,尤其在嵌套循环中。 index:常用于循环或数组中的索引。 loop:表示循环的次数或循环控制变量(相当于前面的i) 2.布尔型变量: flag:用于表示某种状态或条件是否满足。 status:表示状态或结果。 isOpen:表示某个对象或功能是否开启。 isValid:表示某个条件是否有效或成立。 isFound:表示是否找到了某个元素或条件。

    chromedriver-win64_117.0.5938.35.zip

    chromedriver-win64_117.0.5938.35.zip

    chromedriver-win64_119.0.6039.0.zip

    chromedriver-win64_119.0.6039.0.zip

    springboot洗衣店管理系统.rar

    一、顾客功能点: 注册功能:用户可以注册账号,注册成功后可以登录系统。 登录功能:已注册用户可以登录系统,从而管理自己的信息以及进行洗衣预约等功能的使用。 查看与修改个人信息:用户有个人的主页和个人信息展示,允许用户对自己的信息进行修改。 修改密码:用户可以修改自己的密码。 店铺预约与查看:用户可以查看店铺详情并且预约。 洗衣信息管理:用户预约完毕之后可以对自己的预约信息进行查看,并且支付。 订单信息查看:用户可以查看依旧完成的订单信息和进行中的订单。 二、店家功能点: 店铺信息管理:店家可以对店铺信息进行增删改查。 衣服类型管理:店家可以管理自己可以清洗的衣服类型。 洗衣信息管理:店家可以管理用户的预约订单,进行审核和删除订单。 订单信息管理:店家可以管理订单信息,对订单信息的进度进行管理。 三、管理员功能点: 顾客信息管理:管理员可以对所有顾客进行管理,进行增删改查操作。 店家信息管理:管理员可以管理所有的店家,对店家进行增删改查和审核操作。 店铺信息管理:管理员可以管理所有的店铺信息,对店铺进行删改查以及审核操作。 衣服类型管理:管理员可以管理所有的衣服类型,并且进行删除操作

    btstack协议栈实战篇-HID Mouse Classic

    HID Mouse Classic

    主要施工机械实有、完好情况表.docx

    主要施工机械实有、完好情况表.docx

    WTU课设:基于C++和qt的超市商品管理系统.zip

    该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

    java论坛管理系统设计(源代码+论文)

    java论坛管理系统设计(源代码+论文)

    chromedriver-win64_116.0.5845.4.zip

    chromedriver-win64_116.0.5845.4.zip

Global site tag (gtag.js) - Google Analytics