天天看點

AJAXJS MVC 入門

AJAXJS MVC 是一款簡單高效的 MVC 架構。它首先參照了 SpringMVC 中最精煉的部分也就是“約定優于配置”的思想,基本上無須特定的配置,隻要寫好了注解就可定義你自己的控制器。

下面我們一步步來展現控制器是如何生成。

然後還要把 jar 加入 Eclipse 的 Deployment Assembly,不然 Tomcat 會告訴你找不到類。

MVC 架構依賴基于 JSR 311 規範的 JAX-RS 包,借用了其中符合語義的注解,而不是自己再定義一套注解,達到了代碼複用的目的。

MVC 支援基本的 HTTP 四個方法,如上例的 @GET、@POST、@PUT、@DELETE 注解所示,都是方法的注解,定義在不同的方法中。也就是說,隻要使用者通路 /simple 這個路徑,即可執行這個類身上的方法。上述例子代碼中的 @Get 注解對應 showHTML() 方法,意思是 GET 請求到 /simple 這個路徑上馬上執行 showHTML()。這個方法——這個方法具體幹什麼呢?就是輸出一段 HTML,請注意字元串裡面的 html::XXXX 是約定好的,字首 html:: 是固定的,後面表示 response 要輸出的 HTML 字元串。如下圖所示。

AJAXJS MVC 入門

實際 html:: 的作用是将必須的 HTML 标簽“環繞”了你想輸出的任意字元串,好比說上面的 HTML 是:

除了 html:: 還有其他不同類型的字首:

字首

作用

html::

HTML 字元串

json::

Json 字元串

redirect::

用戶端重定向

預設字元串

JSP 模闆 Forward 輸出網頁

除了上述約定,您也可以傳回 void——那就是什麼都不做,這時候可以控制 resposne 對象進行二進制輸出、圖檔輸出、檔案下載下傳等。

MVC 模型中的 C 的作用到這裡就可以說是到此為止了。下一步的工作是 View 來承擔。從 C 到 V 之間的過程可以這樣了解:它表示架構響應終端用戶端請求,最終呈現給終端用戶端的一種表現形式,它可以是 一個 HTML 或 JSP 頁面,可以是一段原始文本,可以是一張圖檔,可以是一段 JSON 格式的字元串等等。視圖的任務就是将入口函數的傳回值(一個 Java 對象)渲染到 HTTP 響應流中。

寫好了 Controller 類不等于就完事了,還需要加入到 web.xml 使得控制器類可被掃描。

如下配置 web.xml,我們加入了全局的過濾器。

web.xml 需要加入 MvcDispatcher 過濾器,将 IController 控制器的類收集起來,“聽候發落”。因為接收到請求的還是 filter 過濾器。過濾器本身是個鍊式調用,到 MvcDispatcher 這裡來的時候就是根據 url、參數、HTTP 方法等等的不同分發來決定把這次請求分發到那個應該要得到請求的控制器中。這就是 Dispatcher 分發器的作用。實質上這裡就是要接管所有的 HTTP 請求。如果符合控制器規則的,就執行處理,不符合的傳回到标準 Servlet 過濾器中。此過程也是過濾器鍊式調用的應用。故是以我們定義的 url 規則是 ,但這裡寫得是 .do,為什麼志是對 .do 擴充名的請求攔截呢?這是因為 Tomcat 不僅能處理 Servlet、JSP,而且它還是一個靜态資源的伺服器。還能呈現圖檔、CSS、JS 這些靜态資源。為避免這些請求到跑到 MVC 分發器這裡來,是以我們約定隻有 *.do 擴充名的才能被控制器識别執行。

控制台顯示如下圖所示,告訴你掃描了哪些類。

AJAXJS MVC 入門

要注意的是,掃描的不是類名,而是包名。多個包的話可用逗号分開。

包名應該是包含控制器 IController 的包,例如 test.com.ajaxjs.mvc.controller 包下面應有 SimpleController 類。