写了篇《基于jdk自带httpserver开发的最小完整MVC框架》,就再写篇AIO的MVC
smart-http 是一款比较简易的 http服务器,其通信内核采用了smart-socket最新版v1.4.6。但想提供友好的WEB服务,需要很多别的功能。
通过与solon框架的融合,便可以友好的提供MVC和AOP服务:
<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>补充说明:
//资源路径说明(不用配置)resources/application.properties(或者 application.yml) 为应用配置文件resources/static/ 为静态文件根目标resources/WEB-INF/view/ 为视图文件根目标(支持多视图共存)//模板调试模式(或者加热加载模式):启动参数增加:-deubg=1public class AioApp { public static void main(String[] args) { XApp.start(AioApp.class, args); }}@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(); } }}@Datapublic class UserModel { private long id; private String name; private int sex; private String label;}@XControllerpublic class HomeController { @XMapping(value = "/", produces = "text/html;charset=utf-8") public String home(){ return "<a href='/helloworld'>/helloworld</a>"; }}@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; }}<!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>源码:demo12.solon_aio_http_mvc