<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <constant name="struts.il8n.encoding" value="UTF-8"></constant> <constant name="struts.ui.theme" value="simple" /> <!-- 定义默认的访问后缀 --> <constant name="struts.action.extension" value="action" /> <!--设置convention-plugin的页面存放路径 --> <constant name="struts.convention.result.path" value="/WEB-INF/jsp" /> <!--设置convention-plugin的搜索路径 --> <constant name="struts.convention.package.locators" value="kp" /> <!--设置convention-plugin不搜索的路径,可以不设 --> <constant name="struts.convention.exclude.packages" value=""/> <!-- 设置convention-plugin默认的父包,如果是 --> <constant name="struts.convention.default.parent.package" value="base-default"/> <!-- 我设计的目的是全局都用这个包的拦截器,不用convention-plugin的也可以继承它,这个包拦截器的目的 是为了进行登录验证的,除非有特殊要求的,例如不用进行登录验证的可以不继承它,可以在action类里 用注解重新制定package,或者在包com.test11.*下面定义action,在struts-test.xml里配置 --> <package name="base-default" extends="convention-default" abstract="true"> <interceptors> <interceptor name="frameInterceptor" class="com.intercepter.frameInterceptor"></interceptor> <interceptor-stack name="frameinterceptors"> <interceptor-ref name="frameInterceptor"></interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </interceptor-stack> </interceptors> <default-interceptor-ref name="frameinterceptors"></default-interceptor-ref> </package> <!-- 以下两项在生产模式中要去掉 --> <constant name="struts.devMode" value="true"/> <constant name="struts.convention.classes.reload" value="true" /> </struts>
struts.convention.package.locators.basePackage=com.ZTest.web.action
这个属性用于约定Action 类的根包(这个包是Java 类的包,而不是Struts.xml中配置的<package>节点)
在一个项目中有这样一系列的Java 包,那么当指定convention的这个属性,Struts 框架就会在你访问特定的URL时会自动的找到所要的请求的实现类。
当你在浏览器中输入: http://localhost:8080/HelloWorld.action ,Struts会自动的找到并执行com.ZTest.web.action.HelloWorldAction.java类。
当你在浏览器中输入: http://localhost:8080/test/aaa.action ,Struts会自动的找到并执行com.ZTest.web.action.test.aaaAction.java类。