java aio http server_基于AIO架构smarthttp开发的完整MVC框架

基于AIO架构smarthttp开发的完整MVC框架

写了篇《基于jdk自带httpserver开发的最小完整MVC框架》,就再写篇AIO的MVC

DEMO启动时间:0.1s(应该算少的吧?)

smart-http 是一款比较简易的 http服务器,其通信内核采用了smart-socket最新版v1.4.6。但想提供友好的WEB服务,需要很多别的功能。

通过与solon框架的融合,便可以友好的提供MVC和AOP服务:

solon 是一个框架的壳,实现了MVC,IOC,AOP,注解,插件等等机制。把这个壳套在smart-http上,便可以为其提供mvc等能力。

smarthttp 是对smart-http的适配,使其能套上solon这个壳;同时还可以享用solon的其它插件带来的能力,如session,json等。

snack3 提供json和序列化支持,也足够小;已适配为solon的序列化框架之一。

enjoy 很难再找到比它更小的模板引擎了,还快得让人想哭。

(一)新建一个 maven 空项目

(二)添加 maven 引用

org.noear

solon.boot.smarthttp

1.0.9

org.noear

solon.serialization.snack3

1.0.9

org.noear

solon.view.enjoy

1.0.9

org.noear

solon.extend.staticfiles

1.0.9

(三)添加文件

java/webapp/controller/HelloworldController.java

java/webapp/controller/HomeController.java

java/webapp/model/UserModel.java

java/webapp/widget/FooterTag.java

java/webapp/AioApp.java

resources/static/jinjin.htm

resources/WEB-INF/view/helloworld.shtm (shtm,被适配为enjoy默认的后缀名)

//不用配置

补充说明:

//资源路径说明(不用配置)

resources/application.properties(或 application.yml) 为应用配置文件

resources/static/ 为静态文件根目标

resources/WEB-INF/view/ 为视图文件根目标(支持多视图共存)

//模板调试模式(或加热加载模式):

启动参数添加:-deubg=1

(四)代码

webapp/AioApp.java

public class AioApp {

public static void main(String[] args) {

XApp.start(AioApp.class, args);

}

}

webapp/widget/FooterTag.java

@XBean("view:footer")

public class FooterTag extends Directive {

@Override

public void exec(Env env, Scope scope, Writer writer) {

StringBuffer sb = new StringBuffer();

sb.append("");

sb.append("我是自定义标签,FooterTag");

sb.append("");

try {

writer.write(sb.toString());

}catch (Exception ex){

ex.printStackTrace();

}

}

}

webapp/model/UserModel.java

@Data

public class UserModel {

private long id;

private String name;

private int sex;

private String label;

}

webapp/controller/HomeController.java

@XController

public class HomeController {

@XMapping(value = "/", produces = "text/html;charset=utf-8")

public String home(){

return "/helloworld";

}

}

webapp/controller/HelloworldController.java

@XController

public class HelloworldController {

@XMapping("/helloworld")

public Object helloworld(){

UserModel m = new UserModel();

m.setId(10);

m.setName("刘之西东");

m.setSex(1);

ModelAndView vm = new ModelAndView("helloworld.shtm");

vm.put("title","demo");

vm.put("message","hello world!");

vm.put("m",m);

return vm;

}

}

resources/WEB-INF/view/helloworld.shtm

#(title)

#(m.name) : #(message) (我想静静)

#footer()

(五)运行 AioApp.main()

(六)DEMO源码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值