初识(struts2中)action动态调用的三种方法

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_44540088/article/details/89889631
  • 三种方法

    1.配置多个action
    2.使用感叹号“❗”(只需配置一个action)
    3.使用通配符

前期准备

  1. 定义两个action类
package cn.com.tjise.dynamic;

public class Demo1Action {
	public String add() {
		System.out.println("增加标记");
		return "success";
	}
	public String del() {
		System.out.println("删除标记");
		return "success";
	}
}

package cn.com.tjise.dynamic;

public class Demo2Action  {
	public String add() {
		System.out.println("2增加标记");
		return "success";
	}
	public String del() {
		System.out.println("2删除标记");
		return "success";
	}
}

  1. 配置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>
<!-- 此处通过include包含了另一个xml文件(struts-dynamic.xml)他俩在同一级目录中-->
<include file="struts-dynamic.xml"></include>
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
   <package name="hello" namespace="/abc" extends="struts-default">
   		<action name="HelloAction" class="cn.com.tjise.action.HelloAction" method="execute">
   			<result name="success" type="dispatcher">/index.jsp</result>
   		</action>
   </package>
   <package name="dynamic2" namespace="/dynamic2" extends="struts-default" strict-method-invocation="false">
   		<action name="Demo2Action_*" class="cn.com.tjise.dynamic.Demo2Action" method="{1}">
   			<result name="success" type="dispatcher">/index.jsp</result>
   		</action>
   </package>
</struts>
<?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>
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>

   <package name="dynamic" namespace="/dynamic" extends="struts-default" strict-method-invocation="false">
   		<action name="Demo1Action" class="cn.com.tjise.dynamic.Demo1Action" method="add">
   			<result name="success" type="dispatcher">/index.jsp</result>
   		</action>
   		<action name="Demo1Action" class="cn.com.tjise.dynamic.Demo1Action" method="del">
   			<result name="success" type="dispatcher">/index.jsp</result>
   		</action>
   </package>
   
</struts>

此处特别注意:
百度里搜索说在struts2的2.5以后的版本进行动态调用需要在struts.xml文件中加上两句话,但是我在电脑试验版本2.35也需要加上两句话才可以实现动态调用
所以都加上为妙,如下:(在以上的代码中已经加入)

<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>

在package中加上:

strict-method-invocation="false"
  1. 配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
  <display-name>struts201</display-name>
  <welcome-file-list>  
    <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
  <filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
  		<filter-name>struts2</filter-name>
  		<url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>
  • 简单写一个index.jsp文件
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
	<h2>123</h2>
</body>
</html>

测试

  • 第一种方法测试(配置多个action)
    在这里插入图片描述
    在这里插入图片描述
  • 第二种方法(带“!”的)
    在这里插入图片描述
    在这里插入图片描述
  • 第三种方法(通配符)
  • 在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
结束…

猜你喜欢

转载自blog.csdn.net/weixin_44540088/article/details/89889631