99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

約定模式(Convention Mode)

2018-12-24 22:52 更新

名詞解釋:約定優(yōu)于配置(Convention Over Configuration),也稱作按約定編程,是一種軟件設(shè)計(jì)范式,通過命名規(guī)則之類的約束來減少程序中的配置,旨在減少軟件開發(fā)人員需要做決定的數(shù)量,獲得簡(jiǎn)單的好處,而又不失靈活性。

有些時(shí)候我們僅僅是為了能夠訪問一個(gè)視圖文件而不得不編寫一個(gè)控制器方法與之對(duì)應(yīng),當(dāng)這種重復(fù)性的工作很多時(shí),就變成了災(zāi)難,因此,在WebMVC模塊中,通過開啟約定模式即可支持直接訪問base_view_path路徑下的視圖文件,無需編寫任何代碼;

WebMVC模塊的約定模式默認(rèn)為關(guān)閉狀態(tài),需要通過配置參數(shù)開啟:

ymp.configs.webmvc.convention_mode=true
訪問權(quán)限規(guī)則配置

在約定模式模式下,支持設(shè)置不同路徑的訪問權(quán)限,規(guī)則是:-號(hào)代表禁止訪問,+或無符串代表允許訪問,多個(gè)路徑間用|分隔;

訪問權(quán)限示例:禁止訪問admin目錄和index.jsp文件,目錄結(jié)構(gòu)如下:

WEB-INF\
|
|--templates\
|   |
|   +--admin\
|   |
|   +--users\
|   |
|   +--reports\
|   |
|   +--index.jsp
|   |
|   <...>

示例參數(shù)配置:

ymp.configs.webmvc.convention_view_paths=admin-|index-|users|reports+
攔截器規(guī)則配置

由于在約定模式下,訪問視圖文件無需控制器,所以無法通過控制器方法添加攔截器配置,因此,WebMVC模塊針對(duì)約定模式單獨(dú)提供了攔截器規(guī)則配置這一擴(kuò)展功能,主要是通過@InterceptorRule配合IInterceptorRule接口使用;

攔截器規(guī)則設(shè)置默認(rèn)為關(guān)閉狀態(tài),需要通過配置參數(shù)開啟:

ymp.configs.webmvc.convention_interceptor_mode=true

攔截規(guī)則配置示例:

@InterceptorRule("/demo")
@Before(WebUserSessionCheck.class)
public class InterceptRuleDemo implements IInterceptorRule {

    @InterceptorRule("/admin/*")
    @Before(AdminTypeCheckFilter.class)
    public void adminAll() {
    }

    @Clean
    @InterceptorRule("/admin/login")
    public void adminLogin() {
    }

    @InterceptorRule("/user/*")
    public void userAll() {
    }

    @InterceptorRule("/mobile/person/*")
    public void mobilePersonAll() {
    }
}

說明:

@InterceptorRule:攔截器規(guī)則注解;

  • 在實(shí)現(xiàn)IInterceptorRule接口的類上聲明,表示該類為攔截規(guī)則配置;
  • 在類方法上聲明,表示針對(duì)一個(gè)具體的請(qǐng)求路徑配置規(guī)則,與@RequestMapping的作用相似;

規(guī)則配置中支持的注解:

  • @Before:約定模式下的攔截器僅支持@Before前置攔截;
  • @Clean:清理上層指定的攔截器;
  • @ContextParam:上下文參數(shù);
  • @ResponseCache:聲明控制器方法返回視圖對(duì)象的執(zhí)行結(jié)果將被緩存;

注意:配置規(guī)則類的方法可以是任意的,方法本身無任何意義,僅是通過方法使用注解;

URL偽靜態(tài)

WebMVC模塊通過約定模式可以將參數(shù)融合在URL中,不再通過?傳遞參數(shù),讓URL看上去更好看一些;

偽靜態(tài)模式默認(rèn)為關(guān)閉狀態(tài),需要通過配置參數(shù)開啟:

ymp.configs.webmvc.convention_urlrewrite_mode=true

參數(shù)傳遞規(guī)則:

  • URL中通過分隔符_傳遞多個(gè)請(qǐng)求參數(shù);
  • 通過UrlParams[index]方式引用參數(shù)值;

偽靜態(tài)示例:

URL原始格式:
http://localhost:8080/user/info/list?type=all&page=2&page_size=15

URL偽靜態(tài)格式:
http://localhost:8080/user/info/list_all_2_15

請(qǐng)求參數(shù)的引用:

// 通過EL表達(dá)式獲取參數(shù)
${UrlParams[0]}:all
${UrlParams[1]}:2
${UrlParams[2]}:15

注意:偽靜態(tài)參數(shù)必須是連續(xù)的,UrlParams參數(shù)集合存儲(chǔ)在Request作用域內(nèi);

約定模式完整的配置參數(shù)
#-------------------------------------
# 約定模式配置參數(shù)
#-------------------------------------

# 是否開啟視圖自動(dòng)渲染(約定優(yōu)于配置,無需編寫控制器代碼,直接匹配并執(zhí)行視圖)模式,可選參數(shù),默認(rèn)值為false
ymp.configs.webmvc.convention_mode=

# Convention模式開啟時(shí)視圖文件路徑(基于base_view_path的相對(duì)路徑,'-'號(hào)代表禁止訪問,'+'或無符串代表允許訪問),可選參數(shù),默認(rèn)值為空(即不限制訪問路徑),多個(gè)路徑間用'|'分隔
ymp.configs.webmvc.convention_view_paths=

# Convention模式開啟時(shí)是否采用URL偽靜態(tài)(URL中通過分隔符'_'傳遞多個(gè)請(qǐng)求參數(shù),通過UrlParams[index]方式引用參數(shù)值)模式,可選參數(shù),默認(rèn)值為false
ymp.configs.webmvc.convention_urlrewrite_mode=

# Convention模式開啟時(shí)是否采用攔截器規(guī)則設(shè)置,可選參數(shù),默認(rèn)值為false
ymp.configs.webmvc.convention_interceptor_mode=
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)