Struts上路_05-动态方法

1.使用叹号动态调用方法:

1)请求路径:

!叹号后面跟的是method-Action类的方法名,而不是return返回值-resultname 

<br>
	<a href="${pageContext.request.contextPath}/pkgBook/ActionBook!addBook.action">ActionBook ! addBook.action</a><br>
	<a href="${pageContext.request.contextPath}/pkgBook/ActionBook!delBook.action">ActionBook ! delBook.action</a><br>
<br>


2struts.xml配置:

<struts>
	<package name="pkgBook" namespace="/pkgBook" extends="struts-default">
	
  <!-- 此版本2.3.15.2默认关闭动态方法。true开启 -->
		<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>

		<!-- 动态方法,不配置method属性;配置多个result应对不同的路径 -->
		<action name="ActionBook" class="cn.cvu.action.ActionBook">

  		<!-- name=方法的返回值 -->
			<result name="add">/book.jsp</result>
			<result name="del">/default.jsp</result>
		</action>
		
	</package>
</struts>


3Action类:

package cn.cvu.action;

import com.opensymphony.xwork2.ActionSupport;

public class ActionBook extends ActionSupport {
	public String execute(){
		System.out.println("ActionBook ... ");
		return "success";
	}

	//此方法名 即访问路径中 !后面的action 
	public String addBook() {
		System.out.println("ActionBook add book ... ");
		return "add";	//返回值对应<result name="add">
	}
	
	public String delBook() {
		System.out.println("ActionBook delete book ... ");
		return "del";
	}
}


4)测试:

Struts上路_05-动态方法

Struts上路_05-动态方法


2.全局访问success页面的配置:

<action>中没有配置局部<result>时,如果配置了<global-results>,则默认访问后者的全局配置。

1)访问路径:

<br>
	<a href="${pageContext.request.contextPath}/pkgBook/ActionBook_find.action">ActionBook_findBook.action</a><br>
<br>


2struts.xml配置:

<struts>
	<package name="pkgBook" namespace="/pkgBook" extends="struts-default">
		
		<!-- 全局的success访问页面,即默认页面 -->
		<global-results>
			<result name="success">/global-success.jsp</result>
		</global-results>

		<action name="ActionBook_find" class="cn.cvu.action.ActionBook" method="findBook">
			<!-- 如果没有单独配置success页面,将访问默认页面 -->
			<!-- <result name="success">/success.jsp</result> -->
		</action>
		
	</package>
</struts>


3Action类:

package cn.cvu.action;

import com.opensymphony.xwork2.ActionSupport;

public class ActionBook extends ActionSupport {
	public String execute(){...}
	public String addBook() {...}
	public String delBook() {...}
	
	public String findBook() {
		System.out.println("ActionBook find book ... ");
		return "success";	//这里必须返回success才可以使用全局默认页面
	}
}


4)测试:

Struts上路_05-动态方法

Struts上路_05-动态方法

5)全局结果类型和局部结果类型对比:

作用范围

全局结果类型作用于整个package

局部结果类型作用于单个action。 

优先级别

局部结果类型优先于全局结果类型。

配置整个项目可用的全局结果类型

在struts.xml中单独配置一个package,在其中配置全局结果类型;在其它的模块struts配置文件里继承这个包。

- end

你可能感兴趣的:(mvc,struts,struts2,javaweb,Webwork)