非阻塞式服務器:Web.Java

jopen 10年前發布 | 32K 次閱讀 Web.Java 應用服務器

輕量級,無依賴

你是不是受夠了J2EE的龐大臃腫?讓Tomcat,GlassFlish等等應用服務器去死吧。Web.Java沒有任何依賴,只要安裝JDK7及以上版本就可以獨立運行。不需要安裝其他任何的東西。當然,如果你要使用數據庫需要需要相應的JDBC。如果你想,你可以使用任何你想使用的擴展。

非阻塞,高性能

Web.Java是一個高性能,輕量級的非阻塞式服務器,而且速度相當快。
為了能更好的提高性能,Web.Java把HTTP服務區分應用和文件服務兩種。

  • Web.Java 整體采用Reactor模式用來接收或響應HTTP請求(原理同Nginx)。
  • 應用服務采用了Reactor來響應請求。
  • 文件服務采用了Proactor模式,并搭配304狀態使用,能極大的提高靜態文件的相應速度,且不影響整體。

模板引擎

  • 簡單的標簽:只需要記住{{}}標簽用于輸出變量,{%%}標簽用于if,for 等操作。
  • 可以繼承的模版:頁面的布局,HTML文件的復用等問題,通過模版繼承機制可以得到解決。用{%extends xx%}關鍵字實現繼承。
  • 高性能:Web.Java會自動把Html文件,編譯成Java文件。應用到生產環境的時候,速度等同于Java的硬輸出。且在DEBUG模式下,會動態的加載模板文件,而不需要重啟進程。

靈活漂亮的URL

隨便打開幾個J2EE的網站,我就不想吐槽那個URL了。Web.Java使用正則表達式來配置URL,這樣做可以提供足夠強大和靈活的URL模式。比如像用“/Article/23”想獲取文章的ID可以這樣來配置URL

HttpServer.setPATH("/Article/(\\d+)",new ArticleHandler());  

//ArticleHandler.java文件 get方法 
public void get(String id){  
  //獲取ID進行其他操作
  ……  
}  

這樣在ArticleHandler中對應的get或者post方法中就會獲取相應的參數。當然,你可以任意的使用正則表達式來配置你的URL

簡單易用的數據庫操作

Options.DBURL = "jdbc:mysql://localhost:3306/test";
Options.DBDriver = "com.mysql.jdbc.Driver";
Options.DBUser = "root";
Options.DBPassword = "123456";

配置好數據庫信息后,可以直接在Handler中使用DB中的靜態方法進行操作。
具體的操作在DB中有說明。當然如果你想,可以使用任何你想用的ORM。當然,希望你能直接使用SQL,不想解釋為什么。

Hello World!

看名字就知道了。讓我們開始使用Web.Java吧!
把源碼包放到你的項目目錄下面。然后在main方法中加入

HttpServer.setPATH("/", new IndexHandler());
System.out.println("Listen 8080");
HttpServer.init(8080);

IndexHandler.java

public void get() {
    this.writer("Hello World!");
}

現在Run it 瀏覽器打開就會看到你Writer的內容了。

項目主頁:http://www.baiduhome.net/lib/view/home/1416476430898

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!