Struts2动态方法调用

动态方法调用就是为了解决一个Action对应多个请求的处理,以免Action太多。

1、指定method属性

package com.action;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.util.ServletContextAware;
import com.opensymphony.xwork2.ActionSupport;

public class HelloWord extends ActionSupport implements ServletRequestAware, ServletResponseAware,ServletContextAware{

    public String add(){
        return SUCCESS;
    }
    
    public String update(){
        return SUCCESS;
    }
    
    @Override
    public String execute() throws Exception{
        System.out.println("执行action");
        return SUCCESS;
    }

    @Override
    public void setServletResponse(HttpServletResponse response) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void setServletRequest(HttpServletRequest request) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void setServletContext(ServletContext context) {
        // TODO Auto-generated method stub
        
    }
}

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <package name="default" namespace="/" extends="struts-default">
        <action name="helloword" class="com.action.HelloWord">
            <result>/result.jsp</result>
        </action>
        
        <action name="addAction" method="add" class="com.action.HelloWord">
            <result>/add.jsp</result>
        </action>
        
        <action name="updateAction" method="update" class="com.action.HelloWord">
            <result>/update.jsp</result>
        </action>
    </package>
</struts>

访问路径:

http://localhost:8080/HelloWord/addAction.action

http://localhost:8080/HelloWord/updateAction.action

 2、感叹号方式

package com.action;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.util.ServletContextAware;
import com.opensymphony.xwork2.ActionSupport;

public class HelloWord extends ActionSupport implements ServletRequestAware, ServletResponseAware,ServletContextAware{

    public String add(){
        return "add";
    }
    
    public String update(){
        return "update";
    }
    
    @Override
    public String execute() throws Exception{
        System.out.println("执行action");
        return SUCCESS;
    }

    @Override
    public void setServletResponse(HttpServletResponse response) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void setServletRequest(HttpServletRequest request) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void setServletContext(ServletContext context) {
        // TODO Auto-generated method stub
        
    }
}

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <package name="default" namespace="/" extends="struts-default">
        <action name="helloword" class="com.action.HelloWord">
            <result>/result.jsp</result>
            <result name="add">/add.jsp</result>
            <result name="update">/update.jsp</result>
        </action>
    </package>
    <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
</struts>

访问路径:

http://localhost:8080/HelloWord/helloword!add.action

http://localhost:8080/HelloWord/helloword!update.action

3、通配符方式

package com.action;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.util.ServletContextAware;
import com.opensymphony.xwork2.ActionSupport;

public class HelloWord extends ActionSupport implements ServletRequestAware, ServletResponseAware,ServletContextAware{

    public String add(){
        return "add";
    }
    
    public String update(){
        return "update";
    }
    
    @Override
    public String execute() throws Exception{
        System.out.println("执行action");
        return SUCCESS;
    }

    @Override
    public void setServletResponse(HttpServletResponse response) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void setServletRequest(HttpServletRequest request) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void setServletContext(ServletContext context) {
        // TODO Auto-generated method stub
        
    }
}

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <package name="default" namespace="/" extends="struts-default">
        <action name="helloword_*" method="{1}" class="com.action.HelloWord">
            <result>/result.jsp</result>
            <result name="add">/{1}.jsp</result>
            <result name="update">/{1}.jsp</result>
        </action>
    </package>
    <constant name="struts.enable.DynamicMethodInvocation" value="false"></constant>
</struts>

访问路径:

http://localhost:8080/HelloWord/helloword_add.action

http://localhost:8080/HelloWord/helloword_update.action

posted @ 2016-07-25 16:30  smilelily126  阅读(139)  评论(0编辑  收藏  举报