struts2 Convention插件好处及使用
现在JAVA开发都流行SSH.而很大部分公司也使用了struts2进行开发..因为struts2提供了很多插件和标签方便使用..在之前开发过程中总发现使用了struts2会出现很多相应的配合文件.如果对配置文件的管理感觉比较麻烦..可以考虑使用COnvention插件可以进行零配置而且插件进行很多规范的约定也可以对开发合作当中按着它相应的规律开发..感觉也挺方便管理的.下面简单介绍它的使用.
首先我们需要使用到的jar包:
struts2-convention-plugin-2.1.8.jarstruts2-core-2.1.8.jarxwork-core-2.1.6.jarcommons-fileupload-1.2.1.jarfreemarker2.3.16.jar
<!-- Struts2过滤器 --><filter><filter-name>struts</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts</filter-name><url-pattern>*.action</url-pattern></filter-mapping>
<?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.devMode" value="true" /><!-- 国际化资源文件名称 --><constant name="struts.custom.i18n.resources" value="i18n" /><!-- 是否自动加载国际化资源文件 --><constant name="struts.i18n.reload" value="false" /><!-- convention类重新加载 --><constant name="struts.convention.classes.reload" value="true" /> <!--++++++++++++++++++++++++++++++++++++++++++++++++开发状态 --> <!-- 浏览器是否缓存静态内容 --><constant name="struts.serve.static.browserCache" value="true" /><!-- 上传文件大小限制设置 --><constant name="struts.multipart.maxSize" value="-1" /><!-- 主题 --><constant name="struts.ui.theme" value="simple" /><!-- 编码 --><constant name="struts.i18n.encoding" value="UTF-8" /><!-- 后缀 --><constant name="struts.action.extension" value="action" /><!-- 结果资源的路径 --><constant name="struts.convention.result.path" value="/WEB-INF/template/" /><!-- URL资源分隔符 --><constant name="struts.convention.action.name.separator" value="_" /><package name="basePackage" extends="struts-default"><interceptors><interceptor-stack name="baseStack"> <interceptor-ref name="exception" /> <interceptor-ref name="alias" /> <interceptor-ref name="servletConfig" /> <interceptor-ref name="i18n" /> <interceptor-ref name="prepare" /> <interceptor-ref name="chain" /> <interceptor-ref name="debugging" /> <interceptor-ref name="scopedModelDriven" /> <interceptor-ref name="modelDriven" /> <interceptor-ref name="fileUpload" /> <interceptor-ref name="checkbox" /> <interceptor-ref name="multiselect" /> <interceptor-ref name="staticParams" /> <interceptor-ref name="actionMappingParams" /> <interceptor-ref name="params"><param name="excludeParams">dojo\..*,^struts\..*</param> </interceptor-ref> <interceptor-ref name="conversionError"/> <!-- 配置方法级别的校验 --> <interceptor-ref name="validation"> <param name="excludeMethods">input,back,cancel,browse</param> <param name="validateAnnotatedMethodOnly">true</param> </interceptor-ref> <interceptor-ref name="workflow"> <param name="excludeMethods">input,back,cancel,browse</param> </interceptor-ref> </interceptor-stack></interceptors><!-- 配置默认拦截器栈 --><default-interceptor-ref name="baseStack" /><!-- 未到找Action指向页面 --><default-action-ref name="errorPage" /><action name="errorPage"><result type="redirect">/html/error_page_404.html</result></action></package><package name="shop" extends="basePackage" namespace="/shop/"><global-results><result name="error" type="freemarker">/WEB-INF/template/shop/error.ftl</result></global-results></package></struts>
public class HelloAction extends ActionSupport {public String execute() { return "test"; } public String mysql() {return "test"; }}
<constant name="struts.convention.result.path" value="="/WEB-INF/template/" />
<constant name="struts.convention.package.locators" value="web,action" />
<contant name="struts.convention.action.name.separator" value="_" />