没有合适的资源?快使用搜索试试~ 我知道了~
首页Struts2入门教程:迈向优秀Web框架
Struts2入门教程:迈向优秀Web框架
需积分: 10 0 下载量 105 浏览量
更新于2024-07-25
收藏 2.93MB PDF 举报
Struts2入门教程是一份面向Struts2框架的学习指南,该教程主要针对的是对Struts2感兴趣的初学者。Struts2并非全新的概念,而是由Webwork的设计理念和Struts1的优点融合而成,体现了Struts1与Webwork的结合。Struts2因其高效性和易用性,吸引了越来越多的开发者和用户,被视为一个优秀的Web开发框架。 对于想要快速掌握Struts2基础知识的学习者,这份教程是一个理想的选择,因为它注重实用性,帮助读者在短时间内获取框架的核心理解。教程作者分享了自己的学习经验和心得,强调了健康的关注和实践的重要性,提醒读者在学习过程中夯实JavaWeb基础,特别是与JSF的对比学习,这对于深入理解Struts2至关重要。 作者特别推荐了三本书籍,包括《JSF编程》、《JavaWeb整合》以及《精通JSF》,这些书籍都提供了详细的案例,有助于读者通过实践加深理论知识。教程鼓励读者积极参与讨论,不断更新和完善内容,以便获取最新的技术资讯。此外,教程还提供多种获取方式,如加入QQ群、订阅博客等,以便及时获取资料的更新。 在整个学习过程中,读者需要注意的是,虽然教程内容丰富,但如果想要达到精通Struts2的程度,可能需要进一步深入研究和实践,因为书中提到的高级内容可能不适用于仅追求基础理解的学习者。同时,作者也表达了对版权问题的尊重,欢迎大家指出并纠正错误,共同提高教程质量。
资源详情
资源推荐
制作日期:2009-2-28 struts2 系列教程
3.1 struts2 的体系结构
Struts2 的工作机制
从图可以看出,一个请求在 Struts2 框架中的处理大概分为以下几个步骤:
1、客户端初始化一个指向 Servlet 容器(例如 Tomcat)的请求;
2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做 ActionContextCleanUp 的
可选过滤器,这个过滤器对于 Struts2 和其他框架的集成很有帮助,例如:SiteMesh Plugin);
3、接着 FilterDispatcher 被调用,FilterDispatcher 询问 ActionMapper 来决定这个请求是否需
要调用某个 Action;
4 、 如 果 ActionMapper 决 定 需 要 调 用 某 个 Action , FilterDispatcher 把 请 求 的 处 理 交 给
ActionProxy;
5、ActionProxy 通过 Configuration Manager 询问框架的配置文件,找到需要调用的 Action 类;
6、ActionProxy 创建一个 ActionInvocation 的实例。
7、ActionInvocation 实例使用命名模式来调用,在调用 Action 的过程前后,涉及到相关拦截器
(Intercepter)的调用。
8、一旦 Action 执行完毕,ActionInvocation 负责根据 struts.xml 中的配置找到对应的返回结果。
返回结果通常是(但不总是,也可能是另外的一个 Action 链)一个需要被表示的 JSP 或者 FreeMarker
的模版。在表示的过程中可以使用 Struts2 框架中继承的标签。在这个过程中需要涉及到 ActionMapper。
大漠孤烟@2008 QQ:53983038 QQ 群:76434335
Page 16 of 162
制作日期:2009-2-28 struts2 系列教程
大漠孤烟@2008 QQ:53983038 QQ 群:76434335
Page 17 of 162
3.2 struts2 配置文件
Struts2 相关的配置文件有 web.xml,struts.xml,struts.properties,
struts-default.xml,velocity.properties,struts-default.vm。其中 web.xml,struts.xml 是
必须的,其它的配置文件可选择。它们在 web 应用中的功能如下:
web.xml:包含所有必须的框架组件的 web 部署描述符。
Struts.xml:配置包含 result/view 类型、action 映射、拦截器等的 Struts2 的主要配置文件。
Struts.properties:配置 struts2 的框架属性。
Struts-default.xml:在文件在 struts-action-x.x.jar 中,该文件是应该被包含在 struts.xml
中的缺省配置。
Welocity.properties:重写了 velocity 的配置文件。
Struts-default.vm:相对于 velocity 的缺省配置。
struts.properties 配置文件
struts.properties 文件是一个标准的 Properties 文件,该文件包含了系列的 key-value 对象,每个
key 就是一个 Struts 2 属性,该 key 对应的 value 就是一个 Struts 2 属性值.
struts.properties 文件通常放在 Web 应用的 WEB-INF/classes 路径下. 实际上, 只要将该文件放
在 Web 应用的 CLASSPATH 路径下, Struts 2 框架就可以加载该文件.
struts.properties 配置文件提供了一种改变框架默认行为的机制. 一般来讲我们没必要修改这个
文件,除非你想拥有一个更加友好的开发调试环境。struts.properties 文件中所包含的所有属性都可
以在 web.xml 配置文件中使用"init-param"标签进行配置,或者在 struts.xml 文件中使用“constant”
标签进行配置.
可以被修改的属性允许改变 Freemarker 选项--改变“action-mapping”类、决定是否允许 XML
配置文件重载及确定默认用户接口主题等行为。
一个名为“default.properties”的属性文件包含在“Struts2-Core”JAR 文件中。你可以在你项
目源文件路径的根目录下创建一个名为“struts.properties”的文件,来对某个属性进行修改。这样
你就可以增加你想要修改的属性。新的属性值将会覆盖默认值。
以下为 struts.properties 中定义的 Struts 2 属性:
struts.configuration
该属性指定加载 Struts 2 配置文件的配置文件管理器.该属性的默认值是
org.apache.Struts2.config.DefaultConfiguration, 这是 Struts 2 默认的配置文件管理器.如果需要
实现自己的配置管理器,开发者则可以实现一个实现 Configuration 接口的类,该类可以自己加载 Struts
2 配置文件.
struts.locale 指定 Web 应用的默认 Locale.
struts.i18n.encoding
指定 Web 应用的默认编码集.该属性对于处理中文请求参数非常有用,对于获取中文请求参数值,应
该将该属性值设置为 GBK 或者 GB2312;当设置该参数为 GBK 时,相当于调用 HttpServletRequest 的
setCharacterEncoding 方法.
struts.objectFactory 指定 Struts 2 默认的 ObjectFactory Bean,该属性默认值是 spring.
struts.objectFactory.spring.autoWire
指定 Spring 框架的自动装配模式, 该属性的默认值是 name, 即默认根据 Bean 的 name 属性自动装
配.
struts.objectFactory.spring.useClassCache
该属性指定整合 Spring 框架时,是否缓存 Bean 实例,该属性只允许使用 true 和 false 两个属性值,
制作日期:2009-2-28 struts2 系列教程
大漠孤烟@2008 QQ:53983038 QQ 群:76434335
Page 18 of 162
它的默认值是 true.通常不建议修改该属性值.
struts.objectTypeDeterminer 该属性指定 Struts 2 的类型检测机制,支持 tiger 和 notiger两个
属性值.
struts.multipart.parser
该属性指定处理 multipart/form-data 的 MIME 类型(文件上传)请求的框架,该属性支持 cos,pell
和 jakarta 等属性值, 即分别对应使用 cos 的文件上传框架,pell 上传及 common-fileupload 文件上传
框架.该属性的默认值为 jakarta.
注意:如果需要使用 cos 或者 pell 的文件上传方式,则应该将对应的 JAR 文件复制到 Web 应用中.例
如,使用 cos 上传方式,则需要自己下载 cos 框架的 JAR 文件,并将该文件放在 WEB-INF/lib 路径下.
struts.multipart.saveDir
该属性指定上传文件的临时保存路径,该属性的默认值是 javax.servlet.context.tempdir.
struts.multipart.maxSize 该属性指定 Struts 2 文件上传中整个请求内容允许的最大字节数.
struts.custom.properties
该属性指定 Struts 2 应用加载用户自定义的属性文件,该自定义属性文件指定的属性不会覆盖
struts.properties 文件中指定的属性.如果需要加载多个自定义属性文件,多个自定义属性文件的文件
名以英文逗号(,)隔开.
struts.mapper.class
指定将 HTTP 请求映射到指定 Action 的映射器,Struts 2 提 供 了 默 认 的 映 射 器 :
org.apache.struts2.dispatcher.mapper.DefaultActionMapper.默认映射器根据请求的前缀与 Action
的 name 属性完成映射.
struts.action.extension
该属性指定需要 Struts 2 处理的请求后缀,该属性的默认值是 action,即所有匹配*.action 的请求
都由 Struts 2 处理.如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开.
struts.serve.static
该属性设置是否通过 JAR 文件提供静态内容服务,该属性只支持 true 和 false 属性值,该属性的默
认属性值是 true.
struts.serve.static.browserCache
该属性设置浏览器是否缓存静态内容.当应用处于开发阶段时,我们希望每次请求都获得服务器的
最新响应,则可设置该属性为 false.
struts.enable.DynamicMethodInvocation
该属性设置 Struts 2 是否支持动态方法调用,该属性的默认值是 true.如果需要关闭动态方法调用,
则可设置该属性为 false.
struts.enable.SlashesInActionNames
该属性设置 Struts 2 是否允许在 Action 名中使用斜线,该属性的默认值是 false.如果开发者希望
允许在 Action 名中使用斜线,则可设置该属性为 true.
struts.tag.altSyntax
该属性指定是否允许在 Struts 2 标签中使用表达式语法,因为通常都需要在标签中使用表达式语法,
故此属性应该设置为 true,该属性的默认值是 true.
struts.devMode
该属性设置 Struts 2 应用是否使用开发模式.如果设置该属性为 true,则可以在应用出错时显示更
多、更友好的出错提示.该属性只接受 true 和 flase 两个值,该属性的默认值是 false.通常,应用在开发
阶段,将该属性设置为 true,当进入产品发布阶段后,则该属性设置为 false.
struts.i18n.reload
该属性设置是否每次 HTTP 请求到达时,系统都重新加载资源文件(允许国际化文件重载).该属性默
制作日期:2009-2-28 struts2 系列教程
大漠孤烟@2008 QQ:53983038 QQ 群:76434335
Page 19 of 162
认值是 false.在开发阶段将该属性设置为 true 会更有利于开发,但在产品发布阶段应将该属性设置为
false.
提示:开发阶段将该属性设置了 true,将可以在每次请求时都重新加载国际化资源文件,从而可以让
开发者看到实时开发效果;产品发布阶段应该将该属性设置为 false,是为了提供响应性能,每次请求都
需要重新加载资源文件会大大降低应用的性能.
struts.ui.theme 该属性指定视图标签默认的视图主题,该属性的默认值是 xhtml.
struts.ui.templateDir
该属性指定视图主题所需要模板文件的位置, 该属性的默认值是 template,即默认加载 template 路
径下的模板文件.
struts.ui.templateSuffix
该属性指定模板文件的后缀,该属性的默认属性值是 ftl.该属性还允许使用 ftl、vm 或 jsp,分别对
应 FreeMarker、Velocity 和 JSP 模板.
struts.configuration.xml.reload
该属性设置当 struts.xml 文件改变后,系统是否自动重新加载该文件.该属性的默认值是 false.
struts.velocity.configfile
该属性指定 Velocity 框架所需的 velocity.properties 文件的位置.该属性的默认值为
velocity.properties.
struts.velocity.contexts
该属性指定 Velocity 框架的 Context 位置,如果该框架有多个 Context,则多个 Context 之间以英文
逗号(,)隔开.
struts.velocity.toolboxlocation 该属性指定 Velocity 框架的 toolbox 的位置.
struts.url.http.port
该属性指定 Web 应用所在的监听端口.该属性通常没有太大的用户,只是当 Struts 2 需要生成 URL
时(例如 Url 标签),该属性才提供 Web 应用的默认端口.
struts.url.https.port
该属性类似于 struts.url.http.port 属性的作用,区别是该属性指定的是 Web 应用的加密服务端
口.
struts.url.includeParams
该属性指定 Struts 2 生成 URL 时是否包含请求参数.该属性接受 none、get 和 all 三个属性值,分
别对应于不包含、仅包含 GET 类型请求参数和包含全部请求参数.
struts.custom.i18n.resources
该属性指定 Struts 2 应用所需要的国际化资源文件,如果有多份国际化资源文件,则多个资源文件
的文件名以英文逗号(,)隔开.
struts.diSPAtcher.parametersWorkaround
对于某些 Java EE 服务器,不支持 HttpServlet Request 调用 getParameterMap()方法,此时可以设
置该属性值为 true 来解决该问题.该属性的默认值是 false.对于 WebLogic、Orion 和 OC4J 服务器,通常
应该设置该属性为 true.
struts.freemarker.manager.classname
该属性指定 Struts 2 使用的 FreeMarker 管理器.该属性的默认值是
org.apache.struts2.views.freemarker.FreemarkerManager,这是 Struts 2 内建的 FreeMarker 管理器.
struts.freemarker.wrapper.altMap
该属性只支持 true 和 false 两个属性值,默认值是 true.通常无需修改该属性值.
struts.xslt.nocache
该属性指定 XSLT Result 是否使用样式表缓存.当应用处于开发阶段时,该属性通常被设置为 true;
当应用处于产品使用阶段时,该属性通常被设置为 false.
制作日期:2009-2-28 struts2 系列教程
大漠孤烟@2008 QQ:53983038 QQ 群:76434335
Page 20 of 162
struts.configuration.files
该属性指定 Struts 2 框架默认加载的配置文件,如果需要指定默认加载多个配置文件,则多个配置
文件的文件名之间以英文逗号(,)隔开.该属性的默认值为
struts-default.xml,struts-plugin.xml,struts.xml,看到该属性值,所以应该明白为什么 Struts 2 框
架默认加载 struts.xml 文件了.
struts.xml 常用配置解析
struts.xml 文件主要负责管理应用中的 Action 映射,以及该 Action 包含的 Result 定义等。
struts.xml 内容主要包括:Action、Interceptor、Packages 和 Namespace 等,下面将会详细介绍如何
配置这些元素。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="demo" extends="struts-default">
<action name="submit" class="org.xmh.demo.MoreSubmitAction">
<result name="save">/result.jsp</result>
<result name="print">/result.jsp</result>
</action>
</package>
</struts>
1、使用<include>标签重用配置文件
在 Struts2 中提供了一个默认的 struts.xml 文件,但如果 package、action、interceptors 等配
置比较多时,都放到一个 struts.xml 文件不太容易维护。因此,就需要将 struts.xml 文件分成多个配
置文件,然后在 struts.xml 文件中使用<include>标签引用这些配置文件。这样做的优点如下:
结构更清晰,更容易维护配置信息。
配置文件可以复用。如果在多个 Web 程序中都使用类似或相同的配置文件,那么可以使用
<include>标签来引用这些配置文件,这样可以减少工作量。
假设有一个配置文件,文件名为 newstruts.xml,代码如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="demo" extends="struts-default" >
<action name="submit" class="action.MoreSubmitAction">
<result name="save" >
/result.jsp
</result>
<result name="print">
/result.jsp
</result>
</action>
</package>
</struts>
则 struts.xml 引用 newstruts.xml 文件的代码如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
剩余161页未读,继续阅读
pengwei594120
- 粉丝: 0
- 资源: 45
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- JSP+SSM科研管理系统响应式网站设计案例
- 推荐一款超级好用的嵌入式串口调试工具
- PHP域名多维查询平台:高效精准的域名搜索工具
- Citypersons目标检测数据集:Yolo格式下载指南
- 掌握MySQL面试必备:程序员面试题解析集锦
- C++软件开发培训:核心技术资料深度解读
- SmartSoftHelp二维码工具:生成与解析条形码
- Android Spinner控件自定义字体大小的方法
- Ubuntu Server on Orangepi3 LTS 官方镜像发布
- CP2102 USB驱动程序的安装与更新指南
- ST-link固件升级指南:轻松更新程序步骤
- Java实现的质量管理系统Demo功能分析与操作
- Everything高效文件搜索工具:快速精确定位文件
- 基于B/S架构的酒店预订系统开发实践
- RF_Setting(E22-E90(SL)) V1.0中性版功能解析
- 高效转换M3U8到MP4:免费下载工具发布
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功