Struts2 基础笔记 (一)

首页 » 编程之家 » Java » 正文

更改访问后缀

 

这里先说一下为什么这样配置的大致原理,这样才能  知其然 知其所以然   


  • 当一个动态web项目启动时伴随着tomcat的启动,tomcat启动过程中会去加载web.xml文件
  • 当加载web.xml时因web.xml中配置了struts的过滤器  StrutsPrepareAndExecuteFilter ,此时会实例化并初始化改过滤器
  • 在初始化过滤器的时候还加载了如下配置文件,如 default.properties 、struts-default.xml 、struts-plugins.xml 等文件且这些种配置文件均是struts自带的配置文件,这些文件我们没有修改权限【注意:之前的web.xml文件还没有加载完毕】
  • 当过滤器初始化完毕后会加载 struts.xml 之后又会去加载web.xml文件

 

大体顺序如下

 

顺序 配置文件名 说明
1 default.properties 不能修改
2 struts-default.xml 不能修改
3 struts-plugin.xml 不能修改
4 struts.xml 可以修改(推荐)
5 struts-properties 可以修改
6 web.xml 可以修改

 

了解了配置文件的加载顺序,那么就更容易理解了,虽然 struts 自带的配置文件不能修改,但我们可以通过在其加载顺序之后的文件中覆盖的修改原配置,如在 struts.xml 文件中覆盖修改,当然也可以在web.xml 文件中修改,但推荐在 struts.xml 文件中修改


而对于像修改访问后缀。。。等的配置方式基本均在 default.properties 文件中,我们先来大致看看 default.properties 文件中的内容 【此处我把注释去掉,只留下配置文件】

 

struts.i18n.encoding=UTF-8

struts.objectFactory.spring.autoWire = name

struts.objectFactory.spring.useClassCache = true

struts.objectFactory.spring.autoWire.alwaysRespect = false

struts.objectFactory.spring.enableAopSupport = false

struts.multipart.parser=jakarta

struts.multipart.saveDir=
struts.multipart.maxSize=2097152

struts.action.extension=action,,

struts.serve.static=true

struts.serve.static.browserCache=true

struts.enable.DynamicMethodInvocation = false

struts.enable.SlashesInActionNames = false

struts.mapper.action.prefix.enabled = false

struts.mapper.action.prefix.crossNamespaces = false

struts.tag.altSyntax=true

struts.devMode = false

struts.ui.theme=xhtml
struts.ui.templateDir=template

struts.ui.theme.expansion.token=~~~

struts.ui.templateSuffix=ftl

struts.velocity.configfile = velocity.properties

struts.velocity.contexts =

struts.velocity.toolboxlocation=

struts.url.http.port = 80
struts.url.https.port = 443

struts.url.includeParams = none

struts.dispatcher.parametersWorkaround = false

struts.freemarker.beanwrapperCache=false

struts.freemarker.wrapper.altMap=true

struts.freemarker.mru.max.strong.size=0

struts.xslt.nocache=false

struts.mapper.alwaysSelectFullNamespace=false

struts.ognl.allowStaticMethodAccess=false

struts.el.throwExceptionOnFailure=false

struts.ognl.logMissingProperties=false

struts.ognl.enableExpressionCache=true

struts.handle.exception=true

 

上述这种配置格式相当于 key value 键值对。 等号左边是 key 等号右边的是 value 覆盖修改方式如下:


第一种方式

 

修改struts.xml文件,在struts节点下添加 <constant name="struts.action.extension" value="do"></constant> 其中 struts.action.extension 就是上述配置文件中的 Key 值 value值 do 将其原来的 action值替换为 do 因为struts.xml文件在default.properties 文件加载之后


第二种方式

 

新建 struts.properties 文件 里面写入配置格式 如:key=value  【注意:struts.properties 文件位置与 struts.xml 文件位置处于同级目录下

 

struts.action.extension=cool

第三种方式

 

web.xml 文件中的过滤器节点 filter 中添加如下

 

<init-param>
    <param-name>struts.action.extension</param-name>
    <param-value>do</param-value>
</init-param>

 

全部信息如下

 

<!-- 配置struts过滤器 拦截所有请求 -->
<filter>
	<filter-name>struts2</filter-name>
	<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  <init-param>
		<param-name>struts.action.extension</param-name>
		<param-value>do</param-value>
	</init-param>
</filter>
<!-- 配置struts过滤器 拦截请求规则 -->
<filter-mapping>
	<filter-name>struts2</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

 

验证这三种配置文件的加载先后顺序也很简单,在每个配置文件中写入不同的后缀名,运行项目只有在 web.xml中配置的后缀名有效,说明web.xml在这三种文件的加载顺序中处于最后

 

作者:bear, 转载或复制请以 超链接形式 并注明出处 数据与编程之美
原文地址:《Struts2 基础笔记 (一)》 发布于2020-05-24

分享到:
赞(5) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

一碗牛肉面
鼓励站长分享更多学习经验、教程、学习资源。
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册