1、包和命名空间
- 用<package…/>元素配置包,其子元素<action…/>配置action;
- <package…/>元素共有4个属性:
(1) name:仅仅起到一个表识作用,相当于id,不会影响其内action的访问地址。
(2) extends:其值为其他包的name属性值,表示继承其他的包。可以继承其他包中的action定义、拦截器定义等。因为Struts2的配置文件是由上到下处理的,因此,父包必须在子包的前面定义;
(3) namespace:为当前包指定一个名称空间,目的是防止出现多个action同名而引起二义性的情况。会影响包内action的访问地址;
(4) abstract:用于指定该包是否为抽象包,若为抽象包,则不能定义action,但可定义其他的东西,如:拦截器。struts-default包就是一个抽象包; - 关于名称空间:
(1) 如果没有指定namespace属性,则代表该包下的action处于默认名称空间下;
(2) 名称空间会影响其包下action的访问地址。当指定了某个名称空间后,该包下的action的访问地址就是:名称空间+action名;
(3) 在URL指定的名称空间下找不到相应的action时,就到默认名称空间下找,还找不到就是系统出错。
(4) namespace="/",表示该包下的action都处于跟名称空间下。Struts2的名称空间是不分级的,跟名称空间于其他任何名称空间(默认的除外)除访问时的URL不同之外,没有其他任何区别;
2、Action的基本配置
- struts.xml主要是要做两件核心的事情:① 将不同的URL映射到不同的action,② 将action返回的逻辑视图名映射到相应的物理视图资源;
- 使用<action…/>元素来配置action,<action…/>元素可配置的属性共有三个:
(1) name: 指定action的名字,实际上就是制定了该action所要处理的URL(如果URL有.action后缀,则Strurs2会将其去掉后再匹配)。为避免歧义,name属性值最好不要包含“/”,如果确实需要包含“/”,就使用全局变量struts.enable.SlashesInActionNames指定可以包含。
(2) class: 指定该action对应的类。也可不指定该属性,这回使用默认类来处理请求,默认的默认类是