java web 最小框架_基于jdk自带httpserver开发的最小完整MVC框架

基于jdk自带httpserver开发的最小完整MVC框架

410kb级的完整MVC:solon(83k) + jdkhttp(27k) + enjoy(227k) + snack3(73k)

DEMO启动时间:0.1s

solon 是一个插件框架,提供MVC,IOC,AOP,注解,插件机制。

jdkhttp 基于jdk8自带com.sun.net.httpserver封装而成,有完整的http功能。

snack3 提供json和序列化支持,也足够小。

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

(一)新建一个 maven 空项目

(二)添加 maven 引用

org.noear

solon-parent

1.0.9

org.noear

solon.boot.jdkhttp

org.noear

solon.serialization.snack3

org.noear

solon.view.enjoy

(三)添加文件

java/webapp/controller/HelloworldController.java

java/webapp/controller/HomeController.java

java/webapp/model/UserModel.java

java/webapp/widget/FooterTag.java

java/webapp/JdkApp.java

resources/static/jinjin.htm

resources/WEB-INF/view/helloworld.shtm

//不用配置

补充说明:

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

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

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

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

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

启动参数添加:-deubg=1

(四)代码

webapp/JdkApp.java

public class JdkApp {

public static void main(String[] args) {

XApp.start(JdkApp.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()

(五)运行 JdkApp.main()

(六)DEMO源码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值