04-Struts.xml配置之理解常量配置和拦截器

Struts配置中的contast主要是涉及一些常量的配置。包含下面的配置

<!-- 所有匹配*.action的请求都由struts2处理 -->
<constant name="struts.action.extension" value="action" />
<!-- 是否启用开发模式 -->
<constant name="struts.devMode" value="true" />
<!-- struts配置文件改动后,是否重新加载 -->
<constant name="struts.configuration.xml.reload" value="true" />
<!-- 设置浏览器是否缓存静态内容 -->
<constant name="struts.serve.static.browserCache" value="false" />
<!-- 请求参数的编码方式 -->
<constant name="struts.i18n.encoding" value="utf-8" />
<!-- 每次HTTP请求系统都重新加载资源文件,有助于开发 -->
<constant name="struts.i18n.reload" value="true" />
<!-- 文件上传最大值 -->
<constant name="struts.multipart.maxSize" value="104857600" />
<!-- 让struts2支持动态方法调用 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<!-- Action名称中是否还是用斜线 -->
<constant name="struts.enable.SlashesInActionNames" value="false" />
<!-- 允许标签中使用表达式语法 -->
<constant name="struts.tag.altSyntax" value="true" />
<!-- 对于WebLogic,Orion,OC4J此属性应该设置成true -->
<constant name="struts.dispatcher.parametersWorkaround" value="false" />Code language: HTML, XML (xml)

package是一个包,相当于一个模块,用来区分重名。

package可以有多个解决重名的情况, namespace 可以不写,默认是任何路径都可以,也可以写成/xx/yy ,但是必须是/开头

我们再web.xml中把把所有的/*的地址都交给了struts来处理了。然后struts2再通过在struts.xml中根据package 的namespace来具体交给那个action来处理。

不过往往package的namespace 用来进行模块划分的。比如说后台部分功能我们可以配置

比如我们下面配置

<struts>
    <constant name="struts.devMode" value="true"/>
    <package name="admin" namespace="/admin"  extends="struts-default"> 
        <action name="index">  
            <result>
                /admin/index.jsp
            </result>
        </action>  
        <action name="platform">  
            <result>
                /admin/platform.jsp
            </result>
        </action> 
    </package>  
    <package name="default" namespace="/"  extends="struts-default"> 
        <action name="index">  
            <result>
                /demo.jsp
            </result>
        </action>  
    </package>  
</struts>Code language: HTML, XML (xml)

我们下面定义两个包,一个admin用来作为后台模块部分。一个default用来作为前台部分。

Admin里面两个action 一个是后台首页/admin/index 一个是前台首页。

然后我们在webroot中添加一个admin文件然后田两个jsp,index.jsp和platform.jsp文件。

另外,如果namespace为空的化,那么就是匹配的时候只观察整个地址是否出现过这个action的名称。

比如前台的拦截器如果namespace=””为空。则不管是

/index

还是/dddd/sadfs/sdf/sdf/index

还是http://p50:8080/Struct2Demo/admin/index/add

都可能被匹配到这个action

不过我们发现 好像就算url地址没有index的单词 也是可以访问到首页的jsp的

http://p50:8080/Struct4Demo/indexsdfds

http://p50:8080/Struct4Demo/ddd

都是可以正常访问

特殊的package应该放在上面。

比如向我们现在这样子配置的化

如果我们访问呢

http://p50:8080/Struct2Demo/admin/index

则还是访问呢后台

发现还是可以的。所以我们的package 应该是没有顺序的???。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注