基于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 引用
<dependencies> <dependency> <groupId>org.noear</groupId> <artifactId>solon.boot.jdkhttp</artifactId> <version>1.0.4</version> </dependency> <dependency> <groupId>org.noear</groupId> <artifactId>solon.serialization.snack3</artifactId> <version>1.0.4</version> </dependency> <dependency> <groupId>org.noear</groupId> <artifactId>solon.view.enjoy</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/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("<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>(五)运行 JdkApp.main()
- 浏览器打开:http://localhost:8080/
- 浏览器输出:<a href=’/helloworld’>/helloworld</a>
(六)DEMO源码
源码:demo11.solon_jdk_http_mvc
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 基于jdk自带httpserver开发的最小完整MVC框架
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 基于jdk自带httpserver开发的最小完整MVC框架