Struts2 动态调用方法

struts2动态调用方法有两种方式

方式一:用通配符进行调用:

Action方法:

 1 package com.bjyinfu.struts.actions;
 2 
 3 public class CatchDynamicMethod {
 4 
 5     public String doFirst(){
 6         System.out.println("执行doFirst方法");
 7         return "success";
 8     }
 9 
10     public String doSecond(){
11         System.out.println("执行doSecond方法");
12         return "success";
13     }
14 }

Struts2中注册方法:(注:method对应得是占位符从1开始,在提交请求的时候,*是什么,method对应的就是什么,也就是说提交请求的时候,*对应的应该是对应的方法名称)

1 <struts>
2 
3   <package name="dynamic" namespace="/dynamic" extends="default">
4         <action name="execute_*" class="com.bjyinfu.struts.actions.CatchDynamicMethod" method="{1}">
5             <result name="success">/welcome01.jsp</result>        
6         </action>
7     </package>
8     
9 </struts>

展示页面:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>My First Struts2 Project</title>
 8 </head>
 9 <body>
10     welcome01 page
11 </body>
12 </html>

(方法一就是讲通配符*换成方法名即可)

方法二:开启常量设置实现动态调用方法:

再Struts2.xml配置文件中注册方法的时候,将常量"struts.enable.DynamicMethodInvocation"开启

1 <struts>
2   <constant name="struts.enable.DynamicMethodInvocation" value="true"/>
3     <package name="dynamic" namespace="/dynamic" extends="default">
4         <action name="execute" class="com.bjyinfu.struts.actions.CatchDynamicMethod">
5             <result name="success">/welcome01.jsp</result>        
6         </action>
7     </package>
8 </struts>

地址栏访问的时候,http://127.0.0.1:8080/projectName/dynamic/execute!方法名.action

原文地址:https://www.cnblogs.com/lubolin/p/7251588.html