convention 插件的作用 struts-plugin.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!--
/*
* $Id: struts-plugin.xml 1221225 2011-12-20 12:22:28Z jogep $
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
-->
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts order="20">
<bean type="com.opensymphony.xwork2.UnknownHandler" name="convention" class="org.apache.struts2.convention.ConventionUnknownHandler"/>
<bean type="org.apache.struts2.convention.ActionConfigBuilder" name="convention" class="org.apache.struts2.convention.PackageBasedActionConfigBuilder"/>
<bean type="org.apache.struts2.convention.ActionNameBuilder" name="convention" class="org.apache.struts2.convention.SEOActionNameBuilder"/>
<bean type="org.apache.struts2.convention.ResultMapBuilder" name="convention" class="org.apache.struts2.convention.DefaultResultMapBuilder"/>
<bean type="org.apache.struts2.convention.InterceptorMapBuilder" name="convention" class="org.apache.struts2.convention.DefaultInterceptorMapBuilder"/>
<bean type="org.apache.struts2.convention.ConventionsService" name="convention" class="org.apache.struts2.convention.ConventionsServiceImpl"/>
<bean type="com.opensymphony.xwork2.config.PackageProvider" name="convention.packageProvider" class="org.apache.struts2.convention.ClasspathPackageProvider"/>
<bean type="com.opensymphony.xwork2.config.PackageProvider" name="convention.containerProvider" class="org.apache.struts2.convention.ClasspathConfigurationProvider"/>
<constant name="struts.convention.actionConfigBuilder" value="convention"/>
<constant name="struts.convention.actionNameBuilder" value="convention"/>
<constant name="struts.convention.resultMapBuilder" value="convention"/>
<constant name="struts.convention.interceptorMapBuilder" value="convention"/>
<constant name="struts.convention.conventionsService" value="convention"/>
<constant name="struts.convention.result.path" value="/WEB-INF/content/"/>
<constant name="struts.convention.result.flatLayout" value="true"/>
<constant name="struts.convention.action.suffix" value="Action"/>
<constant name="struts.convention.action.disableScanning" value="false"/>
<constant name="struts.convention.action.mapAllMatches" value="false"/>
<constant name="struts.convention.action.checkImplementsAction" value="true"/>
<constant name="struts.convention.default.parent.package" value="convention-default"/>
<constant name="struts.convention.action.name.lowercase" value="true"/>
<constant name="struts.convention.action.name.separator" value="-"/>
<constant name="struts.convention.package.locators" value="action,actions,struts,struts2"/>
<constant name="struts.convention.package.locators.disable" value="false"/>
<constant name="struts.convention.package.locators.basePackage" value=""/>
<constant name="struts.convention.exclude.packages" value="org.apache.struts.*,org.apache.struts2.*,org.springframework.web.struts.*,org.springframework.web.struts2.*,org.hibernate.*"/>
<constant name="struts.convention.relative.result.types" value="dispatcher,velocity,freemarker"/>
<constant name="struts.convention.redirect.to.slash" value="true"/>
<constant name="struts.convention.action.alwaysMapExecute" value="true"/>
<constant name="struts.mapper.alwaysSelectFullNamespace" value="true"/>
<!-- <constant name="struts.convention.action.includeJars" /> -->
<constant name="struts.convention.action.fileProtocols" value="jar" />
<constant name="struts.convention.classes.reload" value="false" />
<constant name="struts.convention.exclude.parentClassLoader" value="true" />
<package name="convention-default" extends="struts-default">
</package>
</struts>
应用eg:
<?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>
<!-- 开发模式 -->
<constant name="struts.devMode" value="false" />
<!-- 国际化 -->
<constant name="struts.i18n.encoding" value="UTF-8" />
<constant name="struts.configuration.xml.reload" value="true" />
<!-- 确保Spring的自动装配策略总是被考虑 -->
<constant name="struts.objectFactory.spring.autoWire.alwaysRespect" value="true" />
<!-- 允许标签使用静态方法 -->
<constant name="struts.ognl.allowStaticMethodAccess" value="true"/>
<!-- 文件上传大小限制(KB) 2M:2097152=2*1024*1024 -->
<constant name="struts.multipart.maxSize" value="2097152"/>
<!-- 开启动态方法调用 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<!-- 使用Convention插件,实现约定大于配置的零配置文件风格. 特殊的Result路径在Action类中使用@Result设定. -->
<!-- 指定默认的父包 -->
<constant name="struts.convention.default.parent.package" value="default" />
<!-- 设置convention插件默认的根包 -->
<constant name="struts.convention.package.locators" value="action,web,common" />
<!-- 搜索视图资源的路径 jsp路径 -->
<constant name="struts.convention.result.path" value="/WEB-INF/jsp/"/>
<!-- Action类名分隔符 -->
<constant name="struts.convention.action.name.separator" value="-" />
<!-- 搜索此配置下的所有包 -->
<constant name="struts.convention.package.locators.basePackage" value="com.eryansky.web" />
<!-- 继承convention-default包,定义一个默认的拦截器,根据需要还可扩展 -->
<package name="default" extends="convention-default">
<interceptors>
<!-- 表单输入特殊字符Html转译、敏感词汇转译拦截器 -->
<interceptor name="inputReplaceInterceptor" class="com.eryansky.common.web.struts2.interceptor.InputReplaceInterceptor" />
<!-- 登录验证拦截器 -->
<interceptor name="authority" class="com.eryansky.common.web.struts2.interceptor.AuthorityInterceptor" />
<!-- 异常处理拦截器 -->
<interceptor name="exceptionAuthority" class="com.eryansky.common.web.struts2.interceptor.ExceptionInterceptor" />
<interceptor-stack name="crudStack">
<interceptor-ref name="inputReplaceInterceptor" />
<!-- 将登录验证拦截器加入默认的拦截器栈中 -->
<interceptor-ref name="authority">
<param name="excludeMethods">welcome,login</param>
</interceptor-ref>
<interceptor-ref name="exceptionAuthority" />
<interceptor-ref name="paramsPrepareParamsStack" />
</interceptor-stack>
<!-- url param定义拦截器 -->
<interceptor name="urlParamsInterceptor" class="com.eryansky.common.web.struts2.interceptor.UrlParamsInterceptor" />
</interceptors>
<default-interceptor-ref name="crudStack" />
<global-results>
<result name="login" type="redirect">/jump.jsp</result>
</global-results>
<action name="fileRedirect" class="com.eryansky.common.web.struts2.FileRedirectAction" method="redirect"></action>
</package>
</struts>