最近几年随着python语言的崛起,java在web方面被各种脚本语言诟病效率低下,这也是事实,java在运用第三方类库(框架)开发时,效率确实很低下。麻烦的框架整合,复杂的配置文件都是拦路虎,不过今天我要推荐的nutz框架:一组轻便小巧的框架集合,各个部分都可以被独立使用,而nutz的目标就是在力所能及的情况下,最大限度的提高开发速度。
框架:nutz
使用工具:jdk1.8+mysql+idea+jetty
首先,先创建一个maven web工程,结构如下:图片1
在pom.xml里加入如下依赖:
org.nutz
nutz
1.r.60
com.alibaba
druid
1.0.26
jconsole
com.alibaba
tools
com.alibaba
javax.servlet
javax.servlet-api
3.1.0
provided
mysql
mysql-connector-java
5.1.40
log4j
log4j
1.2.17
nuzedemo
org.eclipse.jetty
jetty-maven-plugin
9.4.3.v20170317
org.apache.maven.plugins
maven-compiler-plugin
6
6
依赖分别为:nutz的官方jar包,版本1.r.60,阿里德鲁伊连接池,servlet,javamysql驱动,jettty插件,log4j日志。因为需要log4j打印日志进行观察,需要在resource目录下添加log4j.properties配置文件,打印级别为dubug。
在java目录下创建包:com.wendal.nutz,并在里面创建一个主模块类 MainModule.class,在类上加上注解@Modules图片3
@Modules将自动搜索主模块所在的包(包括子包)下所有的类,如果有类包括了一个以上的 入口函数将被认为是模块类,标记@Modules的类为主模块。在web.xml里声明一个filter将nutz.mvc挂载到web容器中(如果filter中标签未成功配置主模块的地址会报错)
图片4
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
nutz
org.nutz.mvc.NutFilter
modules
com.wendal.nutz.MainModule
nutz
/*
REQUEST
FORWARD
在resource中创建一个Ioc文件夹,存放Ioc配置文件,并在里面创建一个dao的js文件,声明每个字段的值,nutz.Ioc会自动帮我们转型,而放在容器中则需要其他的注解,稍后会讲到图片5
现在就要将配置文件读取到ioc容器中了,我们需要在主模块上加上新的注解@IocBy,手动填入配置文件地址读取进容器中。图片6ComboIocProvider的args参数, 星号开头的是类名或内置缩写,剩余的是各加载器的参数
*js 是JsonIocLoader,负责加载js/json结尾的ioc配置文件
*anno 是AnnotationIocLoader,负责处理注解式Ioc, 例如@IocBean
*tx 是TransIocLoader,负责加载内置的事务拦截器定义, 1.b.52开始自带
新建一个bean包,在里面建一个符合javabean的pojo类,名称为User.class图片7
我们可以在主模块上添加一个注解@SetBy(value=MainSetup.class),在com.wendal.nutz文件夹下新建一个类MainSetup类,实现Setup,这时需要重写两个方法,init和destory,从字面意思就可以知道这是整个应用启动或结束时执行的方法,我们在Init方法中初始化数据库表.完成后启动一下jetty,观察日志,应该有如下信息图片8
可以看到在发现t_user表不存在时先建立了此表,然后发现里面用户数量为0,又创建了一个"admin"的管理员用户。新建一个类,位置为com.wendal.nutz.module.UserModule.class图片9
新建两个方法,设置登录和退出操作图片10
我们写一个index.jsp页面,用作jetty默认欢迎页
这时候项目已经搭建完成了,我们运行jetty,观察一下日志,如果无异常后打开浏览器输入localhost:8080,就可以看到以下网址,简单测试一下登录和退出功能,都无异常
不具备前端功能的可以通过浏览器localhost:8080/user/login?username=admin&password=123456来测试登录,localhost:8080/user/logout来测试退出功能
一个项目最基本的crud都要有,还有简单的权限控制,这些在下一篇会讲到