1. 程式人生 > >Struts2中呼叫Action的方法

Struts2中呼叫Action的方法

Struts2中Action的呼叫方法可以分為三種

第一種:首先定義一個Action類,這個類中有兩個方法一個登入,一個註冊

public String login(){
		System.out.println("登入的方法........................");
		if (username.equals("demo") && password.equals("demo")) {
			return "login_success";
		} else {
			return "error";
		}
	}
	
	public String register(){
		System.out.println("註冊的方法........................");
		if (password.equals(repassword)) {
			return "register_success";
		} else {
			return "error";
		}
	}
其實還有三個屬性:
private String username;
private String password;
private String repassword;
還有get set方法

然後配置Action

<action name="user" class="com.action.packages.UserAction">
    			<result name="login_success">WEB-INF/pages/login_success.jsp</result>
    			<result name="register_success">WEB-INF/pages/register_success.jsp</result>
    			<result name="error">WEB-INF/pages/error.jsp</result>
</action>
最後動態呼叫
<form action="user!login.action">
	使用者名稱:<input type="text" name="username"/><br/><br/>
	密  碼:<input type="password" name="password"/><br/><br/>
	<input type="submit" value="提交"/>  <input type="reset" value="重置"/>
</form>
這個就是呼叫的配置中名為user 的Action中的login方法,呼叫register方法如下:
<form action="user!register.action">
	使用者名稱:<input type="text" name="username"/><br/><br/>
	密  碼:<input type="password" name="password"/><br/><br/>
	<input type="submit" value="提交"/>  <input type="reset" value="重置"/>
</form>
總結一個公式就是:actionName!methodName.action
如果通過user.action方式進行呼叫,此時應該呼叫UserAction的execute()方法。沒有那就等著報錯!

上述方式在配置Action的時候就是配置struts.xml的時候,有的版本需要加上這樣一句配置

<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
第二種方式使用method屬性來實現

同上同樣是那個UserAction,同樣當中有兩個方法

配置struts.xml的寫法

通過不同的action的名字(name屬性)來呼叫就可以了

第三種萬用字元

<action name="*Dynamic" class="com.action.packages.UserAction" method="{1}">
    			<result name="{1}_success">WEB-INF/pages/{1}_success.jsp</result>
    			<result name="{1}_success">WEB-INF/pages/{1}_success.jsp</result>
    			<result name="error">WEB-INF/pages/error.jsp</result>
    		</action>
如果訪問register方法:
<form action="registerDynamic.action">
	使用者名稱:<input type="text" name="username"/><br/><br/>
	密  碼:<input type="password" name="password"/><br/><br/>
	確認密碼:<input type="password" name="repassword"/><br/><br/>
	<input type="submit" value="提交"/>  <input type="reset" value="重置"/>
</form>
看到沒有register佔用了星號,這個時候標記為{1}的地方都會替換為register,如果是login也是同理的。替換過後你就可以明白誰呼叫誰,然後該往哪個頁面跳了吧。