為于都等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及于都網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè)、于都網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!>考慮使用COnvention插件可以進(jìn)行零配置而且插件進(jìn)行很多規(guī)范的約定也可以對開發(fā)合作當(dāng)中按著它相應(yīng)的規(guī)律開發(fā)..感覺也挺方便管理的.下面簡單介紹它的使用.
首先我們需要使用到的jar包:
Java代碼
struts2-convention-plugin-2.1.8.jar
struts2-core-2.1.8.jar
xwork-core-2.1.6.jar
commons-fileupload-1.2.1.jar
freemarker2.3.16.jar
struts2-convention-plugin-2.1.8.jar
struts2-core-2.1.8.jar
xwork-core-2.1.6.jar
commons-fileupload-1.2.1.jar
freemarker2.3.16.jar
web.xml的配置
Xml代碼
<!-- 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>
<!-- 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>
struts.xml的配置
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>
<!--++++++++++++++++++++++++++++++++++++++++++++++++開發(fā)狀態(tài) -->
<!-- 是否顯示詳細(xì)錯誤信息 -->
<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" />
<!--++++++++++++++++++++++++++++++++++++++++++++++++開發(fā)狀態(tài) -->
<!-- 瀏覽器是否緩存靜態(tài)內(nèi)容 -->
<constant name="struts.serve.static.browserCache" value="true" />
<!-- 上傳文件大小限制設(shè)置 -->
<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" />
<!-- 結(jié)果資源的路徑 -->
<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>
<!-- 配置默認(rèn)攔截器棧 -->
<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>
<?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>
<!--++++++++++++++++++++++++++++++++++++++++++++++++開發(fā)狀態(tài) -->
<!-- 是否顯示詳細(xì)錯誤信息 -->
<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" />
<!--++++++++++++++++++++++++++++++++++++++++++++++++開發(fā)狀態(tài) -->
<!-- 瀏覽器是否緩存靜態(tài)內(nèi)容 -->
<constant name="struts.serve.static.browserCache" value="true" />
<!-- 上傳文件大小限制設(shè)置 -->
<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" />
<!-- 結(jié)果資源的路徑 -->
<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>
<!-- 配置默認(rèn)攔截器棧 -->
<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>
action的代碼
我在Myeclipse新建的web項目中建立action.shop.HelloAction
Java代碼
public class HelloActionextends ActionSupport {
public String execute() {
return "test";
}
public String mysql() {
return "test";
}
}
public class HelloActionextends ActionSupport {
public String execute() {
return "test";
}
public String mysql() {
return "test";
}
}
然后你在WEB-INF/template新建文件夾shop(這里新建的文件夾名字要和你建立的Action對應(yīng)的存放文件夾名字符合)
然后建立文件一個jsp或者tld或者jsf文件名字為hello_test使用http://localhost:8080/web/shop/hello.action時將會直接跳到該頁面進(jìn)行顯示加了方法的名的話訪問就使用http://localhost:8080/web/shop/hello!mysql.action
下面詳細(xì)解析下struts.xml中Convention配置
1.1. 設(shè)置結(jié)果頁面路徑
默認(rèn)所有的結(jié)果頁面都存儲在WEB-INF/content下,你可以通過設(shè)置struts.convention.result.path這個屬性的值來改變到其他路徑。如:
Xml代碼
<constant name="struts.convention.result.path" value="="/WEB-INF/template/" />
<constant name="struts.convention.result.path" value="="/WEB-INF/template/" />
這樣你在就必須將你需要跳轉(zhuǎn)的頁面放在template下面
struts2支持.jsp .html .htm .vm格式的文件。
下面是actiong和結(jié)果模版的映射關(guān)系:
URL Result File that could match Result Type
/hello success /WEB-INF/content/hello.jsp Dispatcher
/hello success /WEB-INF/content/hello-success.htm Dispatcher
/hello success /WEB-INF/content/hello.ftl FreeMarker
/hello input /WEB-INF/content/hello-world-input.vm Velocity
/hello error /WEB-INF/content/test/test2/hello-error.html Dispatcher
以上的內(nèi)容來自struts2的文檔
[url]http://struts.apache.org/2.1.6/docs/convention-plugin.html [/url]
當(dāng)然,簡單的通過默認(rèn)的方式來進(jìn)行配置不能完全滿足實際項目的需要。所幸,convention的零配置是非常靈活的。
1.2. 設(shè)置Convention搜索包
默認(rèn)包路徑包含action,actions,struts,struts2的所有包都會被struts作為含有Action類的路徑來搜索。你可以通過設(shè)置struts.convention.package.locators屬性來修改這個配置。如:
Xml代碼
<constant name="struts.convention.package.locators" value="web,action" />
<constant name="struts.convention.package.locators" value="web,action" />
則定義了在項目中,包路徑包含web和action的將被視為Action存在的路徑來進(jìn)行搜索。
Com.ustb.web.*/com.ustb.action.*都將被視為含有Action的包路徑而被搜索。
接著,Convention從前一步找到的package以及其子package中尋找 com.opensymphony.xwork2.Action 的實現(xiàn)以及以Action結(jié)尾的類:
com.example.actions.MainAction
com.example.actions.products.Display (implements com.opensymphony.xwork2.Action)
com.example.struts.company.details.ShowCompanyDetailsAction
1.3. 命名空間
命名空間。從定義的.package.locators標(biāo)示開始到包結(jié)束的部分,就是命名空間。舉個例子:
xxx.xxx.action.shop.helloAction的命名空間是:”/shop”。
xxx.xxx.action.shop.detail.UserAction的命名空間是:”/shop/detail”
1.4. Actin類名路徑分割
Convention通過如下規(guī)則確定URL的具體資源部分:去掉類名的Action部分。然后將將每個分部的首字母轉(zhuǎn)為小寫,用’-’分割,你可以設(shè)置struts.convention.action.name.separator 如
Xml代碼
<contant name="struts.convention.action.name.separator" value="_" />
文章標(biāo)題:Convention插件-創(chuàng)新互聯(lián)
網(wǎng)頁URL:http://aaarwkj.com/article48/cogphp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、建站公司、云服務(wù)器、網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容