新手可以看看,高手可以跳过……

  最近在学习struts2这个框架,自己也动手写过一些DTD文件,所以很好struts2这个DTD文件是怎么写的,接下来就一个一个的分析

根元素是struts,然后又4个子节点 ,分别是package,bean,include,constant

----------------------------------------------------package-----------------------------------------------------

看下package的属性: 
name:可以随便取,可以被其他package继承,字符串类型。这个是必填的。注意后面的#REQUIRED。 
extends:按照我的实验和google的说法,这个很重要,继承struts-defalut.xml的一些东西,而在struts-default.xml中包含了基础的拦截器配置信息。继承了这个,我们就可以直接使用里面的拦截器啦。 
namespace:命名空间,struts2以命名空间来管理action,同一个命名空间里面不能有相同名的action。有点类似Java包。

package下面的子元素有很多,这里我只简略的说几个:

action这个子元素,配置action就是让Struts容器知道action的存在,并且能调用该action来处理用户请求,应该说action是struts2的基本程序单位: 
原理:在这里我们要理解action只是一个控制器,按照MVC的架构他属于C,所以需要配置M与V的映射给ACTION。 
我们知道action是package的子元素,所以struts是通过包来组织action的。很类似于我们平时写Java程序,因为我们的类也是通过包来组织的。 
先看下action的定义:

action的重要属性和子元素: 
属性name :必填,而且在同一个包下唯一,字符串 
属性class:指定action类 
子元素result,: 
这个元素非常简单,只有2个属性,分别是name和type 
type配置了转发类型,常用的类型有dispatcher(默认),redirect,redirectAction,plainText。分别是转发、重定向、防止重复提交的重定向、显示原始文件内容,当我们需要显示源码时可以使用。

ps:在package中有个子元素叫做global-results,这个是定义全局result的。当我们平凡使用一个相同的视图时,可以考虑使用该元素。

----------------------------------------------------include--------------------------------------------------------

接下来是include:

这个元素虽然只有一个file属性,但是我想以我们现在的项目规模以及为了以后的维护和扩展,这个一定要用。 
一旦package、action、interceptors等配置比较多时,都放到一个struts.xml文件不太容易维护。因此,就需要将struts.xml文件分成多个配置文件,然后在struts.xml文件中使用<include>标签引用这些配置文件。

----------------------------------------------------bean--------------------------------------------------------

这个目前没有用到,等以后更清楚了再来修改,就不误导大家了!

----------------------------------------------------constant--------------------------------------------------------

