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

  • 时间:2020-04-24 14:33 作者:刘之西东 来源: 阅读:416
  • 扫一扫,手机访问
摘要:基于AIO架构smarthttp开发的完整MVC框架写了篇《基于jdk自带httpserver开发的最小完整MVC框架》,就再写篇AIO的MVCDEMO启动时间:0.1s(应该算少的吧?)smart http 是一款比较简易的 http服务器,其通信内核采用了smart socket最新版v1.4.

基于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 引用
<dependencies>    <!-- 基于 smart-http 封装的 solon.boot -->    <dependency>        <groupId>org.noear</groupId>        <artifactId>solon.boot.smarthttp</artifactId>        <version>1.0.4</version>    </dependency>    <!-- 一个小巧的JSON框架 -->    <dependency>        <groupId>org.noear</groupId>        <artifactId>solon.serialization.snack3</artifactId>        <version>1.0.4</version>    </dependency>    <!-- enjoy模板引擎 -->    <dependency>        <groupId>org.noear</groupId>        <artifactId>solon.view.enjoy</artifactId>        <version>1.0.4</version>    </dependency>    <!-- 静态文件支持 -->    <dependency>        <groupId>org.noear</groupId>        <artifactId>solon.extend.staticfiles</artifactId>        <version>1.0.4</version>    </dependency></dependencies>
(三)增加文件
  • 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("<footer>");        sb.append("我是自己设置标签,FooterTag");        sb.append("</footer>");        try {            writer.write(sb.toString());        }catch (Exception ex){            ex.printStackTrace();        }    }}
  • webapp/model/UserModel.java
@Datapublic class UserModel {    private long id;    private String name;    private int sex;    private String label;}
  • webapp/controller/HomeController.java
@XControllerpublic class HomeController {    @XMapping(value = "/", produces = "text/html;charset=utf-8")    public String home(){        return "<a href='/helloworld'>/helloworld</a>";    }}
  • webapp/controller/HelloworldController.java
@XControllerpublic 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
<!doctype html><html><head>    <meta charset="UTF-8">    <title>#(title)</title></head><body><div>    #(m.name) : #(message) (我想<a href="/jinjin.htm">静静</a>)</div>#footer()</body></html>
(五)运行 AioApp.main()
  • 浏览器打开:http://localhost:8080/
  • 浏览器输出:<a href='/helloworld'>/helloworld</a>
(六)DEMO源码

源码:demo12.solon_aio_http_mvc

  • 全部评论(0)
最新发布的资讯信息
【系统环境|】通义万相wan2.2本地部署要求有哪些?通义万相wan2.2怎么本地部署(2025-10-21 04:05)
【系统环境|】Vue3 页面卡顿严重?7 个实战技巧让渲染速度飙升 80%!(2025-10-21 04:01)
【系统环境|】前端小白 2 周 Vue3+TS+NaiveUI 学习计划大纲(2025-10-21 04:00)
【系统环境|】Vue3 入门指南: 深入理解 Setup 函数(2025-10-21 03:59)
【系统环境|】2024前端面试真题之—VUE篇(2025-10-21 03:58)
【系统环境|】搞懂Vue3的toRefs与toRef:响应式对象的解构(2025-10-21 03:55)
【系统环境|】三.不定词副词的用法(2025-10-21 03:53)
【系统环境|】歌曲中汉字的信息量真的是吊打英语(2025-10-21 03:52)
【系统环境|】跟着《肖申克的救赎》学英语(002)--安迪法庭受审(2025-10-21 03:52)
【系统环境|】词根词缀-前缀1-27: de-(2025-10-21 03:50)
手机二维码手机访问领取大礼包
返回顶部