Nutz-Mvc手冊

主模塊-子模塊-入口函數


主模塊

任何一個類都可以作爲主模塊,只要你將其配置在 web.xml 中,這樣的設計主要是爲了方便 一些非 JSP/Servlet 標註的 web 服務器整合 Nutz.mvc 框架。

在主模塊中,你可以聲明如下的註解:


@Modules - 聲明應用的所有子模塊

指定子模塊

@Modules({ UserModule.class, PetModule.class})
public class MainModule {
    ...

添加自動掃描

//模塊類自動掃描,添加這行註解nutz將自動掃描主模塊所在包下所有的子模塊以及入口函數(帶有@At註解)
@Modules(scanPackage = true) //1.r.58開始默認就是true
public class MainModule {
    ...

將自動搜索主模塊類,Abc.class,Xyz.class 所在的包(包括子包)下所有的 類,如果有類包括了一個以上的入口函數將被認爲是模塊類。


@IocBy - 設置應用所採用的 Ioc 容器

聲明瞭 Ioc 容器的獲取方式,詳情請參看 同 Ioc 容器一起工作 。


@SetupBy - 應用啓動以及關閉時的額外處理

在整個應用啓動或者關閉時,你想做一些額外的處理工作,你可以實現一個 org.nutz.mvc.Setup 接口,並將其配置在主模塊上

@SetupBy(MyAppSetup.class)
public class MainModule {
    ...

例如

public class MainSetup implements Setup {

	public void init(NutConfig nc) {
		Ioc ioc = nc.getIoc();
		Dao dao = ioc.get(Dao.class);
		Daos.createTablesInPackage(dao, "net.wendal.nutzDemo", false);

		// 初始化默認根用戶
		if (dao.count(User.class) == 0) {
			User user = new User();
			user.setName("admin");
			user.setPassword("123456");
			user.setCreateTime(new Date());
			user.setUpdateTime(new Date());
			dao.insert(user);
		}
	}

	public void destroy(NutConfig nc) {
		// webapp銷燬之前執行的邏輯
		// 這個時候依然可以從nc取出ioc, 然後取出需要的ioc 對象進行操作
	}

}

 


子模塊

任何類都可以作爲子模塊,只要通過 @Modules 註解 聲明到主模塊上即可

在子模塊,你可以聲明


入口函數

子模塊中任何函數,只要是 public 的,且不是 static 的,都可以作爲入口函數 標記入口函數的方法是在其上標註註解 @At

在入口函數上,可以聲明如下註解:

@At - 入口函數對應的 URL

只有標記了這個註解的函數才被認爲是入口函數,例如

@At("/my/abc")
public void someFunc(){
    ...

也可以爲該函數聲明多個 URL

@At({"/my/abc", "/my/xyz"})
public void someFunc(){
    ...
  • 你也可以爲其聲明路徑參數,詳細情況請參看 適配器>路徑參數 一節
  • 如果,你想詳細瞭解 URL 映射的細節,請參看 URL 映射 一節。

@Ok - 成功視圖

聲明瞭入口函數的成功視圖,即如果入口函數正常執行,將會通過這個視圖將函數返回值渲染到 HTTP 響應中。 當然,如果你的函數直接返回的就是一個視圖對象,那麼就不會使用成功視圖(而是你返回的視圖對象)來渲染 HTTP 響應 詳細的介紹,請參看 視圖 一節

@Fail - 失敗視圖

聲明瞭入口函數的失敗視圖,即如果入口函數拋出異常,將會通過這個視圖將異常渲染到 HTTP 響應中 詳細的介紹,請參看 視圖 一節

@AdaptBy - HTTP 參數適配方式

將 HTTP 請求參數轉變成你當前入口函數的參數的過程叫做 適配,這個註解就是聲明這個適配器。 如果你沒有聲明這個註解,默認的會採用 PairAdaptor 來適配 HTTP 請求參數。 詳細的介紹,請參看適配器 一節

@Filter - 過濾器

詳細介紹請參看 過濾器 一節

@Encoding - 輸入輸出編碼

定義 HTTP 請求的輸入輸出編碼,這個註解通常是會定義在 主模塊 上面,從而 保證整個應用有統一的輸入輸出設定

如果你不定義,默認的,Nutz.Mvc 會採用 UTF-8 作爲輸入輸出的編碼

@Encoding(input="UTF-8",output="UTF-8")

 


視圖


什麼是視圖?

視圖的任務就是將入口函數的返回值(一個Java對象)渲染到 HTTP 響應流中。

現在 Nutz.Mvc 自帶的主要視圖有

  • JSP - 採用 JSP 模板輸出網頁
  • Redirect - 客戶端重定向
  • Forward - 服務器端中轉
  • Json - 將對象輸出成 Json 字符串
  • void - 什麼都不做
  • Raw - 二進制輸出,圖片輸出,文件下載等

當然你還可以根據需要開發你自己的視圖實現類,定製自己的視圖也非常簡單,請參看 本文 #定製自己的視圖 一節。


快速入門:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章