关于 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 中的一些常量进行详细的解释和分析。 1. struts.configuration struts.configuration 属性指定...
在这个"Struts2之struts2文件上传详解案例struts011"中,我们将深入探讨如何实现这一功能。 首先,我们需要了解Struts2中的Action类,它是处理用户请求的核心组件。为了支持文件上传,我们需要创建一个继承自`org....
### Struts2常用标签详解(实用版) #### 引言 在Java Web开发领域中,Struts2框架因其丰富的功能及灵活的配置而备受开发者们的青睐。为了更好地掌握Struts2框架并提升开发效率,本文将详细介绍Struts2中常用的...
### Struts2属性文件详解 #### struts.configuration 该属性用于指定加载Struts 2配置文件的配置文件管理器,默认值为`org.apache.struts2.config.DefaultConfiguration`,这是Struts 2默认的配置文件管理器。若...
Struts2框架详解 Struts2是Java Web开发中的一款广泛应用的开源MVC框架,它构建在Apache Struts 1的基础上,提供了更为强大的功能和更好的灵活性。Struts2旨在简化Web应用开发,通过将表现层与业务逻辑层解耦,提高...
### Struts2入门实例教程详解 #### 一、环境搭建与基本配置 在开始学习Struts2框架之前,首先需要确保开发环境的正确搭建。根据提供的文档,所使用的开发工具为MyEclipse6,Web服务器为Tomcat6,Struts版本为...
本资料包包含的是《Struts2深入详解》一书的源码分析,涵盖了从第一章到第五章的内容,并附带了相关的jar包,方便读者结合理论与实践进行学习。 首先,让我们从第一章开始,Struts2的基础知识。这一章通常会介绍...
### Struts2配置详解 #### 一、总览 在深入了解Struts2的配置细节之前,我们先来简要概述一下Struts2框架的核心特点及其配置文件的基本结构。Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web...
本案例"Struts2之struts012"将深入探讨如何在Struts2中实现文件下载的功能。 首先,我们需要创建一个Action类,它是Struts2的核心组件,用于处理用户的请求。在Action类中,我们将定义一个方法,该方法负责获取要...
Struts2是一个流行的Java Web框架,用于构建基于MVC(Model-View-Controller)架构的应用程序。它提供了一种组织和管理应用程序组件的方法,简化了开发过程。本文将深入探讨Struts2中的常量配置,这些常量在框架的...
Struts2 Result 配置详解 Struts2 框架中 Result 配置是一种非常重要的配置,它直接影响着应用程序的执行结果。Result 配置通常用于定义 Action 的执行结果,例如将结果.redirect 到一个新的 URL,或者将结果....
Struts2的配置主要在struts.xml文件中进行,包括Action配置、结果类型配置、拦截器配置等。Action配置定义了Action类及其关联的URL,结果类型配置决定了Action执行后的跳转逻辑,拦截器配置则允许在Action执行前后...
以上只是Struts2标签库中的一部分,实际上还有许多其他标签,如`s:include`、`s:actionerror`、`s:label`等,它们共同构成了Struts2强大的表现层工具。熟练掌握这些标签,能够帮助开发者更高效地构建动态、交互性强...
1. Action标签:用于执行一个Struts2 Action,如`s:action`。 2. Result标签:用于在Action执行后显示结果页面,如`s:result`。 3. Form标签:用于创建表单,如`s:form`。 4. Field标签:用于处理表单字段,如`s:...
这个“Struts2标签库详解(非常不错)”的资源应该包含了对Struts2所有标签的详细介绍,以及相关的API文档。 Struts2标签库的核心在于提供了一种声明式编程的方式,使得开发者可以更专注于业务逻辑,而不是繁琐的JSP...
### Struts1与Struts2原理及区别详解 #### Struts1原理概述 **Struts1** 是一种基于MVC架构的开源Java Web框架,它主要用于构建动态网站和应用程序。Struts1的核心组件包括ActionServlet、ActionForm以及Action...
"Struts2 中 Struts.xml 配置文件详解" Struts2 中的 Struts.xml 配置文件是 Struts2 框架的核心配置文件,用于定义应用程序的行为和结构。在 Struts.xml 文件中,我们可以定义 package、action、interceptor、...