Struts2 Action的访问方式

我们在配置Struts2的Action类可以采用以下三种方式配置,不同的配置方式Action类的访问就不一样。

1 方式一:传统方式的配置

Action类:

package com.yiidian.action;

import com.opensymphony.xwork2.ActionSupport;

/**
 * 方式一:传统方式的配置
 * @author 一点教程(yiidian.com)
 *
 */
public class Demo1Action extends ActionSupport{

	public String save(){
		System.out.println("Demo1Action的save方法");
		return SUCCESS;
	}
	
	
	public String update(){
		System.out.println("Demo1Action的update方法");
		return SUCCESS;
	}
}

struts.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
	"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
	<!-- 方式一:传统的访问方式 -->
	<package name="demo1" extends="struts-default" namespace="/demo1">
		<action name="save" class="com.yiidian.action.Demo1Action" method="save">
			<result>/succ.jsp</result>
		</action>
		<action name="update" class="com.yiidian.action.Demo1Action" method="update">
			<result>/succ.jsp</result>
		</action>
	</package>
</struts>

Action的访问路径:

执行save方法:http://localhost:8080/ch01_03_struts2_invoke/demo1/save.action

执行update方法:http://localhost:8080/ch01_03_struts2_invoke/demo1/update.action

优缺点分析

优点:配置可读性强

缺点:配置冗余繁琐

2 方式二:通配符的配置

Action类:

package com.yiidian.action;
import com.opensymphony.xwork2.ActionSupport;
/**
 * 方式二:通配符的访问方式
 * @author 一点教程(yiidian.com)
 *
 */
public class Demo2Action extends ActionSupport{

	public String save(){
		System.out.println("Demo2Action的save方法");
		return SUCCESS;
	}
	
	
	public String delete(){
		System.out.println("Demo2Action的delete方法");
		return SUCCESS;
	}
}

struts.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
	"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
	<!-- 方式一:传统的访问方式 -->
	<package name="demo1" extends="struts-default" namespace="/demo1">
		<action name="save" class="com.yiidian.action.Demo1Action" method="save">
			<result>/succ.jsp</result>
		</action>
		<action name="update" class="com.yiidian.action.Demo1Action" method="update">
			<result>/succ.jsp</result>
		</action>
	</package>
	
	<!-- 方式二:通配符的访问方式 -->
	<package name="demo2" extends="struts-default" namespace="/demo2">
		<action name="demo2_*" class="com.yiidian.action.Demo2Action" method="{1}">
			<result>/succ.jsp</result>
		</action>
	</package>
</struts>

Action的访问路径:

执行save方法:http://localhost:8080/ch01_03_struts2_invoke/demo2/demo2_save.action

执行delete方法:http://localhost:8080/ch01_03_struts2_invoke/demo2/demo2_delete.action

优缺点分析

优点:配置简洁

缺点:配置可读性稍差

3 方式三:动态方法调用

修改struts.xml开启动态方法调用(默认是关闭的):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
	"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
    <!-- 开启动态方式调用 -->
	<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>

Action类:

package com.yiidian.action;
import com.opensymphony.xwork2.ActionSupport;
/**
 * 方式三:动态方式调用的访问方式
 * @author 一点教程(yiidian.com)
 *
 */
public class Demo3Action extends ActionSupport{
	public String save(){
		System.out.println("Demo3Action的save方法");
		return SUCCESS;
	}
	
	public String delete(){
		System.out.println("Demo3Action的delete方法");
		return SUCCESS;
	}
}

struts.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
	"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
	<!-- 方式一:传统的访问方式 -->
	<package name="demo1" extends="struts-default" namespace="/demo1">
		<action name="save" class="com.yiidian.action.Demo1Action" method="save">
			<result>/succ.jsp</result>
		</action>
		<action name="update" class="com.yiidian.action.Demo1Action" method="update">
			<result>/succ.jsp</result>
		</action>
	</package>
	
	<!-- 方式二:通配符的访问方式 -->
	<package name="demo2" extends="struts-default" namespace="/demo2">
		<action name="demo2_*" class="com.yiidian.action.Demo2Action" method="{1}">
			<result>/succ.jsp</result>
		</action>
	</package>
	
	<!-- 方式三:动态方法调用的访问方式 -->
	<package name="demo3" extends="struts-default" namespace="/demo3">
		<action name="demo3" class="com.yiidian.action.Demo3Action">
			<result>/succ.jsp</result>
		</action>
	</package>
</struts>

Action的访问路径:

执行save方法:http://localhost:8080/ch01_03_struts2_invoke/demo3/demo3!save.action

执行delete方法:http://localhost:8080/ch01_03_struts2_invoke/demo3/demo3!delete.action

优缺点分析

优点:配置简单

缺点:不安全,因为只要项目开启动态方法调用,所有Action的方法都会对外暴露,不推荐使用!

 

源码下载:https://pan.baidu.com/s/1zwhhTlC4C3HF0GbojsIUFw

热门文章

优秀文章