Spring MVC 控制器的實(shí)現(xiàn)

2018-07-26 14:01 更新

...Spring implements a controller in a very abstract way, which enables you to create a wide variety of controllers.

控制器作為應(yīng)用程序邏輯的處理入口,它會(huì)負(fù)責(zé)去調(diào)用你已經(jīng)實(shí)現(xiàn)的一些服務(wù)。通常,一個(gè)控制器會(huì)接收并解析用戶的請(qǐng)求,然后把它轉(zhuǎn)換成一個(gè)模型交給視圖,由視圖渲染出頁(yè)面最終呈現(xiàn)給用戶。Spring對(duì)控制器的定義非常寬松,這意味著你在實(shí)現(xiàn)控制器時(shí)非常自由。

Spring 2.5以后引入了基于注解的編程模型,你可以在你的控制器實(shí)現(xiàn)上添加@RequestMapping、@RequestParam、@ModelAttribute等注解。注解特性既支持基于Servlet的MVC,也可支持基于Portlet的MVC。通過(guò)此種方式實(shí)現(xiàn)的控制器既無(wú)需繼承某個(gè)特定的基類,也無(wú)需實(shí)現(xiàn)某些特定的接口。而且,它通常也不會(huì)直接依賴于Servlet或Portlet的API來(lái)進(jìn)行編程,不過(guò)你仍然可以很容易地獲取Servlet或Portlet相關(guān)的變量、特性和設(shè)施等。

Spring項(xiàng)目的官方Github上你可以找到許多項(xiàng)目,它們對(duì)本節(jié)所述以后的注解支持提供了進(jìn)一步增強(qiáng),比如說(shuō)MvcShowcase,MvcAjax,MvcBasic,PetClinic,PetCare等。

@Controller
public class HelloWorldController {

    @RequestMapping("/helloWorld")
    public String helloWorld(Model model) {
        model.addAttribute("message", "Hello World!");
        return "helloWorld";
    }
}

你可以看到,@Controller注解和@RequestMapping注解支持多樣的方法名和方法簽名。在上面這個(gè)例子中,方法接受一個(gè)Model類型的參數(shù)并返回一個(gè)字符串String類型的視圖名。但事實(shí)上,方法所支持的參數(shù)和返回值有非常多的選擇,這個(gè)我們?cè)诒拘」?jié)的后面部分會(huì)提及。@Controller@RequestMapping及其他的一些注解,共同構(gòu)成了Spring MVC框架的基本實(shí)現(xiàn)。本節(jié)將詳細(xì)地介紹這些注解,以及它們?cè)谝粋€(gè)Servlet環(huán)境下最常被使用到的一些場(chǎng)景。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)