快速业务通道

动态调用Action与Action中方法(一) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24

动态调用Action与Action中方法(一)

时间:2009-12-15 javaeye elf8848

Struts1提供了DispatchAction 实现一个Action中名含多个业务逻辑

现在我们使用Struts2 也可实现现样的效果,是使用通配符来实现的.

struts.xml 文件中,常用

<action /> 的name ,class,method 三个属性都支持通配符

<resutl/> 也支持通配符

Xml代码

<?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> <package name="struts2" extends="struts-default"> <action name="*Action_*" class="ssh.org.web.{1}Action" method="{2}"> <result name="success">/user/success.jsp</result> <result name="input">/user/user.jsp</result> </action> </package> </struts>

针对上面的配置,假如我拉的URL 是:http://localhost/struts/UserAction_addUser .action

UserAction_addUser 与*Action_* 匹配  ,第一个* 是User,第二个*是addUser,

{1} 的值为 User,{2}的值为addUser ,区分大小写.

class="ssh.org.web.{1}Action"  赋值后是,由User 替代{1}

method="{2}" 赋值后是,由addUser 替代{2}

从而实现动态的找到Action 与找个Action中的方法.

其中一个Action代码: 类名是UaerAction,其中有addUser()方法

与URL http://localhost/struts/UserAction_addUser .action  相匹配,模式为*Action_*

Java代码

package ssh.org.web; import java.util.Date; import java.util.List; import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport { private static final long serialVersionUID = 1L; private String username; private int age; private Date birthday; private List<String> aihao; public String addUser() throws Exception { //添加用户 return "success"; } public void validateAddUser() { if (null == username || "".equals(username)) { addFieldError("username","用户名不能为空"); } System.out.println("validateAddUser() 验证方法 "); } public String getUserList() { //取得所有用户 return "success"; } public void validateGetUserList() { //验证方法略... System.out.println("validateAddUser() 验证方法 "); } public String getUsername() { return username; } public void setUsername(final String username) { this.username = username; } public int getAge() { return age; } public void setAge(final int age) { this.age = age; } public Date getBirthday() { return birthday; } public void setBirthday(final Date birthday) { this.birthday = birthday; } public List<String> getAihao() { return aihao; } public void setAihao(final List<String> aihao) { this.aihao = aihao; } }

<resutl/> 也支持通配符,

struts.xml文件 一例子:

Xml代码

<action name="page_*" class="ssh.org.web.HrefAction" > <result name="success">{1}.jsp</result> </action>

最后在说一说优先级的问题

通配符匹配方式 ,当我们写多个<action name="*"  .../> 时,意思就是你的URL可能与多个<action name="*"  .../>匹配上,先执行那一个?

答: 按书写的先后顺序,先找到哪个,就执行哪个.

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号