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 ...
随机推荐
- 数据库连接池 C3p0
数据库连接池 C3po 1 定义 本质上是个容器(集合) 存放数据库的连接容器(connection 对象) ,当系统初始化以后 容器就会创建 容器中就会申请一些连接对象 ,当用户来访问数据库的时候 ...
- BZOJ2815 拓扑排序 + LCA
https://www.lydsy.com/JudgeOnline/problem.php?id=2815 作为一个DAG图,结点之间又有这么明显的等级之分,很容易想到的是拓扑排序. 但是不管是正向的 ...
- GitHub for Windows客户端使用操作流程
Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理.作为一个程序员,我们需要掌握其用法. 作为开源代码库以及版本控制系统,Github目前拥有140 ...
- webapi快速开发框架
一.webapi快速开发框架搭建之后台 从0开始搭建webapi基本框架.权限控制.异常管理.日志管理.缓存管理 源码:https://github.com/shengyu-kmust/webapi ...
- HDU 6345(子串查询 暴力)
题意是每组给定一个字符串,在有限查询次数内输出所要查询区间的字典序最小的子串个数. 字典序最小的子串,就是所查询区间中字典序最小的单个字符,问题就转化成了求一段区间内字典序最小的字符个数. 开始时盲目 ...
- Spark整合HBase,Hive
背景: 场景需求1:使用spark直接读取HBASE表 场景需求2:使用spark直接读取HIVE表 场景需求3:使用spark读取HBASE在Hive的外表 摘要: 1.背景 2.提交脚本 内容 场 ...
- 043、data-packed volume container (2019-03-06 周三)
参考https://www.cnblogs.com/CloudMan6/p/7203285.html volume container 的数据归根到底还是在host上,我们能不能把数据完全放到 ...
- 面向对象(Object Orientation Programming)
Three characteristic of object orientation: Encapsulation: capturing data and keeping it safely and ...
- eventproxy 介绍这款好用的工具,前端事件式编程的思维
前端事件式编程 <script src="eventproxy.js"></script> <script> // EventProxy此时是一 ...
- Extjs 设置GridPanel单元格可选择高兼容写法
网上大部分都是这种 <style type= "text/css" > .x-selectable, .x-selectable * { -moz-user-selec ...