Struts.xml常用的参数
1、<include>
利用include标签,可以将一个struts.xml配置文件分割成多个配置文件,然后在struts.xml中使用<include>标签引入其他配置文件。
比如一个购物程序,可以把用户配置、商品配置、订单配置分别放在3个配置文件user.xml、goods.xml和order.xml中,然后在struts.xml中将这3个配置文件引入:
struts.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<include file="user.xml"/>
<include file="goods.xml"/>
<include file="order.xml"/>
</struts>
user.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="cost" namespace="/cost" extends="struts-default">
<action name="findEmp" class="findEmpAction" method="load">
<result name="success">login.jsp</result>
</action>
</package>
</struts>
2、<constant>
所有在struts.properties文件中定义的属性,都可以配置在struts.xml文件中。而在struts.xml中,是通过<constant>标签来进行配置的:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!--设置开发模式-->
<constant name="struts.devMode" value="true"/>
<!--设置编码形式为utf-8-->
<constant name="struts.i18n.encoding" value="utf-8"/>
<!--省略其他配置信息-->
</struts>
3.<package>
在Struts2框架中是通过包来管理配置信息的.
<!--name:包名,作为其它包应用本包的标记
extends:通常配置struts.xml的时候,都继承一个名为“struts-default.xml”的包,这是struts2中内置的包,非必须
namespace:设置包的命名空间,主要是针对大型项目中Action的管理,更重要的是解决Action重名问题,因为不在同一个命名空间的Action可以使用相同的Action名的,非必须
Struts2中如果没有为某个包指定命名空间,该包使用默认的命名空间,默认的命名空间总是""。
当设置了命名空间为“/”,即指定了包的命名空间为根命名空间时,此时所有根路径下的Action请求都会去这个包中查找对应的资源信息。
假若前例中路径为http://localhost:8080/login.action则所有http://localhost:8080/*.action都会到设置为根命名空间的包中寻找资源。
-->
<!-- 如果不用namespace,则访问的URL为http://localhost:8080/findEmp.action-->
<package name="cost" extends="struts-default">
<action name="findEmp" class="findEmpAction" method="load">
<result name="success">index.jsp</result>
</action>
</package>
<!-- 如果用namespace,则访问的URL为http://localhost:8080/cost/findEmp.action-->
<package name="cost" namespace="/cost" extends="struts-default">
<action name="findEmp" class="findEmpAction" method="load">
<result name="success">index.jsp</result>
</action>
</package>
4.<action>与<result>
<package name="cost" namespace="/cost" extends="struts-default">
<!-- action中
由于使用Spring来管理Action,因此需要通过Spring容器来创建Action,因此class属性指定的是组件ID。
name:请求的Action名称
class:Action处理类对应具体路径,非必须写
method:指定Action中的方法名,如果没有指定method则默认执行Action中的execute方法,非必须写
converter:指定Action使用的类型转换器,非必须写
-->
<action name="findEmp" class="findEmpAction" method="load">
<!-- result中
name:对应Action返回逻辑视图名称,默认为success,非必须写
type:返回结果类型,默认为dispatcher,非必须写
下面语句意为:返回success,就跳转到index.jsp页面
-->
<result name="success">index.jsp</result>
</action>
</package>
4.1随着result的增加,struts.xml文件也会随之变得越来越复杂。那么就可以使用通配符来简化配置:
例如下面这个案例:
public class Test {
public String test1(){
return "result1";
}
public String test2(){
return "result2";
}
public String test3(){
return "result3";
}
}
Struts.xml的配置为:
<package name="cost" namespace="/cost" extends="struts-default">
<action name="test*" class="findEmpAction"{1}">
<result name="result{1}">/result{1}.jsp</result>
</action>
</package>