1. Struts2配置项细节
1.1.导入外部xml文件
在struts.xml文件中使用
example.xml配置中又分隔了另外一个action,package一般不同。具体如下:
这样做的目的是为了拆分struts.xml中过多的action及杂乱的package包。
1.2.package包的配置
xml version="1.0" encoding="UTF-8" ?> DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="default" namespace="/extra" extends="struts-default"> <action name="index" class="cn.yif.action.UserAction" method="execute"> <result name="success" type="dispatcher"> /success.jsp result> action> package> struts>
具体访问请求如下:
注意:
① 同一个包下面的action名称是不能重复的,不同包下的action可以重复;
② 包的名称不能够重复;
③ 包的命名空间不能够重复。
1.3.package包的查找过程
对应到struts.xml配置中,访问路径主要是在packageNameSpace和actionName上,如下以:http://localhost/system/abc/hello的访问为例,这里会把url分为两部分,
packageNameSpace:/system/abc,actionName:/hello。
这里首先会通过packageNameSpace在配置文件中查找对应的
最后找到”/”,这里也是一个包,表示根包,会在根包中继续进行查找。
注意:以上流程,如果所有的包中都没有找到对应
查询过程分析,举例说明如下:
现在我在浏览器上的路径是:/path1/path2/path3/hello
我们需要把这个看做两个部分:
Package路径部分: /path1/path2/path3
Action部分:hello
查询的时候先找路径:
/path1/path2/path3 没找到会找 /path1/path2
/path1/path2 没找到会找 /path1
/path1 没找到会找到根包 /
注意:路径部分找不到时才会到上层路径中找,如果找到了就不会再向上查找了;找到路径后找Action;Action找到直接使用,找不到会尝试找默认default包中的默认Action(在default.xml文件中)。
namespace="/":代表一个根包;
namespace="":代表一个默认包;
1.4.Struts2配置文件优先级
Struts2框架按照如下顺序加载struts2配置
default.properties 该文件保存在 struts2-core-2.3.7.jar 中 org.apache.struts2包里面
我们配置中很多常量都在这里面
struts-default.xml 该文件保存在 struts2-core-2.3.7.jar
我们学习的阶段,可以来这里查看很多配置的方式
struts-plugin.xml 该文件保存在struts-Xxx-2.3.7.jar 这里面是一些插件
上面三个配置文件,是Struts2默认的配置文件,我们不能够对修改它
struts.xml 该文件是web应用默认的struts配置文件
struts.properties 该文件是Struts的默认配置文件(一般不写在这里面)
web.xml 该文件是Web应用的配置文件(一般不用)
如果多个文件配置了同一个struts2 常量,则后一个文件中配置的常量值会覆盖前面文件配置的常量值
上述内容前面三种jar包,不允许修改,后面三种可以自己进行修改。
配置文件的优先级:都是从上往下优先级依次递增,越往下优先级越高。
1.5.Struts2常量配置
在default.properties中可以找到我们的常量配置。
Struts2.xml文件中常用的常量配置:
<constant name="struts.devMode" value="true" /> <constant name="struts.i18n.encoding" value="UTF-8" /> <constant name="struts.multipart.maxSize" value="2097152" /> <constant name="struts.action.extension" value="action,do,," />
1.6.Struts2默认配置
①
②
③
④
<package name="default" namespace="/" extends="struts-default"> <action name="const"> <result>/success.jspresult> action> package>