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为上一层,则报错!留下此疑问,日后解答!

nutz学习笔记(1)的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- HTML学习笔记
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...
- DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记
今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...
随机推荐
- 5.2 SW1控制LED1亮灭(中断功能)
中断:CPU收到中断请求后暂停正在执行的程序,而去执行中断服务函数中的程序,处理结束后,继续执行原来的程序. 能够产生中断请求的中断源如下: CC2530中断设置步骤:使能端口组中断(IEN)——端口 ...
- shell之case
在shell变成中,case语句是if语句的一种扩展,将if中的判断语句,展开,同一个变量,对应多个可能的值时,执行不同的操作.具体句型如下: case "变量" in value ...
- Luogu P3254 圆桌问题
题目链接 \(Click\) \(Here\) 水题.记得记一下边的流量有没有跑完. #include <bits/stdc++.h> using namespace std; const ...
- (map 并查集) codeVs 2639 约会计划
题目描述 Description cc是个超级帅哥,口才又好,rp极高(这句话似乎降rp),又非常的幽默,所以很多mm都跟他关系不错.然而,最关键的是,cc能够很好的调解各各妹妹间的关系.mm之间的关 ...
- (逆序对 分治法)P1908 逆序对 洛谷
题目描述 猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计.最近,TOM老猫查阅到一个人类称之为“逆序对”的东西,这东西是这样定 ...
- Python继承扩展内置类
继承最有趣的应用是给内置类添加功能,在之前的Contact类中,我们将联系人添加到所有联系人的列表里,如果想通过名字来搜索,那么就可以在Contact类添加一个方法用于搜索,但是这种方法实际上属于列表 ...
- Mysql查询数据库 整理
一. 查询数据: 查询所有列:SELECT * FROM student; 查询指定列:SELECT id,NAME,gender FROM student; 格式:select字段名, ...
- 在Mac OS环境下安装MySQL服务
在Mac OS环境下安装MySQL服务 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我之前介绍过window环境下安装mysql服务,以及在Linux环境下安装mysql服务,今 ...
- mysql清理binlog日志
mysql的binlog日志过多过大,清理过程. 1.查看binlog日志 mysql> show binary logs; +------------------+-----------+ | ...
- 3.Zuul-过滤器
1.什么是Zuul? 路由+过滤器=Zuul,核心是一系列的过滤器 2.Zuul的过滤器: pre:可以在请求被路由之前调用 route:在路由请求时候被调用 post:在route和error过滤器 ...