The minimum full MVC framework based on the development jdk comes httpserver

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
(Vi) DEMO source

Source: demo11.solon_jdk_http_mvc

Guess you like

Origin www.cnblogs.com/noear/p/12103742.html