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 ...
随机推荐
- php调用API支付接口 转至http://www.cnblogs.com/chaochao00o/p/6490463.html
首先访问 https://charging.teegon.com/ 注册账号, 找到开发配置 记下client_id和client_secret. 点击 天工开放平台 点击天工收银 点击 S ...
- shell脚本删除log日志
删除log文件简单shell脚本 经常会遇到日志把磁盘占满的情况,引起低级故障.我个人在实际工作中,尝试了如下的方法,比较简单,而且快捷有效. #!/bin/bash # /root/log_dele ...
- Storm 消息分发策略
1.Shuffle Grouping:随机分组,随机派发stream里面的tuple,保证每个bolt接收到的tuple数目相同.2.Fields Grouping:按字段分组,比如按userid来分 ...
- ubuntu14.04安装tun/tap网络设备
14.04的系统默认是没有tun设备的,所以需要通过在内核中编译时勾选此设备.接下来分步来介绍如何安装tun设备. 一.更新ubuntu桌面版源: sudo gedit /etc/apt/source ...
- kernel(二)源码浅析
目录 kernel(二)源码浅析 建立工程 启动简析 head.s 入口点 查询处理器 查询机器ID 启动MMU 其他操作 start_kernel 处理命令行 分区 title: kernel(二) ...
- 【转】第8章 前摄器(Proactor):用于为异步事件多路分离和分派处理器的对象行为模式
目录: Reactor(反应堆)和Proactor(前摄器) <I/O模型之三:两种高性能 I/O 设计模式 Reactor 和 Proactor> <[转]第8章 前摄器(Proa ...
- LInux Zebra
本文章摘自linux公社 https://www.linuxidc.com/Linux/2015-07/120224p1.htm 写在前面 从22号中午开始琢磨zebra/quagga的用法,一直 ...
- layui(八)——轮播图常见用法总结
carousel 是 layui 2.0 版本中新增的全新模块,主要适用于跑马灯/轮播等交互场景.它可以满足任何类型内容的轮播式切换操作,更可以胜任 FullPage (全屏上下轮播)的需求,简洁而不 ...
- 谈一谈Elasticsearch的集群部署
Elasticsearch天生就支持分布式部署,通过集群部署可以提高系统的可用性.本文重点谈一谈Elasticsearch的集群节点相关问题,搞清楚这些是进行Elasticsearch集群部署和拓 ...
- Spyder Crashed During Last Session
尝试一:Command: pyhton spyder --reset 尝试二:Command: spyder --show-console (突然就好了...)