程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> JSP WEBServer的實現原理

JSP WEBServer的實現原理

編輯:關於JSP

因為要實現一個WebServer,寫完了一個簡單的WebServer後突發奇想,何不實現一個jsp(SUN企業級應用的首選) 的WebServer呢?
有了這個想法後,就開始考慮jsp(SUN企業級應用的首選)的實現原理,其實jsp(SUN企業級應用的首選)的實現也很簡單,說白了就是將其轉換成一個Java文件,再對這個Java文件進行編譯,生成類文件,接著再由服務器使用這個類文件。從總體上分,可以將jsp(SUN企業級應用的首選)文件的內容劃分為兩大塊,即輸出語句和控制語句。
至於jsp(SUN企業級應用的首選)文件中的HTML語句就是我們要輸出的內容,而jsp(SUN企業級應用的首選)標簽則是控制HTML語句的輸出。例如,有一個jsp(SUN企業級應用的首選)文件的內容如下:
<html>
<body>
<%! java.util.Date date=new java.util.Date();
       int  size=10;
%>
<%  for(int i=0;i<size;i++){ %>
<h1>Hello<%= i %>
</h1>
<% } %>
<%=date%>
</body>
</html>
這個jsp(SUN企業級應用的首選)文件將產生如下效果:

Hello 0

Hello 1

Hello 2

Hello 3

Hello 4

Hello 5

Hello 6

Hello 7

Hello 8

Hello 9

Thu Dec 16 18:30:21 CST 2004

那麼,現在的問題就是我們就生成什麼樣的java文件,才能獲得正確的結果。
首選寫一個Interface,該接口就是我們要生成的JAVA文件將要繼承的接口。其定義如下:
package httpserver;
import java.net.Socket;
import java.io.IOException;

public interface jsp(SUN企業級應用的首選)2HtmlInterface{
 void printHtml(Socket socket)throws IOException;
}

接下來就寫一個類JavaServerPage負責解析jsp(SUN企業級應用的首選)文件,在這個類中將會動態生成JAVA文件,並編譯生成一個可用類。再調用這個類文件的printHtml(socket)  方法,將響應信息寫給客戶端(其中socket為服務器accept返回的套接口。這樣客戶就能看到jsp(SUN企業級應用的首選)正確運行的結果。這個解析JavaServerPage的類框架如下:
public class JavaServerPage{
    public JavaServerPage(File file,Socket socket)throws Exception{}    //file為客戶端請求的一個jsp(SUN企業級應用的首選)文件
                                                                                                            //socket為服務器同客戶端聯接的套接口
    public void writeReponse() {                                                            //這個函數將負責根據指定的jsp(SUN企業級應用的首選)文件根據某種
         GeneratJava();                                                                            //動態生成java文件並將編譯, 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved