The minimum full MVC framework based on the development jdk comes httpserver
Complete MVC 410kb level: solon (83k) + jdkhttp (27k) + enjoy (227k) + snack3 (73k)
DEMO start-up time: 0.1s
- solon is a plug-in framework that provides MVC, IOC, AOP, comments, plug-in mechanism.
- jdkhttp jdk8 comes com.sun.net.httpserver packaging is made based, a complete http function.
- snack3 and provide json serialization support, but also small enough.
- enjoy hard to find less than its template engine, and also fast people want to cry.
(A) Create a new empty project maven
(B) adding a reference 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>
(C) add files
- 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
- // no configuration
Additional information:
//资源路径说明(不用配置)
resources/application.properties(或 application.yml) 为应用配置文件
resources/static/ 为静态文件根目标
resources/WEB-INF/view/ 为视图文件根目标(支持多视图共存)
//模板调试模式(或加热加载模式):
启动参数添加:-deubg=1
(D) Code
- 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
@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 "<a href='/helloworld'>/helloworld</a>";
}
}
- 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
<!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>
(E) run JdkApp.main ()
- Open your browser: http: // localhost: 8080 /
- Browser output: / the HelloWorld