Strust2中的几种视图转发类型:
1. dispatcher:服务器端跳转到页面,通常来处理JSP,默认类型。
2. redirect:客户端(浏览器)重定向到页面,下面举个例子说明一下redirect视图转发,需要注意的是,由于是浏览器进行重定向,所以要把重定向的页面放在WebContent下面,否则无法访问
下面是struts.xml配置文件:
<package name="struts" namespace="/test" extends="struts-default"> <action name="redirect" class="com.struts.action.RedirectAction" method="execute"> <result name="success" type="redirect">/redirect.jsp?message=${message }</result> </action> </package>
下面是RedirectAction:
package com.struts.action; public class RedirectAction { private String message; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public String execute() { this.message = "This is a redirect test"; return "success"; } }
下面是需要重定向的redirect.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>redirect视图转发</title> </head> <body> message : ${param.message } </body> </html>
部署项目到服务器,在地址栏中输入http://localhost:8080/strutsdemo/test/redirect
则redirect.jsp显示message : This is a redirect test
浏览器地址栏变化结果:http://localhost:8080/strutsdemo/redirect.jsp?message=This%20is%20a%20redirect%20test
注:可用el表达式获取action中的属性值
3. redirectAction:服务器端跳转到指定的action,下面举个例子说明一下redirectAction视图的转发
下面是struts.xml配置文件:
<package name="struts" namespace="/test" extends="struts-default"> <action name="testAction" class="com.struts.action.RedirectActionAction" method="execute"> <result name="success" type="dispatcher">/WEB-INF/pages/redirectAction.jsp?message=${message }</result> </action> <action name="redirectAction"> <result name="success" type="redirectAction">testAction</result> </action> </package>
下面是RedirectActionAction:
package com.struts.action; public class RedirectActionAction { private String message; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public String execute() { this.message = "This is a redirectAction test"; return "success"; } }
下面是需要重定向的redirectAction.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>redirectAction视图转发</title> </head> <body> message : ${param.message } </body> </html>
部署项目到服务器,在地址栏中输入http://localhost:8080/strutsdemo/test/redirectAction
则redirect.jsp显示message : This is a redirectAction test
浏览器地址栏变化结果:http://localhost:8080/strutsdemo/test/testAction.action
以上是重定向到同一命名空间下的action的情况,如果要重定向到不同命名空间下的action则Struts.xml的配置为:
<struts> <package name="struts" namespace="/test" extends="struts-default"> <action name="testAction" class="com.struts.action.RedirectActionAction" method="execute"> <result name="success" type="dispatcher">/WEB-INF/pages/redirectAction.jsp?message=${message }</result> </action> </package> <package name="other" namespace="/test2" extends="struts-default"> <action name="redirectAction"> <result name="success" type="redirectAction"> <param name="namespace">/test</param> <param name="actionName">testAction</param> </result> </action> </package> </struts>
演示实例步骤参考上面,测试结果是一样的
4. plainText:用于显示原始文件内容
配置文件:
<action name="plainText" class="com.struts.action.PlainTextAction" method="execute"> <result name="success" type="plainText">/WEB-INF/pages/plainText.jsp</result> </action>
下面是PlainTextAction:
package com.struts.action; public class PlainTextAction { public String execute() { return "success"; } }
下面是plainText.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>plainText视图转发</title> </head> <body> <%= new Date(); %> </body> </html>
测试结果:如plainText.jsp
要解决中文乱码问题action如下配置:
<action name="plainText"> <result type="plainText"> <param name="location">/WEB-INF/pages/plainText.jsp</param> <param name="charSet">UTF-8</param> </result> </action>
5. 配置公用视图:
配置文件:
<struts> <package name="global" namespace="/global" extends="struts-default"> <global-results> <result name="success">/WEB-INF/pages/global.jsp</result> </global-results> </package> <package name="struts" namespace="/test" extends="global"> <action name="globalResultAction" class="com.struts.action.GlobalResultAction" method="execute"> <param name="namespace">/global</param> </action> </package> </struts>
从配置可以看出,配置文件中的package也像我们java中的包一样,可以继承
GlobalResultAction:
package com.struts.action; public class GlobalResultAction { private String message; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public String execute() { this.message = "This is a globalResult test"; return "success"; } }
global.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>globalResult视图</title> </head> <body> message : ${message } </body> </html>
在浏览器地址栏输入:http://localhost:8080/strutsdemo/test/globalResultAction
页面显示:message : This is a globalResult test
相关推荐
这个压缩包“struts2-showcase.rar”包含了完整的源代码,旨在帮助开发者深入理解Struts2框架的工作原理及其各种特性。以下是对Struts2和Struts2-showcase的详细解释: **Struts2框架** Struts2是一个基于MVC...
Struts2的配置主要在struts.xml文件中进行,这里定义了Action的映射、结果类型、拦截器栈等。开发者可以通过XML或注解方式来配置Action,使应用更加灵活。 **4. 拦截器(Interceptors)** 拦截器是Struts2的一大...
5. **结果类型(Result Types)**:`org.apache.struts2.dispatcher.mapper`包中的`ResultMapper`接口及其实现类,定义了如何根据Action的结果名映射到实际的视图资源,比如JSP页面或FreeMarker模板。 6. **插件...
esult配置的各种视图转发类型esult配置的各种视图转发类型esult配置的各种视图转发类型
在下载并使用Struts2-2.5.13的jar包时,开发者需要将其加入到项目的类路径中,同时根据项目需求配置struts2.xml或使用注解进行配置。对于初次使用者,建议阅读官方文档,了解如何初始化Struts2框架,以及如何编写...
在实际开发中,使用Struts2 2.5.22时,开发者需要了解Action、Result、Interceptor的基本概念,以及如何编写Action类、配置Struts.xml文件,还要掌握OGNL的使用来绑定数据。同时,为了提高安全性和性能,还需要关注...
Struts2允许开发者自定义Action和Result类型,以适应不同的业务需求。 2. **拦截器(Interceptor)**:这是Struts2的一个强大特性,它可以拦截Action调用前后,实现事务管理、日志记录、权限验证等功能。通过配置...
7. **Plug-in架构**: Struts2的插件机制允许扩展其功能,如添加新的拦截器、结果类型等。 在`struts2-core-2.3.7`版本中,我们可以看到以下几个关键组件: 1. **StrutsPrepareAndExecuteFilter**: 这是Struts2的...
Struts2是一个强大的Java web应用程序框架,它基于MVC(模型-视图-控制器)设计模式,用于构建可维护性和可扩展性高的企业级应用。Struts2的标签库是其核心特性之一,极大地简化了视图层的开发,提高了开发效率。本...
- **配置文件**:通常有struts.xml或类似的配置文件,用于定义Action、结果类型、拦截器栈等。 4. **使用步骤**: - 引入必要的JAR包,包括struts2-core.jar、json-lib-2.1.jar和struts2-json-plugin-2.1.8.1.jar...
2. **配置文件**:主要指`struts.xml`,这是Struts2的核心配置文件,用于定义Action、Action的映射路径、Interceptor链以及Result类型等。 3. **Interceptor**:Struts2允许开发者自定义Interceptor,实现特定的...
`struts2-core-2.2.1`源码可以帮助开发者查看和学习Struts2的核心代码,理解其内部机制,如Action、Interceptor、Result等概念,以及它们如何协同工作以实现HTTP请求的处理和视图的渲染。 API文档是框架的重要组成...
Struts2是一个非常流行的Java Web开发框架,它提供了一种模型-视图-控制器(MVC)架构,帮助开发者构建可维护、结构清晰的Web应用。Sitemesh则是一个页面布局和装饰框架,用于统一网站的外观和感觉,增强页面的...
- `struts2-core.jar`: 这是Struts2的核心库,包含了Action、Result、Interceptor等核心类,以及配置解析器和ActionContext等。它是处理HTTP请求、执行业务逻辑和渲染视图的核心。 2. **插件支持** - `struts2-...
Struts2 JSON Plugin是Apache Struts框架的一个重要插件,主要功能是使Struts2能够无缝地处理JSON(JavaScript Object Notation)数据。这个插件极大地增强了Struts2应用程序的可交互性和响应速度,尤其在开发Web...
- **Result类型**:定义了Action执行后的处理方式,如转发、重定向、渲染视图等。 - **配置文件**:`struts.xml`是Struts2的核心配置文件,定义了Action、Interceptor、Result等元素。 - **插件系统**:Struts2支持...
XWork则是Struts2的基础框架,提供了一系列底层功能支持,如类型转换、拦截器机制等。 标题提到的"struts2-core-2.3.32"和"xwork-core-2.3.32"是Struts2框架的重要组成部分。"struts2-core-2.3.32.jar"包含了Struts...
Struts2是一个非常著名的Java ...开发者可以利用Struts2的Action、Interceptor、Result等机制,结合Apache Commons库和FreeMarker模板引擎,轻松地管理业务逻辑、处理用户输入、呈现视图,从而提高开发效率和应用质量。
4. **配置管理(Configuration Manager)**:Struts2的配置管理器负责读取配置文件(如struts.xml),并将配置信息加载到内存中。这部分代码主要位于`com.opensymphony.xwork2.config`包下,包括`Configuration`接口...