日期:2014-05-16  浏览次数:20337 次

javascript模板添加nodejs支持

还未完全开发完,不过目前基本功能已经完成了,先记录一下


最新版开始支持nodejs, 支持类似于j2ee的开发方式, servlet, jsp等
webserver.js, 类似于jsp/servlet容器,可以运行js版的servlet, jsp
示例代码:

var os = require("os");
var fs = require("fs");
var http = require("http");
var URL = require("url");
var july = require("./webserver.js");

var servletContext = new july.ServletContext();
servletContext.home = "webapp";
servletContext.path = "/test1";

servletContext.set("test1", "/test1", function(request, response, servletChain){
    response.write("test1: Hello World !");
    servletChain.doChain(request, response);
});

servletContext.set("test2", "(/test1)|(/test2)", function(request, response, servletChain){
    response.write("test2: Hello World !");
});

servletContext.set("test3", "/test3", function(request, response, servletChain){

    var userList = [];

    for(var i = 0; i < 20; i++)
    {
        userList.push({"name": "tome" + i, "sex": 1, "birthday": new Date});
    }

    request.setAttribute("pageNum", 1);
    request.setAttribute("pageSize", 20);
    request.setAttribute("total", 373);
    request.setAttribute("userList", userList);
    request.getRequestDispatcher("/test.jsp").forward(request, response, servletChain);
});

var webApplication = new july.WebApplication();
webApplication.servletContext = servletContext;

var server = http.createServer(function(request, response){
    console.log("request.url: " + request.url);
    webApplication.dispatch(request, response);
});

server.listen(80, "localhost");
虚拟主机支持:

var webApplication = new july.WebApplication();
webApplication.servletContext = servletContext;

server.listen(80, "localhost");

var webServer = new july.WebServer();
var vistualHost = new july.VistualHost("(www\.mytest\.com)|(mytest\.com)");
vistualHost.add("/test", webApplication);

var server = http.createServer(function(request, response){
    console.log("request.url: " + request.url);
    webServer.dispatch(request, response);
});

目前基本功能已经完成,文件扫描功能正在开发。
一个jsp页面一旦被编译将被缓存,不再编译,因此如果改动,目前只能重启服务器。
所以下一步需要开发文件扫描功能,如果改动,将重新加载该文件。

静态文件服务功能也未添加。


目前支持的功能

1.  一个server下可以添加多个虚拟主机,可以给每个虚拟主机设定域名,多应用绑定,一个虚拟主机下可以添加多个应用

2.  jsp/servlet支持, 可以采用类似servlet/jsp的方式开发,servlet作为控制层,jsp作为展现层