nutz學習筆記(1)


寫在前頭

最近到了合肥分公司,分公司用的架構為nutz·····目前在根據官方文檔(http://nutzam.com/core/nutz_preface.html)自學並實踐中,此筆記將不會如官方文檔那么詳實,但它是我作為一個初識nutz者的個人心得為我個人所用。

day1:    Hello Nutz!

創建第一個nutz-demo

a.在eclipse里創建一個新的 Dynamic Web Project,我的tomcat為6.0版本,jdk為1.8,在 WebContent > WEB-INF > lib 把nutz-1.r.60.jar放進去.(jar下載地址為https://nutz.cn/nutzdw/)

b.修改web.xml,通過聲明一個 Filter,將 Nutz.mvc 掛載到 Tomcat 中.

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>HelloNutz</display-name>
  
   <display-name>hellonutz</display-name>
    <filter>
        <filter-name>nutz</filter-name>
        <filter-class>org.nutz.mvc.NutFilter</filter-class>
        <init-param>
            <param-name>modules</param-name>
            <param-value>demo.hello.MainModule</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>nutz</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
    </filter-mapping>
</web-app>

c.創建jsp頁面,因為我們在入口函數里聲明了一個 JSP 視圖,按照視圖的定義(@Ok("jsp:nutztest.Hello") || @Fail("jsp:nutztest.Hello")),我們需要在WEB-INF下面建立一個名為 nutztest 的文件夾,並在里面建立一個 Hello.jsp,這個jsp僅僅是輸出入口函數的返回值,而無論入口函數返回什么,都會保存在 request 對象 "obj" 屬性中.如入口函數是正常的,則會返回"Hello Nutz!",異常則返回對應異常信息到 Hello.jsp中。代碼及返回信息如下:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>nutz-test</title>
</head>
<body>
<!-- 僅僅是輸出入口函數的返回值。是的,無論入口函數返回什么,都會保存在 request 對象 "obj" 屬性中 -->
<%=request.getAttribute("obj") %>
</body>
</html>

成功入口函數:

失敗入口函數:

最后,附上modules控制器代碼:

package demo.hello;

import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Fail;
import org.nutz.mvc.annotation.Ok;

public class MainModule {

    /**
     * 我的第一個nutz_demo 
     * hello! world!
     * add by hdf when 2017 11:22
     * @return
     */
//    @At - 入口函數對應的 URL,只有標記了這個注解的函數才被認為是入口函數,例如:
//  @At("/my/abc")
//    public void someFunc(){
//    ```````
//    }
//  也可以為該函數聲明多個 URL
//    @At({"/my/abc", "/my/xyz"})
//    public void someFunc(){
//    ```````
//    }*
    
//    @Ok - 成功視圖
//    聲明了入口函數的成功視圖,即如果入口函數正常執行,
//    將會通過這個視圖將函數返回值渲染到 HTTP 響應中。 
//    當然,如果你的函數直接返回的就是一個視圖對象,
//    那么就不會使用成功視圖(而是你返回的視圖對象)來渲染 HTTP 響應
    
//    @Fail("jsp:nutztest.Hello")
//    聲明了入口函數的失敗視圖,即如果入口函數拋出異常,將會通過這個視圖將異常渲染到 HTTP 響應中 詳細的介紹
    @At("/hello")
    @Ok("jsp:nutztest.Hello")
    @Fail("jsp:nutztest.Hello")
    public String dohello(){
        //添加此行為測試Fail入口函數,去掉此行則為測試ok入口函數
        System.out.println(1/0);
        return "Hello Nutz!";
    }
}

 

 

疑問:

@At - 入口函數對應的URL 和 @RequestMapping的區別?
相同點:
都是url訪問路徑
不同點:
1.@At是nutz的入口函數對應的URL,只有標記了這個注解的函數才被認為是nutz的入口函數,

它不可以像@RequestMapping 那樣單純用來處理地址的映射。
2.@RequestMapping是spring-mvc用來處理請求地址映射的注解,可用於類或方法上

 

完全不明白為何在配置web.xml的過濾器時,必須要指向其中任何一個存在的(控制器??)類里,指向一個后,其他的類都可以訪問並正常返值。不指向其中任何一個或指向的packge為上一層,則報錯!留下此疑問,日后解答!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM