Struts2常量的配置

Easter79
• 阅读 578

    struts.xml配置文件最大的作用就是配置Action和请求之间的对应关系,并配置逻辑视图名和物理视图资源之间的对应关系。除此之外,struts.xml文件还有一些额外的功能,例如Bean配置、配置常量、导入其他配置文件等。

Struts2除了可使用struts.xml文件来管理配置之外,还可使用struts.properties晚间来管理常量,该文件定义了struts2框架的大量常量,开发者可以通过改变这些常量来满足应用的需求。struts.properties文件是一个标准的Properties文件,该文件包含了系列的key-value对,每个key就是一个struts2常量,每个value就是struts2的常量值。

只要将struts.properties文件放入Web应用的类加载路径下,Struts2框架就可以加载该文件,通常我们将该文件放在WEB-INF/classes路径下。在struts2-core-2.2.1.jar压缩文件的org/apache/struts2路径下有一个default.properties文件,该文件里为Struts2的所有常量,这些常量都有默认的值,我们可以通过打开这个文件来了解struts2所支持的常量,这里不作介绍。

Struts2默认会加载类加载路径下的struts.xml, struts-default.xml, struts-plugin.xml三类文件,其中struts.xml是开发者定义的默认配置文件,struts-default.xml是Struts2框架自带的配置文件,struts-plugin.xml是Struts2插件的默认配置文件。

Struts2配置常量公有三种方式:

  • 通过struts.properties文件

  • 通过struts.xml配置文件

  • 通过Web应用的web.xml文件

Struts2的所有配置文件,包括struts-default.xml、struts-plugin.xml,甚至用于自定义的,只要Struts2加载的配置文件中都可以使用常量配置的方式来配置Struts2常量。如下struts.xml配置片段配置了一个struts常量,该常量可以代替struts.properties文件中Struts2配置属性。

<struts>
    <!-- 通过constant元素配置Struts2的属性 -->
    <constant name="struts.custom.i18n.resource" value="mess"/>
</struts>

  除此之外,当我们在web.xml文件中配置StrutsPrepareAndExecuteFilter时也可以配置Struts2常量,此时采用为StrutsPrepareAndExecutorFilter配置初始化参数的方式来配置Struts2常量,如下是代码片段:

<filter>
  <filter-name>struts2</filter-name>
  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecutFilter</filter-class>   
   <init-param>
    <param-name>struts.custom.i18n.resource</param-name>
    <param-value>mess</param-value>
  </init-param>
</filter>

  上面的配置文件中出题字代码配置了一个常用属性:struts.custom.i18n.resources,该属性指定了应用所需的国际化资源文件的baseName为mess。

通常推荐在struts.xml文件中定义struts2属性,而不是在struts.properties文件中定义,之所以保留使用struts.properties文件定义Struts2属性的方式,主要是为了保持与WebWork的向后兼容性。

通常,Struts2框架按照如下的顺序加载Struts2常量:

  • struts-default.xml:该文件保存在struts2-core-2.1.2.jar文件中

  • struts-plugin.xml:该文件保存在struts2-Xxx-2.1.2.jar等Struts2插件的jar文件中

  • struts.xml:该文件是Web应用默认的Struts2配置文件

  • struts.properties:该文件是Struts2默认的配置文件

  • web.xml:该文件是Web应用的配置文件

上面定义了Struts2框架搜索常量的顺序,如果在多个文件中配置了同一个struts2常量,则后一个文件中配置的常量会覆盖前面文件中配置的常量值。

在默认情况下,Struts2只自动加载类加载路径下的struts.xml, struts-default.xml和struts-plugin.xml三类文件。但随着应用规模的增大,系统中Action的数量也大量增加,将导致struts.xml配置文件变得非常臃肿。为了避免这个问题,提高struts.xml文件的可读性,我们可以将struts.xml配置文件分解成多个配置文件,然后在sturts.xml文件中包含其他配置文件即可

下面的struts.xml文件中就通过include手动导入了一个配置文件:struts-part1.xml文件,这样,在加载struts.xml文件的时候就会同时加载struts.xml文件中引用到的struts-part1.xml文件。通过这种方式,就可以将Struts2的Action按模块配置在多个配置文件当中,下面是代码片段:

<struts>   
    <include file="struts-part1.xml" />
</struts>
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
Java 核心内容相关面试题【4】
spingmvc和structs的区别我们用struts2时采用的传统的配置文件的方式,并没有使用传说中的0配置。spring3mvc可以认为已经100%零配置了(除了配置springmvcservlet.xml外)。SpringMVC和Struts2的区别:1.机制:sp
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k