前面一章讲了下动态配置的方法。那样,能够直接动态的调用action里面的方法,
这里展示一种配置更少,更简洁的一种方法。
在前一章其他不变的情况下,改变配置文件
<package name="Menu" namespace="/Menu" extends="struts-default"> <action name="*" class="com.almostman.action.{1}Action" > <result name="success">/success.jsp</result> <result name="input">/input.jsp</result> </action> </package>
这里的 “*” 表示你输入的内容,{1}表示第一个*的内容,这里具体调用的method不用去指定,因为用了动态调用,方法可以直接通过 “!”去调用。
MainPageAction.java
package com.almostman.action; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import com.opensymphony.xwork2.ActionSupport; public class MainPageAction extends ActionSupport{ /** * */ private static final long serialVersionUID = 1L; @Override public String execute() throws Exception { if("admin".equals(username) && "admin".equals(password)){ return SUCCESS; } return INPUT; } public String init() throws Exception { if("admin".equals(username) && "admin".equals(password)){ return SUCCESS; } return INPUT; } public String add() throws Exception { if("admin".equals(username) && "admin".equals(password)){ return SUCCESS; } return INPUT; } private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
这里的调用URl是
http://localhost:8081/struts013/Menu/MainPage!init.action?username=admin&password=admin
通过Action名和方法直接进行了访问,甚至返回都可以用通配符固定返回的页面也和调用的一样,这样名字都不用去想不同的。