Struts配置文件解释:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "http://struts.apache.org/dtds/struts-2.1.7.dtd"> <struts> <!-- 请求参数的编码方式 --> <constant name="struts.i18n.encoding" value="UTF-8"/> <!-- 指定被struts2处理的请求后缀类型。多个用逗号隔开 --> <constant name="struts.action.extension" value="action,do,go,xkk"/> <!-- 当struts.xml改动后,是否重新加载。默认值为false(生产环境下使用),开发阶段最好打开 --> <constant name="struts.configuration.xml.reload" value="true"/> <!-- 是否使用struts的开发模式。开发模式会有更多的调试信息。默认值为false(生产环境下使用),开发阶段最好打开 --> <constant name="struts.devMode" value="false"/> <!-- 设置浏览器是否缓存静态内容。默认值为true(生产环境下使用),开发阶段最好关闭 --> <constant name="struts.serve.static.browserCache" value="false" /> <!-- 指定由spring负责action对象的创建 <constant name="struts.objectFactory" value="spring" /> --> <!-- 是否开启动态方法调用 --> <constant name="struts.enable.DynamicMethodInvocation" value="false"/> <!-- Struts2中使用包来管理一组Action --> <!-- package的属性 name: 指定包名。要唯一。方便于其它包的继承。 extends: 指定要继承的包名。一般是struts-default namespace: 指定命名空间。不指定时,使用默认命名空间,默认命名空间为"" abstract: 指定是否为抽象包。抽象包中不能有Action的配置。 --> <package name="mystruts" extends="struts-default" namespace="/msg"> <!-- action标签用来注册一个Action.常用属性 name: action的名字,用于匹配请求URI。必须的。不能出现"/" class: 指定Action处理类的全限定名。未指定时,默认是ActionSupport。而ActionSupport的execute() 方法默认处理就是返回一个success字符串。 method: 指定要调用的处理方法.不指定时,默认调用execute方法 converter: 指定本Action类要使用到的转换器的全限定名 --> <action name="*" class="com.javacrazyer.action.MsgAction" method="{1}"> <!-- result配置结果映射 name:指定结果的逻辑名。 type: 指定跳转的方式。默认是值dispatcher,表示请求分派。常用还有:redirect(重定向), freemarker(使用模板技术解析目标资源) --> <result name="success" >/success.jsp</result> </action> </package> </struts>
对于比较复杂的实际项目来说,可能struts.xml中需要写非常多的类似代码,那么为了方便管理,可以将相关的写在别的xml文件中,然后再引入到struts.xml中来,效果也是一样
比如,在src/META-INF/struts2文件下有这么几个xml:struts2-login.xml、struts2-deliver.xml、struts2-order.xml、struts2-member.xml、struts2-system.xml等,这几个xml分别对应为
struts2-login.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.0.dtd"> <struts> <constant name="struts.objectFactory" value="spring" /> <constant name="struts.objectFactory.spring.autoWire" value="name" /> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <constant name="struts.configuration.xml.reload" value="true" /> <constant name="struts.action.extension" value="action"></constant> <constant name="struts.i18n.encoding" value="UTF-8"></constant> <constant name="struts.ognl.allowStaticMethodAccess" value="true" /> <!-- 引入struts2其他类似配置文件 --> <include file="META-INF/struts2/struts2-login.xml" /> <include file="META-INF/struts2/struts2-member.xml" /> <include file="META-INF/struts2/struts2-system.xml" /> <include file="META-INF/struts2/struts2-order.xml" /> <include file="META-INF/struts2/struts2-deliver.xml" /> <package name="default" namespace="/" extends="struts-default, json-default"> <!-- 定义拦截器 --> <interceptors> <interceptor name="appInterceptor" class="com.javacrazyer.action.AppInterceptor" /> <interceptor-stack name="appInterceptorStack"> <interceptor-ref name="appInterceptor" /> <interceptor-ref name="defaultStack" /> </interceptor-stack> </interceptors> <default-interceptor-ref name="appInterceptorStack"/> <default-action-ref name="index" /> <global-results> <result name="login">/index.jsp</result> <result name="postRequest">/postRequest.jsp</result> <result name="errorPage">/errorPage.jsp</result> </global-results> <action name="index"> <result type="redirectAction"> <param name="actionName">Login_Action</param> <param name="namespace">/</param> </result> </action> </package> <!-- Add packages here --> </struts>