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>
访问路径: