一、include分工合作,优化配置
实际开发过程中,一个应用程序分为多个模块功能,这些功能模块由不同的开发人员开发。如果所有的开发人员都在struts.xml中配置action,将会是一种灾难。
而且不利于后期维护。此时可以为单独的模块写一个单独的struts配置文件,然后用include将其加入struts.xml配置文件中。
如用户模块可以命名为struts-user.xml
如,struts-user.xml配置代码如下:
<?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="userPackage" namespace="/user" extends="struts-default">
<action name="addUser" class="com.cn.action.UserAction" method="addUser">
<result name="addUserResult">/WEB-INF/jsp/user/addUser.jsp</result>
</action>
<action name="updateUser" class="com.cn.action.UserAction" method="updateUser">
<result name="updateUserResult">/WEB-INF/jsp/user/updateUser.jsp</result>
</action>
<action name="deleteUser" class="com.cn.action.UserAction" method="deleteUser">
<result name="deleteUserResult">/WEB-INF/jsp/user/deleteUser.jsp</result>
</action>
<action name="selectUser" class="com.cn.action.UserAction" method="selectUser">
<result name="selectUserResult">/WEB-INF/jsp/user/selectUser.jsp</result>
</action>
</package>
</struts>
然后通过include将其加入到struts.xml配置中,如:
<?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="loginPackage" namespace="/" extends="struts-default">
<action name="login" class="com.cn.action.LoginAction" method="login">
<result name="loginStr">/WEB-INF/jsp/user/login.jsp</result>
</action>
<action name="toLogin" class="com.cn.action.LoginAction" method="toLogin">
<result name="loginSucc">/WEB-INF/jsp/user/loginSuccess.jsp</result>
<result name="loginFail">/WEB-INF/jsp/user/loginFailure.jsp</result>
</action>
</package>
<include file="struts-user.xml"></include>
</struts>
注:include是将struts-user.xml中<package></package>包及其下的配置写入到Struts.xml中的<struts>标签中
二、通配符优化配置
如配置文件struts-user.xml中
<package name="userPackage" namespace="/user" extends="struts-default">
<action name="addUser" class="com.cn.action.UserAction" method="addUser">
<result name="addUserResult">/WEB-INF/jsp/user/addUser.jsp</result>
</action>
<action name="updateUser" class="com.cn.action.UserAction" method="updateUser">
<result name="updateUserResult">/WEB-INF/jsp/user/updateUser.jsp</result>
</action>
<action name="deleteUser" class="com.cn.action.UserAction" method="deleteUser">
<result name="deleteUserResult">/WEB-INF/jsp/user/deleteUser.jsp</result>
</action>
<action name="selectUser" class="com.cn.action.UserAction" method="selectUser">
<result name="selectUserResult">/WEB-INF/jsp/user/selectUser.jsp</result>
</action>
</package>
这一堆配置文,繁琐不堪,而使用通配符后,可缩减为如下:
<package name="userPackage" namespace="/user" extends="struts-default">
<action name="*User" class="com.cn.action.UserAction" method="{1}User">
<result name="{1}UserResult">/WEB-INF/jsp/user/{1}User.jsp</result>
</action>
</package>
缩减后,其效果一样