constant元素:

  1. <!ELEMENT constant (#PCDATA)>
  2. <!ATTLIST constant
  3. name CDATA #REQUIRED
  4. value CDATA #REQUIRED
  5. >

配置Struts2的常量属性,struts容器会读取这些配置来改变struts的运行。具体如下(Copy自网上):

    1. <!-- 指定Web应用的默认编码集,相当于调用HttpServletRequest的setCharacterEncoding方法 -->
    2. <constant name="struts.i18n.encoding" value="UTF-8" />
    3. <!--
    4. 该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts 2处理。
    5. 如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。
    6. -->
    7. <constant name="struts.action.extension" value="do" />
    8. <!-- 设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭 -->
    9. <constant name="struts.serve.static.browserCache " value="false" />
    10. <!-- 当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开 -->
    11. <constant name="struts.configuration.xml.reload" value="true" />
    12. <!-- 开发模式下使用,这样可以打印出更详细的错误信息 -->
    13. <constant name="struts.devMode" value="true" />
    14. <!-- 默认的视图主题 -->
    15. <constant name="struts.ui.theme" value="simple" />
    16. <!-- 该属性指定Struts 2中的action由Spring容器创建  -->
    17. <constant name="struts.objectFactory" value="spring" />
    18. <!-- 指定Web应用的默认编码集,相当于调用HttpServletRequest的setCharacterEncoding方法 -->
    19. <constant name="struts.i18n.encoding" value="UTF-8" />
    20. <!--
    21. 该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts 2处理。
    22. 如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。
    23. -->
    24. <constant name="struts.action.extension" value="do" />
    25. <!-- 设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭 -->
    26. <constant name="struts.serve.static.browserCache " value="false" />
    27. <!-- 当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开 -->
    28. <constant name="struts.configuration.xml.reload" value="true" />
    29. <!-- 开发模式下使用,这样可以打印出更详细的错误信息 -->
    30. <constant name="struts.devMode" value="true" />
    31. <!-- 默认的视图主题 -->
    32. <constant name="struts.ui.theme" value="simple" />
    33. <!-- 该属性指定Struts 2中的action由Spring容器创建  -->
    34. <constant name="struts.objectFactory" value="spring" />
    35. struts.serve.static.browserCache
    36. 该属性设置浏览器是否缓存静态内容。当应用处于开发阶段时,我们希望每次请求都获得服务器的最新响应,则可设置该属性为false。
    37. struts.enable.DynamicMethodInvocation
    38. 该属性设置Struts 2是否支持动态方法调用,该属性的默认值是true。如果需要关闭动态方法调用,则可设置该属性为false。
    39. struts.enable.SlashesInActionNames
    40. 该属性设置Struts 2是否允许在Action名中使用斜线,该属性的默认值是false。如果开发者希望允许在Action名中使用斜线,则可设置该属性为true。
    41. struts.tag.altSyntax
    42. 该属性指定是否允许在Struts 2标签中使用表达式语法,因为通常都需要在标签中使用表达式语法,故此属性应该设置为true,该属性的默认值是true。
    43. struts.devMode
    44. 该属性设置Struts 2应用是否使用开发模式。如果设置该属性为true,则可以在应用出错时显示更多、更友好的出错提示。该属性只接受true和flase两个值,该属性的默认值是false。通常,应用在开发阶段,将该属性设置为true,当进入产品发布阶段后,则该属性设置为false。
    45. struts.i18n.reload
    46. 该属性设置是否每次HTTP请求到达时,系统都重新加载资源文件。该属性默认值是false。在开发阶段将该属性设置为true会更有利于开发,但在产品发布阶段应将该属性设置为false。
    47. 提示 开发阶段将该属性设置了true,将可以在每次请求时都重新加载国际化资源文件,从而可以让开发者看到实时开发效果;产品发布阶段应该将该属性设置为false,是为了提供响应性能,每次请求都需要重新加载资源文件会大大降低应用的性能。
    48. struts.ui.theme
    49. 该属性指定视图标签默认的视图主题,该属性的默认值是xhtml。
    50. struts.ui.templateDir
    51. 该属性指定视图主题所需要模板文件的位置,该属性的默认值是template,即默认加载template路径下的模板文件。
    52. struts.ui.templateSuffix
    53. 该属性指定模板文件的后缀,该属性的默认属性值是ftl。该属性还允许使用ftl、vm或jsp,分别对应FreeMarker、Velocity和JSP模板。
    54. struts.configuration.xml.reload
    55. 该属性设置当struts.xml文件改变后,系统是否自动重新加载该文件。该属性的默认值是false。
    56. struts.velocity.configfile
    57. 该属性指定Velocity框架所需的velocity.properties文件的位置。该属性的默认值为velocity.properties。
    58. struts.velocity.contexts
    59. 该属性指定Velocity框架的Context位置,如果该框架有多个Context,则多个Context之间以英文逗号(,)隔开。
    60. struts.velocity.toolboxlocation
    61. 该属性指定Velocity框架的toolbox的位置。
    62. struts.url.http.port
    63. 该属性指定Web应用所在的监听端口。该属性通常没有太大的用户,只是当Struts 2需要生成URL时(例如Url标签),该属性才提供Web应用的默认端口。
    64. struts.url.https.port
    65. 该属性类似于struts.url.http.port属性的作用,区别是该属性指定的是Web应用的加密服务端口。
    66. struts.url.includeParams
    67. 该属性指定Struts 2生成URL时是否包含请求参数。该属性接受none、get和all三个属性值,分别对应于不包含、仅包含GET类型请求参数和包含全部请求参数。
    68. struts.custom.i18n.resources
    69. 该属性指定Struts 2应用所需要的国际化资源文件,如果有多份国际化资源文件,则多个资源文件的文件名以英文逗号(,)隔开。
    70. struts.dispatcher.parametersWorkaround
    71. 对于某些Java EE服务器,不支持HttpServlet Request调用getParameterMap()方法,此时可以设置该属性值为true来解决该问题。该属性的默认值是false。对于WebLogic、Orion和OC4J服务器,通常应该设置该属性为true。
    72. struts.freemarker.manager.classname
    73. 该属性指定Struts 2使用的FreeMarker管理器。该属性的默认值是org.apache.struts2.views.freemarker.FreemarkerManager,这是Struts 2内建的FreeMarker管理器。
    74. struts.freemarker.wrapper.altMap
    75. 该属性只支持true和false两个属性值,默认值是true。通常无需修改该属性值。
    76. struts.xslt.nocache
    77. 该属性指定XSLT Result是否使用样式表缓存。当应用处于开发阶段时,该属性通常被设置为true;当应用处于产品使用阶段时,该属性通常被设置为false。
    78. struts.configuration.files
    79. 该属性指定Struts 2框架默认加载的配置文件,如果需要指定默认加载多个配置文件,则多个配置文件的文件名之间以英文逗号(,)隔开。该属性的默认值为struts-default.xml,struts-plugin.xml,struts.xml,看到该属性值,读者应该明白为什么Struts 2框架默认加载struts.xml文件了。
    80. struts.objectFactory
    81. 该属性指定Struts 2中的action由哪个容器创建

最新文章

  1. Linux记录从此开始
  2. sass在mac中安装
  3. core文件生成总结
  4. 使用线程新建WPF窗体(公用进度条窗体)
  5. curl 简单使用
  6. L3-005. 垃圾箱分布
  7. EF6 第一次,或者相隔一段时间变慢咋办? 我们来优化下
  8. JAVA实用案例之文件导入导出(POI方式)
  9. 【转】简单理解Vue中的nextTick
  10. Web应用程序的安全问题
  11. 事务回滚 try catch
  12. 升级到 .NET Core 2.1
  13. Matlab 输入特殊字符
  14. Ubuntu 16.04.3 LTS 部署 Cloud Torrent
  15. Vmware 安装CentOS 6.5
  16. 解决方式-在Mac系统中,Eclipse无法导入含有中文路径的project
  17. 408. Add Binary【LintCode java】
  18. Atitit. 解决unterminated string literal 缺失引号
  19. 【caffe】用训练好的imagenet模型分类图像
  20. android stadio 编译报错:download fastutil-7.2.0.jar

热门文章

  1. OpenCV_Python教程 系列!
  2. 实验6 Bezier曲线生成
  3. MVC 接收文件
  4. SPOJ-CRAN02 - Roommate Agreement(前缀和)
  5. 网络是通的 yum用不了
  6. SLAB
  7. C++进阶 STL(3) 第三天 函数对象适配器、常用遍历算法、常用排序算法、常用算数生成算法、常用集合算法、 distance_逆序遍历_修改容器元素
  8. 【模板】 最大流模板(ISAP)
  9. JavaScript模块化编程之AMD
  10. FreeMarker 页面静态化解决方案