程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 動態調用Action與Action中方法(一)

動態調用Action與Action中方法(一)

編輯:關於JAVA

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="*"  .../>匹配上,先執行那一個?

答: 按書寫的先後順序,先找到哪個,就執行哪個.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved