W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
控制器(Controller)是MVC體系中的核心,它負(fù)責(zé)處理瀏覽器發(fā)起的所有請求和決定響應(yīng)內(nèi)容的邏輯處理,控制器就是一個(gè)標(biāo)準(zhǔn)的Java類,不需要繼承任何基類,通過類中的方法向外部暴露接口,該方法的返回結(jié)果將決定向?yàn)g覽器響應(yīng)的具體內(nèi)容;
下面通過示例編寫WebMVC模塊中的控制器:
@Controller public class DemoController { @RequestMapping("/sayhi") public IView sayHi() { return View.textView("Hi, YMPer!"); } }
啟動(dòng)Tomcat服務(wù)并訪問http://localhost:8080/sayhi
,得到的輸出結(jié)果將是:Hi, YMPer!
從以上代碼中看到有兩個(gè)注解,分別是:
@Controller:聲明一個(gè)類為控制器,框架在啟動(dòng)時(shí)將會(huì)自動(dòng)掃描所有聲明該注解的類并注冊為控制器;
name:控制器名稱,默認(rèn)為“”(該參數(shù)暫時(shí)未被使用);
singleton:指定控制器是否為單例,默認(rèn)為true;
@RequestMapping:聲明控制器請求路徑映射,作用域范圍:類或方法;
value:控制器請求路徑映射,必選參數(shù);
method[]:允許的請求方式,默認(rèn)為GET方式,取值范圍:GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE;
header[]:請求頭中必須存在的頭名稱;
param[]:請求中必須存在的參數(shù)名稱;
示例一:
創(chuàng)建非單例控制器,其中的控制器方法規(guī)則如下:
- 控制器方法僅支持POST和PUT方式訪問;
- 請求頭參數(shù)中必須包含x-requested-with=XMLHttpRequest(即判斷是否AJAX請求);
- 請求參數(shù)中必須存在name參數(shù);
@Controller(singleton = false) @RequestMapping("/demo") public class DemoController { @RequestMapping(value = "/sayhi", method = {Type.HttpMethod.POST, Type.HttpMethod.PUT}, header = {"x-requested-with=XMLHttpRequest"}, param = {"name=*"}) public IView sayHi() { return View.textView("Hi, YMPer!"); } }
示例說明:
本例主要展示了如何使用@Controller和@RequestMapping注解來對(duì)控制器和控制器方法對(duì)進(jìn)配置;
控制器方法必須使用public修飾,否則無效;
由于控制器上也聲明了@RequestMapping注解,所以控制器方法的請求路徑映射將變成:/demo/sayhi;
示例二:
上例中展示了對(duì)請求的一些控制,下面展示如何對(duì)響應(yīng)結(jié)果進(jìn)行控制,規(guī)則如下:
- 通過注解設(shè)置響應(yīng)頭參數(shù):
- from = "china"
- age = 18
- 通過注解設(shè)置控制器返回視圖及內(nèi)容:"Hi, YMPer!"
@Controller @RequestMapping("/demo") public class DemoController { @RequestMapping("/sayhi") @ResponseView(value = "Hi, YMPer!", type = Type.View.TEXT) @ResponseHeader({ @Header(name = "from", value = "china"), @Header(name = "age", value = "18", type = Type.HeaderType.INT)}) public void sayHi() { } }
本例中用到了三個(gè)注解:
@ResponseView:聲明控制器方法默認(rèn)返回視圖對(duì)象, 僅在方法無返回值或返回值無效時(shí)使用
name:視圖模板文件路徑,默認(rèn)為"";
type:視圖文件類型,默認(rèn)為Type.View.NULL;
@ResponseHeader:設(shè)置控制器方法返回結(jié)果時(shí)增加響應(yīng)頭參數(shù);
value[]:響應(yīng)頭@Header參數(shù)集合;
@Header:聲明一個(gè)請求響應(yīng)Header鍵值對(duì),僅用于參數(shù)傳遞;
name:響應(yīng)頭參數(shù)名稱,必選參數(shù);
value:響應(yīng)頭參數(shù)值,默認(rèn)為"";
type:響應(yīng)頭參數(shù)類型,支持STRING, INI, DATE,默認(rèn)為Type.HeaderType.STRING;
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: