Struts2ActionResult文档格式.docx
- 文档编号:22565768
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:28
- 大小:273.79KB
Struts2ActionResult文档格式.docx
《Struts2ActionResult文档格式.docx》由会员分享,可在线阅读,更多相关《Struts2ActionResult文档格式.docx(28页珍藏版)》请在冰豆网上搜索。
具有代表性的有Struts2(WebWork)、Tapestry、SpringMVC等等。
其中,最优秀的当然就是我们即将学习的Struts2了。
3.Strtuts2出现
由于前面提到的Struts1的缺点,使得它越来越无法满足开发人员灵活、多变的开发需求,同时开发效率低下也暴露无遗,很多开发人员开始选择其他更优秀的Web框架。
Struts1的开发团队注意到了这个问题,他们也决定要大力改进,或是合并其他优秀的框架。
这个时候WebWork进入了Struts1开发团队的视野,WebWork设计思想先进,功能强大,但是市场占有率并不理想,因此,两个框架决定合并,就得到了现在的Struts2。
事实上Struts2是在WebWork2的基础上进行开发的,Struts2.0实际就是WebWork2.3,它并没有Struts1的血统。
Struts2既拥有WebWork优良的设计和功能,又拥有Struts1的强大品牌号召力,所以在面世之初就引起了web开发者广泛的兴趣。
经过几年的普及,越来越多的新项目都采用了Struts2,而Struts1基本上就是用来维护历史项目了。
作为web开发人员,Struts2几乎是一个必备的框架,其重要性不言而喻了。
4.Struts2是什么
Struts2是一种基于MVC的轻量级的web应用框架。
•所谓框架:
就是能完成一定功能的半成品软件。
在没有框架的时候,所有的工作都要乖乖的从零做起;
但是,有了框架,它为我们提供了一定的功能,就可以在框架的基础上做起了,大大提高开发的效率和质量。
•web应用框架,这说明Struts2的应用范围是Web应用而不是其它地方。
换句话说Struts2更注重将Web应用领域的日常工作和常见问题抽象化,为我们提供一个平台,让我们能基于这个平台快速的完成Web应用开发。
•轻量级:
是相对于重量级而言,指的是Struts2在运行的时候,对Web服务器的资源消耗较少,比如CPU、内存等,但是运行速度相对较快。
•基于MVC,说明基于Struts2开发的Web应用自然就能实现MVC,同时也说明Struts2着力于在MVC的各个部分为我们的开发提供相应帮助。
所以称Struts2为一种基于MVC的轻量级的web应用框架。
5.组成部分
WebWork与Struts合并之后,根据功能的细分和设计,拆分出一个叫xwork的部分,用来处理与Web无关的部分,也就是与Servlet无关的部分,比如:
用户数据的类型转换、动作调用之前的数据验证、动作的调用等等。
其余与Web相关的部分,也就是与servlet相关的部分,被称为struts2部分。
因此请注意,此处的“Struts2”可以理解为一个模块,是Struts2框架的一部分,如:
如何接收用户请求的数据,如何跳转到下一个页面等等。
其中struts2部分调用了xwork部分,但是xwork部分是不依赖于Struts2部分的,xwork是完全独立的、纯Java的应用。
6.能做什么
在了解了Struts2是什么和基本有什么过后,一起来看看Struts2究竟可以做什么。
看看Struts2到底有些什么魔法功能,能让我们的Web开发变得更加轻松愉快呢?
•Struts2通过简单、集中的配置来调度动作类,使得我们配置和修改都非常容易。
•Struts2提供简单、统一的表达式语言来访问所有可供访问的数据。
•Struts2提供内存式的数据中心,所有可供访问的数据都集中存放在内存中,所以在调用中不需要将数据传来传去,大家都去这个内存数据中心访问即可。
•Struts2提供在动作类执行的前或后附加执行一定功能的能力,能实现AOP。
•Struts2提供标准的、强大的验证框架和国际化框架,而且与Struts2的其他特性紧密结合。
类似这样的功能很多,不胜枚举。
在Struts2官方文档的首页上,Struts2开发团队列出了Struts2的一些优势,一起来看看:
•简单的建立-直接拷入自带的空项目(struts-blank.war)的各种配置即可。
•改进的设计-代码不直接依赖各种HTTP(如HttpServletRequest)的API。
这样可以使得单元测试简单、高效。
•强大的标签-使用标签可以有效的减少页面代码。
•良好的ajax支持-增加了有效的、灵活的ajax标签,就像普通的标准struts标签一样。
•简单的spring集成-使用spring注入Action依赖的其他bean,而不需要额外的代码。
•强大的结果-除了简单的JSP或Freemarker等标签,还支持JasperReports,JFreeChart和文件下载等,使得这些技术就像在Struts2中内置一样,而不需要其他结合代码。
•POJO(不实现特殊接口或继承特殊父类的普通对象)的forms-不再有struts1的ActionForm。
任何JavaBean都可以用来向Action传入或传出request的参数,甚至二进制的OutputStream等也可以。
•POJO的Actions-Action也不用实现特定的接口或继承特殊的类了。
甚至可以使我们的Action不经过修改,就可以被其他框架重用。
•简单的插件-简单的放入一个jar包,任何人都可以扩展struts2框架,而不需要什么特殊的配置。
Struts2不再是一个封闭的框架,任何人都可以为其添砖加瓦,我们可以通过实现Struts2的某些特殊的可扩展点,比如自定义拦截器、自定义结果类型、自定义标签等等,就可以为Struts2定制我们需要的
功能,而且还可以快速的发布给别人使用,就像Eclipse的插件机制一样,超酷。
•明确的错误报告-Struts2的异常简单而明了,直接指出错误的地方。
•简单的Action测试-不需要模拟HTTP对象就可以直接测试struts2的action。
这使得我们的单元测试非常方便。
•智能的默认-跳过了冗余的设置。
很多框架级对象都有一个默认的值,可以根本不用去关心它们,使用其默认设置就可以完成95%的日常工作。
7.MVC回顾:
在MVC模式中,一个应用被划分成了模型(Model)、视图(View)和控制器(Controller)三个部分。
首先看一下模型、视图、控制器各部分的作用
模型(Model):
负责封装应用的状态,并实现应用的功能。
通常又分为数据模型和业务逻辑模型,数据模型用来存放业务数据,比如订单
信息、用户信息等;
而业务逻辑模型包含应用的业务操作,比如订单的添加或者修改等。
视图(View):
用来将模型的内容展现给用户,用户可以通过视图来请求模型进行更新。
视图从模型获得要展示的数据,然后用自己的方
式展现给用户,相当于提供界面来与用户进行人机交互;
用户在界面上操作或者填写完成后,会点击提交按钮或是以其它触发事件的方式,
来向控制器发出请求。
控制器(Controller):
用来控制应用程序的流程和处理视图所发出的请求。
当控制器接收到用户的请求后,会将用户的数据和模型的更新
相映射,也就是调用模型来实现用户请求的功能;
然后控制器会选择用于响应的视图,把模型更新后的数据展示给用户。
实战开始
1.动手
第一课先写案例,再讲解原理。
外部环境的搭建,体会如何利用框架来自主学习过程。
1.下载安装jdk,配置环境变量(非常基础):
主要配置JAVA_HOME和path,参考以前的课程内容
2.下载并安装MyEclipe(Eclipse)
3.下载并解压(或者安装)Tomcat,在MyEclipse中配置tomcat。
(推荐6.0以上版本的tomcat)
4.下载Struts2(本教程以Struts2.3.16为例),解压并观察了解其目录
src目录中是Struts2的源代码
lib目录中是Struts2的jar包和struts2依赖的jar包。
docs目录中是Struts2的官方文档,虽然是英文的,但是很多最新最准确的知识都能从这个官方文档里得到。
apps目录中有5个war文件,是Struts2的官方示例,里面是完整的可以运行的web应用。
5.新建WebProject,建立Struts2的配置文件(struts.xml):
将Struts2的空项目(apps)中的配置文件(struts.xml)复制到项目的src目录下。
配置如下:
<
!
—
struts.devMode:
是否设置为开发模式 true:
是开发模式,否则不是注:
在开发模式下,修改Struts的配置文件后不需要重新启动Tomcat服务器即生效。
否则修改Struts配置文件后需要重新启动Tomcat服务器才生效。
-->
constantname="
struts.devMode"
value="
true"
/>
<
packagename="
default"
namespace="
/"
extends="
struts-default"
>
actionname="
hello"
result>
/hello.jsp
/result>
/action>
/package>
常见常量:
?
xmlversion="
1.0"
encoding="
UTF-8"
DOCTYPEstrutsPUBLIC"
-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"
"
http:
//struts.apache.org/dtds/struts-2.0.dtd"
struts>
--指定Web应用的默认编码集.该属性对于处理中文请求参数非常有用,对于获取中文请求参数值,应该将该属性值设置为GBK或者GB2312;
提示:
当设置该参数为GBK时,相当于调用HttpServletRequest的setCharacterEncoding方法.>
struts.i18n.encoding"
--指定Struts2默认的ObjectFactoryBean,该属性默认值是spring.>
struts.objectFactory"
spring"
--指定Spring框架的自动装配模式,该属性的默认值是name,即默认根据Bean的name属性自动装配.>
struts.objectFactory.spring.autoWire"
name"
--该属性指定整合Spring框架时,是否缓存Bean实例,该属性只允许使用true和false两个属性值,它的默认值是true.通常不建议修改该属性值.>
struts.objectFactory.spring.useClassCache"
--该属性指定处理multipart/form-data的MIME类型(文件上传)请求的框架,该属性支持cos,pell和jakarta等属性值,即分别对应使用cos的文件上传框架,pell上传及common-fileupload文件上传框架.该属性的默认值为jakarta.
注意:
如果需要使用cos或者pell的文件上传方式,则应该将对应的JAR文件复制到Web应用中.例如,使用cos上传方式,则需要自己下载cos框架的JAR文件,并将该文件放在WEB-INF/lib路径下.>
struts.multipart.parser"
jakarta"
--该属性指定上传文件的临时保存路径,该属性的默认值是javax.servlet.context.tempdir.>
struts.multipart.saveDir"
"
--该属性指定Struts2文件上传中整个请求内容允许的最大字节数.>
struts.multipart.maxSize"
1000000000000"
--该属性指定需要Struts2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts2处理.如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开.>
struts.action.extension"
do"
--该属性设置是否通过JAR文件提供静态内容服务,该属性只支持true和false属性值,该属性的默认属性值是true.>
struts.serve.static"
--该属性设置浏览器是否缓存静态内容.当应用处于开发阶段时,我们希望每次请求都获得服务器的最新响应,则可设置该属性为false.>
struts.serve.static.browserCache"
--该属性设置Struts2应用是否使用开发模式.如果设置该属性为true,则可以在应用出错时显示更多、更友好的出错提示.该属性只接受true和flase两个值,该属性的默认值是false.通常,应用在开发阶段,将该属性设置为true,当进入产品发布阶段后,则该属性设置为false.>
false"
--该属性设置是否每次HTTP请求到达时,系统都重新加载资源文件(允许国际化文件重载).该属性默认值是false.在开发阶段将该属性设置为true会更有利于开发,但在产品发布阶段应将该属性设置为false.
开发阶段将该属性设置了true,将可以在每次请求时都重新加载国际化资源文件,从而可以让开发者看到实时开发效果;
产品发布阶段应该将该属性设置为false,是为了提供响应性能,每次请求都需要重新加载资源文件会大大降低应用的性能.>
struts.i18n.reload"
--该属性指定视图标签默认的视图主题,该属性的默认值是xhtml.>
struts.ui.theme"
simple"
--该属性指定模板文件的后缀,该属性的默认属性值是ftl.该属性还允许使用ftl、vm或jsp,分别对应FreeMarker、Velocity和JSP模板.>
struts.ui.templateSuffix"
ftl"
--该属性设置当struts.xml文件改变后,系统是否自动重新加载该文件.该属性的默认值是false.>
struts.configuration.xml.reload"
--该属性指定Struts2应用所需要的国际化资源文件,如果有多份国际化资源文件,则多个资源文件的文件名以英文逗号(,)隔开.>
struts.custom.i18n.resources"
nationz"
--对于某些JavaEE服务器,不支持HttpServletRequest调用getParameterMap()方法,此时可以设置该属性值为true来解决该问题.该属性的默认值是false.对于WebLogic、Orion和OC4J服务器,通常应该设置该属性为true.>
struts.dispatcher.parametersWorkaround"
--指定是否缓存FreeMarker模版。
默认值false。
struts.freemarker.templatesCache"
--该属性只支持true和false两个属性值,默认值是true.通常无需修改该属性值.>
struts.freemarker.wrapper.altMap"
--该属性指定XSLTResult是否使用样式表缓存.当应用处于开发阶段时,该属性通常被设置为true;
当应用处于产品使用阶段时,该属性通常被设置为false.>
struts.xslt.nocache"
--该属性指定Struts2框架默认加载的配置文件,如果需要指定默认加载多个配置文件,则多个配置文件的文件名之间以英文逗号(,)隔开.该属性的默认值为struts-default.xml,struts-plugin.xml,struts.xml,看到该属性值,所以应该明白为什么Struts2框架默认加载struts.xml文件了.>
struts.configuration.files"
struts-default.xml,struts-plugin.xml"
--设置映射器是否总是选择完整的名称空间。
该属性的默认值时false。
struts.mapper.alwaysSelectFullNamespace"
--设置Convention插件定位视图资源的根路径。
默认值为/WEB-INF/content>
struts.convention.result.path"
/WEB-INF/content/"
--Convention插件以该常量指定包作为根包>
struts.convention.action.package"
--是否从包中搜索Action>
struts.convention.action.disableScanning"
/>
--官方只说明在jboss下需要设置,情况不明-->
struts.convention.exclude.parentClassLoader"
struts.convention.action.fileProtocols"
jar,zip"
--包括哪些jar包中的action。
逗号分割字符串。
struts.convention.action.includeJars"
.*?
/_wl_cls_gen.*?
jar(!
/)?
--确定搜索包的路径。
只要是结尾为action的包都要搜索。
struts.convention.package.locators"
action"
/struts>
3、复制Struts2相应的jar包及第三方包。
将空项目(apps\struts2-blank)中lib目录中的除junit和spring-test之外的所有文件复制到项目的WebRoot/WEB-INF/lib目录下
4、修改对应的web.xml,建立struts2的filter(参考struts自带的项目apps\struts2-blank),添加如下配置:
filter>
filter-name>
struts2<
/filter-name>
filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter<
/filter-class>
/filter>
filter-mapping>
url-pattern>
/*<
/url-pattern>
/filter-mapping>
6、在浏览器中对配置好的struts2第一个程序进行访问;
访问方式为:
●http:
//localhost:
8080/工程名/命名空间/action名字
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Struts2ActionResult