java strtus2 DynamicMethodInvocation配置(二)

前面一章讲了下动态配置的方法。那样,能够直接动态的调用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名和方法直接进行了访问,甚至返回都可以用通配符固定返回的页面也和调用的一样,这样名字都不用去想不同的。

源码:http://pan.baidu.com/s/1kULwCIj

原文地址:https://www.cnblogs.com/sunxun/p/5388169.html