- 浏览: 229997 次
- 性别:
- 来自: 武汉
最新评论
-
spp_1987:
org.springframework.beans.facto ...
Hibernate4之多对多双向关联 -
spp_1987:
后台保存订单下面 有很多订单 调了 对应什么方法 实现的?
Hibernate4之多对多双向关联 -
spp_1987:
订单 和 商品之间 有中间表存在吗???
Hibernate4之多对多双向关联 -
spp_1987:
跟 官方 hibernate4.2.5提供 的 manytom ...
Hibernate4之JPA规范配置详解 -
zhuguopei_java:
谢谢。楼主你这是解释源码吗
Struts2中action接收参数的三种方法及ModelDriven和Preparable接口结合JAVA反射机制的灵活用法
struts2.3.4的Predefined Result Types,比struts2.2.3要多出一种:
Chain Used for Action Chaining
Dispatcher Used for web resource integration, including JSP integration
FreeMarker Used for FreeMarker integration
HttpHeader Used to control special HTTP behaviors
Redirect Used to redirect to another URL (web resource)
RedirectAction Used to redirect to another action mapping
Stream Used to stream an InputStream back to the browser(usually for file downloads)
Velocity Used for Velocity integration
XSL Used for XML/XSLT integration
PlainText Used to display the raw content of a particular page(i.e jsp, HTML)
Tiles Used to provide Tiles integration
文档中对这些Result Types是这样定义的:
1.chain
这个结果调用其他action,完成它自己定义的拦截器堆栈和结果。只能请求action,如果请求视图资源会报错。需要注意的就是与redirect的区别,请求转发是还在当前请求,而redirect会响应一次浏览器然后浏览器再根据响应请求重定向的资源,注意看url的变化就明白了!
2.redirectAction
重定向至Action,完成与它自己的拦截器堆栈和结果。相对于redirect来说,redirectAction只能请求action,如果请求视图资源会报错,然后还有个小区别就是redirectAction会为url添加.action后缀而redirect不会,但是两者都可以通过url传参
3.redirect
让客户端请求另外的网络资源,可以为action,也可以为视图资源。
文档上是这么解释的:
调用{ @link HttpServletResponse # sendRedirect(String)sendRedirect }方法到指定的地址。 响应是告诉重定向浏览器到指定的地址(一个新的请求从客户端)。这样做的结果意味着action(action instance, action errors, field errors等)只是执行失败,不再可用。这是因为action是一个单线程模式(single-thread model)。唯一的传参方法是通过会话或用OGNL表达式,url参数(url ?名称=值)。
4.dispatcher(缺省值,如果没有配置类型默认就是dispatcher)
包括或转发到一个视图(通常是一个jsp)。在后台Struts2将使用一个RequestDispatcher,目标servlet/JSP接收相同的request/response对象作为原始的servlet或JSP。 因此,可以使用request.setAttribute()传递数据- - - Struts的action是可用的。如果请求action会找不到资源。
5.httpheader
可以通过设置HTTP headers和status的值来发送错误信息给客户端。
他的参数有这些:
status - the http servlet response status code that should be set on a response.
parse - true by default. If set to false, the headers param will not be parsed for Ognl expressions.
headers - header values.
error - the http servlet response error code that should be set on a response.
errorMessage - error message to be set on response if 'error' is set.
6.stream
这个返回类型主要用作下载文件或者在浏览器上显示PDF等文档
他的参数有这些:
contentType - the stream mime-type as sent to the web browser (default = text/plain).
contentLength - the stream length in bytes (the browser displays a progress bar).
contentDisposition - the content disposition header value for specifing the file name (default = inline, values are typically attachment;filename="document.pdf".
inputName - the name of the InputStream property from the chained action (default = inputStream).
bufferSize - the size of the buffer to copy from input to output (default = 1024).
allowCaching if set to 'false' it will set the headers 'Pragma' and 'Cache-Control' to 'no-cahce', and prevent client from caching the content. (default = true)
contentCharSet if set to a string, ';charset=value' will be added to the content-type header, where value is the string set. If set to an expression, the result of evaluating the expression will be used. If not set, then no charset will be set on the header
此处给一个显示PDF文档示例:
web.xml:
struts.xml:
7.plainText
响应以plain形式返回给客户端,相当于response.setContentType("text/plain; charset="+charSet);
8.velocity
使用Servlet容器的JspFactory,这个结果模拟一个JSP执行环境,然后显示一个Velocity模板,将直接传输到Servlet输出。
9.freemarker
呈现一个视图使用Freemarker模板引擎。。
10.xslt
调用一个xslt文件并解析执行。
11.tiles
Tiles是一个模板框架被设计来轻松地允许创建web应用程序的页面具有一致的外观和感觉。它可以用于页面和组件化装饰。
特性:支持在Freemarker,JSP,Velocity使用Tiles
Chain Used for Action Chaining
Dispatcher Used for web resource integration, including JSP integration
FreeMarker Used for FreeMarker integration
HttpHeader Used to control special HTTP behaviors
Redirect Used to redirect to another URL (web resource)
RedirectAction Used to redirect to another action mapping
Stream Used to stream an InputStream back to the browser(usually for file downloads)
Velocity Used for Velocity integration
XSL Used for XML/XSLT integration
PlainText Used to display the raw content of a particular page(i.e jsp, HTML)
Tiles Used to provide Tiles integration
文档中对这些Result Types是这样定义的:
1.chain
这个结果调用其他action,完成它自己定义的拦截器堆栈和结果。只能请求action,如果请求视图资源会报错。需要注意的就是与redirect的区别,请求转发是还在当前请求,而redirect会响应一次浏览器然后浏览器再根据响应请求重定向的资源,注意看url的变化就明白了!
<package name="public" extends="struts-default"> <!-- Chain creatAccount to login, using the default parameter --> <action name="createAccount" class="..."> <result type="chain">login</result> </action> <action name="login" class="..."> <!-- Chain to another namespace --> <result type="chain"> <param name="actionName">dashboard</param> <param name="namespace">/secure</param> </result> </action> </package> <package name="secure" extends="struts-default" namespace="/secure"> <action name="dashboard" class="..."> <result>dashboard.jsp</result> </action> </package>
2.redirectAction
重定向至Action,完成与它自己的拦截器堆栈和结果。相对于redirect来说,redirectAction只能请求action,如果请求视图资源会报错,然后还有个小区别就是redirectAction会为url添加.action后缀而redirect不会,但是两者都可以通过url传参
<package name="passingRequestParameters" extends="struts-default" namespace="/passingRequestParameters"> <!-- Pass parameters (reportType, width and height) --> <!-- The redirectAction url generated will be : /genReport/generateReport.action?reportType=pie&width=100&height=100#summary --> <action name="gatherReportInfo" class="..."> <result name="showReportResult" type="redirectAction"> <param name="actionName">generateReport</param> <param name="namespace">/genReport</param> <param name="reportType">pie</param> <param name="width">100</param> <param name="height">100</param> <param name="empty"></param> <param name="suppressEmptyParameters">true</param> <param name="anchor">summary</param> </result> </action> </package>
3.redirect
让客户端请求另外的网络资源,可以为action,也可以为视图资源。
文档上是这么解释的:
调用{ @link HttpServletResponse # sendRedirect(String)sendRedirect }方法到指定的地址。 响应是告诉重定向浏览器到指定的地址(一个新的请求从客户端)。这样做的结果意味着action(action instance, action errors, field errors等)只是执行失败,不再可用。这是因为action是一个单线程模式(single-thread model)。唯一的传参方法是通过会话或用OGNL表达式,url参数(url ?名称=值)。
<package name="passingRequestParameters" extends="struts-default" namespace="/passingRequestParameters"> <-- Pass parameters (reportType, width and height) --> <!-- The redirect-action url generated will be : /genReport/generateReport.jsp?reportType=pie&width=100&height=100#summary --> <action name="gatherReportInfo" class="..."> <result name="showReportResult" type="redirect"> <param name="location">generateReport.jsp</param> <param name="namespace">/genReport</param> <param name="reportType">pie</param> <param name="width">100</param> <param name="height">100</param> <param name="anchor">summary</param> </result> </action> </package>
4.dispatcher(缺省值,如果没有配置类型默认就是dispatcher)
包括或转发到一个视图(通常是一个jsp)。在后台Struts2将使用一个RequestDispatcher,目标servlet/JSP接收相同的request/response对象作为原始的servlet或JSP。 因此,可以使用request.setAttribute()传递数据- - - Struts的action是可用的。如果请求action会找不到资源。
<result name="success" type="dispatcher"> <param name="location">foo.jsp</param> </result>
5.httpheader
可以通过设置HTTP headers和status的值来发送错误信息给客户端。
他的参数有这些:
status - the http servlet response status code that should be set on a response.
parse - true by default. If set to false, the headers param will not be parsed for Ognl expressions.
headers - header values.
error - the http servlet response error code that should be set on a response.
errorMessage - error message to be set on response if 'error' is set.
<result name="success" type="httpheader"> <param name="status">204</param> <param name="headers.a">a custom header value</param> <param name="headers.b">another custom header value</param> </result> <result name="proxyRequired" type="httpheader"> <param name="error">305</param> <param name="errorMessage">this action must be accessed through a prozy</param> </result>
6.stream
这个返回类型主要用作下载文件或者在浏览器上显示PDF等文档
他的参数有这些:
contentType - the stream mime-type as sent to the web browser (default = text/plain).
contentLength - the stream length in bytes (the browser displays a progress bar).
contentDisposition - the content disposition header value for specifing the file name (default = inline, values are typically attachment;filename="document.pdf".
inputName - the name of the InputStream property from the chained action (default = inputStream).
bufferSize - the size of the buffer to copy from input to output (default = 1024).
allowCaching if set to 'false' it will set the headers 'Pragma' and 'Cache-Control' to 'no-cahce', and prevent client from caching the content. (default = true)
contentCharSet if set to a string, ';charset=value' will be added to the content-type header, where value is the string set. If set to an expression, the result of evaluating the expression will be used. If not set, then no charset will be set on the header
<result name="success" type="stream"> <param name="contentType">image/jpeg</param> <param name="inputName">imageStream</param> <param name="contentDisposition">attachment;filename="document.pdf"</param> <param name="bufferSize">1024</param> </result>
此处给一个显示PDF文档示例:
web.xml:
<mime-mapping> <extension>pdf</extension> <mime-type>application/pdf</mime-type> </mime-mapping>
struts.xml:
<action name="test" class="com.iss.action.TestAction"> <result name="success" type="stream"> <param name="contentType">application/pdf</param> <param name="inputName">inputStream</param> <param name="contentDisposition">filename="a.pdf"</param> </result> </action>
7.plainText
响应以plain形式返回给客户端,相当于response.setContentType("text/plain; charset="+charSet);
<action name="displayJspRawContent" > <result type="plainText">/myJspFile.jsp</result> </action> <action name="displayJspRawContent" > <result type="plainText"> <param name="location">/myJspFile.jsp</param> <param name="charSet">UTF-8</param> </result> </action>
8.velocity
使用Servlet容器的JspFactory,这个结果模拟一个JSP执行环境,然后显示一个Velocity模板,将直接传输到Servlet输出。
<result name="success" type="velocity"> <param name="location">foo.vm</param> </result>
9.freemarker
呈现一个视图使用Freemarker模板引擎。。
<result name="success" type="freemarker">foo.ftl</result>
10.xslt
调用一个xslt文件并解析执行。
<result name="success" type="xslt"> <param name="location">foo.xslt</param> <param name="matchingPattern">^/result/[^/*]$</param> <param name="excludingPattern">.*(hugeCollection).*</param> </result>
11.tiles
Tiles是一个模板框架被设计来轻松地允许创建web应用程序的页面具有一致的外观和感觉。它可以用于页面和组件化装饰。
特性:支持在Freemarker,JSP,Velocity使用Tiles
..... <result-types> <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/> </result-types> ..... <action name="sample" class="org.apache.struts2.tiles.example.SampleAction" > <result name="success" type="tiles">tilesWorks</result> </action>
<listener> <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class> </listener>
<dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-tiles-plugin</artifactId> <version>${version.tiles}</version> <scope>compile</scope> </dependency>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %> <%@ taglib prefix="s" uri="/struts-tags" %> <%-- Show usage; Used in Header --%> <tiles:importAttribute name="title" scope="request"/> <html> <head><title><tiles:getAsString name="title"/></title></head> <body> <tiles:insertAttribute name="header"/> <p id="body"> <tiles:insertAttribute name="body"/> </p> <p>Notice that this is a layout made in JSP</p> </body> </html>
发表评论
-
Struts2远程执行漏洞
2013-01-25 22:44 2074Struts2转码有个bug,可以导致应用挂掉(也可以执行类似 ... -
Struts2整合之动态图表OpenFlashChart
2012-07-06 15:56 2830Java开源项目中制作图表 ... -
Struts2整合之CKeditor和CKfinder
2012-07-11 17:29 3298先从官网上下载好最新的CKeditor和CKfinder包之后 ... -
Struts2之上传下载和页面渲染图片功能
2012-07-06 15:18 1798Struts2的上传下载是整合了commons-fileupl ... -
Struts2常用的数据标签
2012-06-30 16:24 1438<s:property /> <s:pr ... -
Struts2常用的集合控制标签
2012-06-30 15:56 2004<s:iterator/>迭代器标签 迭代器标签被 ... -
Struts2标签之token防止表单重复提交
2012-06-29 16:57 2088Struts2的token标签防止表单重复提交的思路是这样的: ... -
Struts2常用的UI标签
2012-06-29 17:03 1762<s:textfield />标签的label属性 ... -
Struts2中OGNL、ActionContext和值栈及线程安全浅析
2012-06-27 17:35 3143值栈(ValueStack) Struts2将OGNL ... -
Struts2之OGNL表达式中#,$,%的用法区别
2012-06-25 22:57 2564struts2 井号,星号,百分号 “#”主要有三种用途: 1 ... -
Struts2精萃之interceptor
2012-06-25 01:00 1908下面这段话能完美诠释拦截器的含义: 拦截器是AOP中的概念, ... -
Struts2的服务器端的四种输入校验方式
2012-06-24 16:34 2668Struts2的服务器端验证框架有四种方式校验,一种是利用do ... -
Struts2的客户端校验方式及自带的13种校验器
2012-06-24 16:22 2610如果要使用Struts2的验证框架,首先要开启这个拦截器。在 ... -
Struts2之国际化i18N配置
2012-06-23 19:19 3275在struts2中需要做国际化的有: jsp页面的国际化,a ... -
Struts2之Web应用中文乱码问题的6种解决方法
2012-06-23 17:29 1560在web应用中通常用下面几种方法解决中文问题: 1.HTM ... -
Struts2配置精要之struts.xml( global和default的配置)
2012-06-23 16:48 5048下面这个struts.xml囊括了所有可能用到的标签用法,例如 ... -
Struts2配置精要之常量constant配置详解(包括零配置Convention 的常量)
2012-06-18 02:30 4183这是目前为止收集的stru ... -
Struts2配置精要之defaultStack与paramsPrepareParamsStack
2012-06-17 17:56 4256在Struts2.3.4的struts-default.xml ... -
Struts2中action接收参数的三种方法及ModelDriven和Preparable接口结合JAVA反射机制的灵活用法
2012-06-17 00:48 4754Struts2中Action接收参数的方法主要有以下三种: ... -
Struts2原理浅析
2012-06-16 16:12 2138JavaEE把MVC设计模式引入 ...
相关推荐
6. **Interceptor**: 拦截器是Struts2的核心特性之一,允许在Action执行前后插入自定义逻辑,如日志记录、权限验证等。 7. **ValueStack**: 用于存储Action的属性和OGNL表达式,便于在视图层和控制器之间传递数据。...
5. **配置(Configuration)**:Struts2的配置分为XML配置和注解配置,包括struts.xml、package、action、result等元素,以及@Action、@Results等注解。这些配置定义了请求的映射、Action的属性和结果的处理。 6. *...
2. **配置文件**:Struts 2的配置主要分为两个部分,分别是struts.xml和web.xml。struts.xml用于配置Action、结果类型、拦截器等,而web.xml则用于部署描述符,配置过滤器以启动Struts 2框架。 3. **拦截器...
本文将深入探讨Struts2中的常量配置,包括基本的XML配置以及零配置的Convention模式下的常量设定。 首先,让我们了解Struts2框架中的常量配置。这些常量定义在`struts-default.xml`和`struts-plugin.xml`等配置文件...
Struts2 Result 配置详解 Struts2 框架中 Result 配置是一种非常重要的配置,它直接影响着应用程序的执行结果。Result 配置通常用于定义 Action 的执行结果,例如将结果.redirect 到一个新的 URL,或者将结果....
3. **配置管理**:Struts2使用XML或者注解进行配置,定义Action、结果类型、拦截器栈等,使得应用的结构清晰明了。 4. **结果类型(Result Types)**:预定义的结果类型,如dispatcher(用于转发到JSP页面)、...
Struts2.3.4-all 是一个集合了Struts2框架所有组件的压缩包,它包含Struts2框架的核心库、插件以及其他相关的资源文件。Struts2是一个基于MVC(Model-View-Controller)设计模式的开源Java Web框架,用于简化Java EE...
Struts2.3.4 API中文版是针对Java Web开发框架Struts2的3.4版本的官方API文档的中文翻译版本。这个框架是Apache软件基金会下的一个项目,旨在提供一个用于构建MVC(Model-View-Controller)架构的、灵活的、可扩展的...
2.3.4是Struts2的一个版本,该版本可能包含了对之前版本的一些改进、修复了已知的漏洞,并且提供了更稳定的功能。 在描述中提到的"struts2 2.3.4源文件最新版本",意味着这个压缩包包含了Struts2框架的源代码,这...
在Struts2中,`struts.xml`是核心配置文件,它定义了应用的架构,包括动作映射、结果类型、拦截器和全局配置等。这篇博客主要探讨的是`struts.xml`中的`global`和`default`配置。 1. **全局配置(Global ...
9. **测试支持**:Struts 2 集成了测试工具,如 Struts2 TestNG 插件,便于进行单元测试和集成测试。 10. **安全考虑**:虽然Struts 2 提供了许多强大的功能,但也需要注意安全问题,例如 Struts 2 过去曾曝出过...
4. **使用方法**:将这些jar包导入到项目的类路径中,然后根据Struts2的配置文件(通常为struts.xml)来设置Action、Result和Interceptor。Action是处理用户请求的业务逻辑,Result定义了请求处理后的结果页面或动作...
4. **结果类型(Result Types)**:Struts2支持多种结果类型,如dispatcher(重定向或转发到JSP页面)、stream(用于文件下载)和freemarker(用于FreeMarker模板引擎)等。 5. **模型-视图-控制器(MVC)**:...
### Struts2配置文件介绍 #### 一、Struts2的核心配置文件 在Struts2框架中,有多个重要的配置文件用于控制应用的行为与结构,其中最核心的是`struts.xml`文件。此外还包括`web.xml`、`struts.properties`、`...
这个"struts-2.3.4-all.zip"压缩包包含了Struts2框架的2.3.4版本的完整资源,包括源码、示例以及所需的库文件。下面我们将深入探讨Struts2框架及其在2.3.4版本中的关键知识点。 1. **Struts2框架基础**: Struts2...
### Struts2配置详解 #### 一、总览 在深入了解Struts2的配置细节之前,我们先来简要概述一下Struts2框架的核心特点及其配置文件的基本结构。Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web...
Struts2-Spring-Plugin-2.3.4.jar 是一个专门为 Struts 2 框架和 Spring 框架整合而设计的插件,主要用于处理 Struts 2 和 Spring 之间的集成问题。在Java Web开发中,这两个框架经常一起使用,Spring 提供了依赖...
Struts2的2.3.4版本是其历史上的一个重要里程碑,包含了众多的改进和修复,为开发者提供了稳定和高效的工作环境。 首先,让我们深入理解Struts2的核心概念。Struts2框架的核心组件包括Action、Result、Interceptor...
本文将深入探讨Struts2配置文件的核心概念及其在实际开发中的应用。 **一、Struts2配置文件概述** 在Struts2中,配置文件主要分为两个部分:`struts-default.xml`和用户自定义的配置文件,如`struts.xml`或`struts-...