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="*" .../> 匹配上, 先执行那一个?
答: 按 书写的先后顺序, 先找到哪个, 就执行哪个.
分享到:
相关推荐
jsp自动调用action采用中间jsp方法 就是采用从欢迎页跳到action处理再转到展示页面,就可以访问页面时加载数据
struts2利用通配符调用同一个Action里面不同的方法,在struts.xml配置文件中将请求方法的不相同部分抽象成“*".
详细讲解struts2中单个action中多个处理逻辑的配置方法, 以及默认Action的配置.
利用Struts 2框架创建一个web项目chap2_e22,实现用户登录过程。具体要求是在loginAction类中分别用login()和registered()处理用户登录和注册的过程,分别创建login.jsp和register.jsp两个页面实现登录和注册的...
可以在具体的Action实现类里增加新的方法(这些方法都是无参和公有的,都有一个String的返回类型),然后在url上指定这次请求调用哪个方法 有源代码,有注释,配置文档也配置好了
struts 1框架的动态调用也许你会,但是struts2 的动态调用更经典,这个文档让你玩转struts 2 动态调用.......
方法一: 用js函数让网页重定向,window.location.href=‘actionName.action?paraName=arg0’; 如果需要带参数的话可以在action中定义那个参数名paraName,并生成setter和getter方法 方法二: ...
1:非重用型:只能在被存储它的TEST中调用而且只能被调用一次。 2:重用型:可以被多次在被存储它的TEST或别的TEST中调用, 3:外部型:一个存储在别的TEST中的可重用型,只能在调用它的TEST中只读。但它的DATA TABLE...
JS调用Struts中的ActionJS调用Struts中的ActionJS调用Struts中的Action
struts2动态调用之通配符,相当于是改进的method动态调用方法,减少对同一action不同method的多次配置
sp页面的form表单里面有一个属性值action,当提交jsp页面上的form表单时,系统会根据action的值来找到servlet里面具体的action,(这里的servlet是在web.xml配置文件里面),然后调用action里面的execute()方法,...
action in redux applyMiddleware | 在调用链中触发action
struts动态访问调用之一,采用method属性,同一个Action内的不同方法来响应用户请求
主要介绍了详解Struts2动态方法调用,涉及调用方法的代码,具有一定参考价值,需要的朋友可以了解下。
取得form实例以后,调用其 reset ()方法,然后将表单中的参数放入form,如果validate属性不为false,调用validate()方法;如果validate ()返回非空的ActionErrors,将会被转到input属性指定的URI,如果返回空的...
ThinkPHP内置了A方法与R方法这两个特殊的大写字母方法来处理跨模块调用的问题。 目前Index模块内有index操作User模块有showName操作User模块及showName操作具体代码如下: <?php class UserAction extends ...
主要介绍了一个Action如何调用两个不同的方法,需要的朋友可以参考下
最近修了几个struts2.1升级到2.3后动态方法调用失效的bug,深有感悟, 但是我那种原始方法有一个局限,就是在submit那里写下的action不起作用,就算启动了动态方法调用也不行(我想应该是struts2.3的一个bug),所以...
在WEB开发中,一般,仅仅使用JSP+ajax+SEVLET或者jsp+struts2的其中某种方式进行,各自的缺点也非常明显。这里,给出了ajax直接调用ACTION并给前台进行list或者JSON的数据回传。很不错的哦!
DA框架能够对任何一个已经存在的Action修改,动态改变原有的跳转逻辑。值得一提的是,DA框架不仅友好地实现了与H5间的跳转交互,也解决了Activity在插件化项目的交互问题。 DA的URI基本结构 在DA框架下,Activity是...