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
时间: 2024-10-04 00:04:23