`

Struts2之Action详解2

 
阅读更多

 

关于 Struts2 请求的扩展名问题

 

1). org.apache.struts2 包下的 default.properties 中配置了 Struts2 应用个的一些常量

2). struts.action.extension 定义了当前 Struts2 应用可以接受的请求的扩展名.

3). 可以在 struts.xml 文件中以常量配置的方式修改 default.properties 所配置的常量.

<constant name="struts.action.extension" value="action,do,"></constant>

 

ActionSupport

 

1). ActionSupport 是默认的 Action 类: 若某个 action 节点没有配置 class 属性, 则 ActionSupport 即为

待执行的 Action 类. 而 execute 方法即为要默认执行的 action 方法

<action name="testActionSupport">

<result>/testActionSupport.jsp</result>

</action>

 

等同于

 

<action name="testActionSupport"

class="com.opensymphony.xwork2.ActionSupport"

method="execute">

<result>/testActionSupport.jsp</result>

</action>

 

2). 在手工完成字段验证, 显示错误消息, 国际化等情况下, 推荐继承 ActionSupport. 

 

 

result

 

1). result 是 action 节点的子节点

2). result 代表 action 方法执行后, 可能去的一个目的地

3). 一个 action 节点可以配置多个 result 子节点. 

4). result 的 name 属性值对应着 action 方法可能有的一个返回值. 

 

<result name="index">/index.jsp</result>

 

5). result 一共有 2 个属性, 还有一个是 type: 表示结果的响应类型

6). result 的 type 属性值在 struts-default 包的 result-types 节点的 name 属性中定义.

         常用的有 

    > dispatcher(默认的): 转发. 同 Servlet 中的转发. 

    > redirect: 重定向

    > redirectAction: 重定向到一个 Action

    注意: 通过 redirect 的响应类型也可以便捷的实现 redirectAction 的功能!

   

    <result name="index" type="redirectAction">

<param name="actionName">testAction</param>

<param name="namespace">/atguigu</param>

</result>

 

OR

 

<result name="index" type="redirect">/atguigu/testAction.do</result>

   

    > chain: 转发到一个 Action

    注意: 不能通过 type=dispatcher 的方式转发到一个 Action

   

         只能是:

         

    <result name="test" type="chain">

<param name="actionName">testAction</param>

<param name="namespace">/atguigu</param>

</result>

 

不能是:

 

<result name="test">/atguigu/testAction.do</result>

 

示例

 

1. 添加 JSP页面

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>result的type属性</title>
</head>
<body>
    
    <a href="resultType.action?type=dispatcher">默认dispatcher</a><br/><br/>
    
    <a href="resultType.action?type=redirect">redirect: 重定向</a><br/><br/>
    
    <a href="resultType.action?type=redirectAction">redirectAction重定向到一个 Action</a><br/><br/>
    
    <a href="resultType.action?type=redirect-redirectAction">redirect实现redirectAction</a><br/><br/>
    
    <a href="resultType.action?type=chain">chain:转发到一个 Action</a><br/><br/>
    
    <a href="resultType.action?type=dispatcher-chain">不能通过 type=dispatcher的方式转发到一个 Action</a><br/><br/>
    
</body>
</html>

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>result的type属性</title>
</head>
<body>
     
    <h1>获取请求数据</h1>
    
    actionName: ${requestScope.actionName }<br/>
    newActionName: ${requestScope.newActionName }<br/>
    
    <hr/>
    <a href="/org.rabbitx.web.struts2.action/resultType/index.jsp" style="float:right;">返回首页</a>
</body>
</html>

 

 2. 添加Action

 

package org.rabbitx.web.struts2.result.action;

import java.util.Map;

import org.apache.struts2.interceptor.ParameterAware;
import org.apache.struts2.interceptor.RequestAware;

import com.opensymphony.xwork2.ActionSupport;

public class ResultTypeAction extends ActionSupport implements ParameterAware,RequestAware{

	private static final long serialVersionUID = 1L;

	private Map<String, String[]> parameters;
	
	private Map<String, Object> request;
	
	@Override
	public String execute() throws Exception {
		
		request.put("actionName", "ResultTypeAction");
		
		return parameters.get("type")[0];
	}

	@Override
	public void setParameters(Map<String, String[]> parameters) {
		this.parameters = parameters;
	}
	
	@Override
	public void setRequest(Map<String, Object> request) {
		this.request = request;
	}

}

 

 

package org.rabbitx.web.struts2.result.action;

import java.util.Map;

import org.apache.struts2.interceptor.RequestAware;

public class RedirectTestAction  implements RequestAware{

	private Map<String, Object> request;
	
	public String execute()
	{
		request.put("newActionName", "RedirectTestAction");
		
		System.out.println("--------RedirectTestAction--------");
		
		return "dispatcher";
	}
	
	@Override
	public void setRequest(Map<String, Object> request) {
		this.request = request;
	}
}

 

 3. 配置Action

 

	<package name="result-type" extends="struts-default">
	    
	    <action name="resultType" class="org.rabbitx.web.struts2.result.action.ResultTypeAction">
	    
	        <result name="dispatcher" type="dispatcher">/resultType/viewData.jsp</result>
	        
	        <result name="redirect" type="redirect">/resultType/viewData.jsp</result>
	        
	        <result name="redirectAction" type="redirectAction">
                <param name="actionName">redirectTest</param>
                <param name="namespace">/</param>
            </result>
            
	        <result name="redirect-redirectAction" type="redirect">redirectTest.action</result>
	        
	        <result name="chain" type="chain">
                <param name="actionName">redirectTest</param>
                <param name="namespace">/</param>
            </result>
	        
	        <result name="dispatcher-chain" type="dispatcher">redirectTest.action</result>
	        
	    </action>
	    
	    <action name="redirectTest" class="org.rabbitx.web.struts2.result.action.RedirectTestAction">
	        <result name="dispatcher" type="dispatcher">/resultType/viewData.jsp</result>
	    </action>
	</package>

 

 

 

分享到:
评论

相关推荐

    Struts2的常量详解

    Struts2 的常量详解 Struts2 框架中有许多重要的常量,它们负责控制着 Struts2 的行为和配置。下面我们将对 Struts2 中的一些常量进行详细的解释和分析。 1. struts.configuration struts.configuration 属性指定...

    Struts2之struts2文件上传详解案例struts011

    在这个"Struts2之struts2文件上传详解案例struts011"中,我们将深入探讨如何实现这一功能。 首先,我们需要了解Struts2中的Action类,它是处理用户请求的核心组件。为了支持文件上传,我们需要创建一个继承自`org....

    struts2常用标签详解(实用版)

    ### Struts2常用标签详解(实用版) #### 引言 在Java Web开发领域中,Struts2框架因其丰富的功能及灵活的配置而备受开发者们的青睐。为了更好地掌握Struts2框架并提升开发效率,本文将详细介绍Struts2中常用的...

    Struts2属性文件详解

    ### Struts2属性文件详解 #### struts.configuration 该属性用于指定加载Struts 2配置文件的配置文件管理器,默认值为`org.apache.struts2.config.DefaultConfiguration`,这是Struts 2默认的配置文件管理器。若...

    struts2框架详解

    Struts2框架详解 Struts2是Java Web开发中的一款广泛应用的开源MVC框架,它构建在Apache Struts 1的基础上,提供了更为强大的功能和更好的灵活性。Struts2旨在简化Web应用开发,通过将表现层与业务逻辑层解耦,提高...

    struts2入门实例教程详解

    ### Struts2入门实例教程详解 #### 一、环境搭建与基本配置 在开始学习Struts2框架之前,首先需要确保开发环境的正确搭建。根据提供的文档,所使用的开发工具为MyEclipse6,Web服务器为Tomcat6,Struts版本为...

    struts2深入详解源码1-5章

    本资料包包含的是《Struts2深入详解》一书的源码分析,涵盖了从第一章到第五章的内容,并附带了相关的jar包,方便读者结合理论与实践进行学习。 首先,让我们从第一章开始,Struts2的基础知识。这一章通常会介绍...

    Struts2配置详解

    ### Struts2配置详解 #### 一、总览 在深入了解Struts2的配置细节之前,我们先来简要概述一下Struts2框架的核心特点及其配置文件的基本结构。Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web...

    Struts2之struts2文件下载详解案例struts012

    本案例"Struts2之struts012"将深入探讨如何在Struts2中实现文件下载的功能。 首先,我们需要创建一个Action类,它是Struts2的核心组件,用于处理用户的请求。在Action类中,我们将定义一个方法,该方法负责获取要...

    struts2常量详解

    Struts2是一个流行的Java Web框架,用于构建基于MVC(Model-View-Controller)架构的应用程序。它提供了一种组织和管理应用程序组件的方法,简化了开发过程。本文将深入探讨Struts2中的常量配置,这些常量在框架的...

    struts2 result配置详解

    Struts2 Result 配置详解 Struts2 框架中 Result 配置是一种非常重要的配置,它直接影响着应用程序的执行结果。Result 配置通常用于定义 Action 的执行结果,例如将结果.redirect 到一个新的 URL,或者将结果....

    Struts2开发详解

    Struts2的配置主要在struts.xml文件中进行,包括Action配置、结果类型配置、拦截器配置等。Action配置定义了Action类及其关联的URL,结果类型配置决定了Action执行后的跳转逻辑,拦截器配置则允许在Action执行前后...

    struts2常用标签详解

    以上只是Struts2标签库中的一部分,实际上还有许多其他标签,如`s:include`、`s:actionerror`、`s:label`等,它们共同构成了Struts2强大的表现层工具。熟练掌握这些标签,能够帮助开发者更高效地构建动态、交互性强...

    struts2标签用法详解

    1. Action标签:用于执行一个Struts2 Action,如`s:action`。 2. Result标签:用于在Action执行后显示结果页面,如`s:result`。 3. Form标签:用于创建表单,如`s:form`。 4. Field标签:用于处理表单字段,如`s:...

    struts2标签库详解(非常不错)

    这个“Struts2标签库详解(非常不错)”的资源应该包含了对Struts2所有标签的详细介绍,以及相关的API文档。 Struts2标签库的核心在于提供了一种声明式编程的方式,使得开发者可以更专注于业务逻辑,而不是繁琐的JSP...

    Struts1与Struts2原理 区别详解汇总

    ### Struts1与Struts2原理及区别详解 #### Struts1原理概述 **Struts1** 是一种基于MVC架构的开源Java Web框架,它主要用于构建动态网站和应用程序。Struts1的核心组件包括ActionServlet、ActionForm以及Action...

    Struts2中Struts.xml配置文件详解

    "Struts2 中 Struts.xml 配置文件详解" Struts2 中的 Struts.xml 配置文件是 Struts2 框架的核心配置文件,用于定义应用程序的行为和结构。在 Struts.xml 文件中,我们可以定义 package、action、interceptor、...

Global site tag (gtag.js) - Google Analytics