概述
Struts1 提供了DispatchAction 实现一个Action中名含多个业务逻辑
现在我们使用Struts2 也可实现现样的效果, 是使用通配符来实现的.
struts.xml 文件中,常用
<action /> 的name , class, method 三个属性都支持通配符
<resutl/> 也支持通配符
<?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_*
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文件 一例子:
<action name="page_*" class="ssh.org.web.HrefAction" > <result name="success">{1}.jsp</result> </action>
-----------------------------------------------------------------------
最后在说一说优先级的问题
通配符 匹配方式 , 当我们写多个<action name="*" .../> 时, 意思就是 你的URL 可能与多个 <action name="*" .../> 匹配上, 先执行那一个?
答: 按 书写的先后顺序, 先找到哪个, 就执行哪个.
最后
以上就是飘逸指甲油为你收集整理的8 动态调用Action与Action中方法(一)的全部内容,希望文章能够帮你解决8 动态调用Action与Action中方法(一)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复