一、Nutz
是一组轻便小型的框架集合,可以极大程度上提高开发人员的生产力,更多内容请点击访问Nutz官网。Nutz主要包括以下几个模块:
- DAO:针对JDBC进行了薄封装,事务模板,无缓存
- IoC:JSON风格配置文件,声明时切片支持
- MVC:注解风格配置,内置文件上传功能
- JSON:实现了对JSON的解析和渲染
- Castors:Java对象类型的转换
- Lang:更简洁的Java函数以及更丰富的反射支持
- AOP:轻便快速的切面编程支持
- Resource:资源扫描
二、Nutz使用:
1. 创建maven项目,导入Nutz
<dependency>
<groupId>org.nutz</groupId>
<artifactId>nutz</artifactId>
<version>1.r.68.v20190621</version>
</dependency>
2. 配置web.xml,将网络请求交给Nutz处理
以下是在使用Nutz前的几点说明:
- Nutz是以模块为概念的,类似于Spring中的每一个Controller就相当于Nutz中的模块。
- 配置filter用于过滤请求,并最终把这些请求交给Nutz处理,这一点更加类似于配置struts时的filter,和SpringMVC中的DispatcherServlet较为类似。
- 我们需要给Nutz指定主模块,Nutz从主模块开始扫描其他模块。一般主模块用来初始化项目,如果只是一个简单的单一类,这时均采用Nutz的默认配置。如下:
package com.nutz;
public class Main {
}
- 我们可以利用@Modules注解说明需要加载的模块,当然,我们也可以不指定,这样Nutz会对同包和子包下的类进行自动扫描,加载成Nutz的模块,这一点类似于SprigBoot的启动类。
- 下面是web.xml中的具体配置。
<filter>
<filter-name>nutFilter</filter-name>
<filter-class>org.nutz.mvc.NutFilter</filter-class>
<init-param>
<!-- 在此处我们需要自定义Nutz的主模块 -->
<param-name>modules</param-name>
<param-value>com.nutz.Main</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>nutFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3. 写第一个模块,包结构如下:
package com.nutz.controller;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
public class UserController {
@At("/user")
@Ok("jsp:jsp.hello")
public String user(){
return "这里是用户模块";
}
}
注解说明:
- @At:指定url,类似于@RequestMapping
- @Ok:指定方法执行成功后,所返回的页面,这里我们返回的页面是hello.jsp,内容如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<!-- 在这里我们拿到方法的返回值 -->
<%=request.getAttribute("obj") %>
</body>
</html>
4. 因为Nutz官方推荐使用Jetty,我们这里需要配置Jetty,Jetty可以充当Servlet引擎和Http服务器,也就是我们常说的WEB容器,但是它比Tomcat更加轻量。关于Jetty的更多内容,之后会单独再写一篇博客。
- 下载Jetty解压
- 更改Jetty的启动配置(start.ini),否则我们无法在Idea中使用。我们需要加上
--modules=jmx
,如图。
- 将jetty添加至Idea,如图。
5.启动项目,访问/user
。
项目成功启动后,控制台会有如下信息。
我们对项目进行访问,可以得到如下页面。(Jetty默认端口为8080)
三、说明
第一次学习Nutz,不得不说,Nutz框架较Spring轻便,但是Nutz框架和Spring还有一定的差距,因此,Nutz只适合一些小型项目,或者作为原型开发框架进行使用。后面会逐步向大家介绍Nutz框架各模块的使用方法。