從struts2.1開始,struts2 引入了Convention插件來支持零配置
使用約定無需struts.xml或者Annotation配置
需要 struts2-convention-plugin-2.3.7.jar 、asm-*.jar(三個)
插件會自動搜索action、actions、struts、struts2包下所有Java類
所有實現了com.opensymphony.xwork2.Action的Java類
所有類名以Action結尾的Java類
下面類名都符合Convention插件
cn.itcast.struts2.HelloAction
cn.itcast.actions.books.BookSearchAction
cn.itcast.struts.user.UserAction
cn.itcast.estore.action.test.LoginAction
struts2-convention-plugin-2.3.7.jar 中struts-plugin.xml重要常量
<constant name="struts.convention.package.locators" value="action,actions,struts,struts2"/> 默認掃描包
<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.action.suffix" value="Action"/> 默認掃描以Action結尾的類
<constant name="struts.convention.result.path" value="/WEB-INF/content/"/> 結果result頁面存放位置
<constant name="struts.convention.classes.reload" value="false" /> Action類文件重新自動加載
如果Action類名包含Action后綴,將Action后綴去掉
將Action類名的駝峰寫法,轉成中劃線寫法
例如:
cn.itcast.struts2.HelloAction 映射到 /hello.action
cn.itcast.actions.books.BookSearchAction 映射到 /books/book-search.action
cn.itcast.struts.user.UserAction 映射到 /user/user.action
cn.itcast.estore.action.test.LoginAction 映射到 /test/login.action
默認情況下,Convention總會到Web應用的WEB-INF/content路徑下定位結果資源
<constant name="struts.convention.result.path" value="/WEB-INF/content/"/>
約定: actionName + resultCode + suffix
例如:
訪問cn.itcast.struts.user.UserAction返回success
Convention優先使用 WEB-INF/content/user/user-success.jsp
如果user-success.jsp不存在,會使用user-success.html
如果user-success.html不存在,會使用user.jsp