咱們的整個討論都忽略了服務器端編程的問題。若是向服務器發出一個請求,會發生什麼事情?大多數時候 的請求都是很簡單的一個「把這個文件發給我」。瀏覽器隨後會按適當的形式解釋這個文件:做爲HTML 頁、 一幅圖、一個Java 程序片、一個腳本程序等等。向服務器發出的較複雜的請求一般涉及到對一個數據庫進行 操做(事務處理)。其中最多見的就是發出一個數據庫檢索命令,獲得結果後,服務器會把它格式化成HTML 頁,並做爲結果傳回來(固然,假如客戶經過 Java 或者某種腳本語言具備了更高的智能,那麼原始數據就能 在客戶端發送和格式化;這樣作速度能夠更快,也能減輕服務器的負擔)。另外,有時須要在數據庫中註冊 本身的名字(好比加入一個組時),或者向服務器發出一份訂單,這就涉及到對那個數據庫的修改。這類服 務器請求必須經過服務器端的一些代碼進行,咱們稱其爲「服務器端的編程」。在傳統意義上,服務器端編 程是用 Perl 和 CGI腳本進行的,但更復雜的系統已經出現。其中包括基於Java 的 Web服務器,它容許咱們 用Java進行全部服務器端編程,寫出的程序就叫做「小服務程序」(Servlet)。數據庫
1 package Com.TomTest; 2 3 4 interface Computerable { 5 public double 求面積(); 6 } 7 class 梯形 implements Computerable { 8 double a,b,h; 9 梯形(double a,double b,double h) { 10 this.a=a; 11 this.b=b; 12 this.h=h; 13 } 14 public double 求面積(){ 15 return((1/2.0)*(a+b)*h); 16 } 17 } 18 class 圓形 implements Computerable{ 19 double r; 20 圓形(double r) { 21 this.r=r; 22 } 23 public double 求面積(){ 24 return(3.14*r*r); 25 } 26 } 27 class 堆{ 28 Computerable 底; 29 double 高; 30 堆(Computerable 底,double 高) { 31 this.底=底; 32 this.高=高; 33 } 34 void 換底(Computerable 底) { 35 this.底=底; 36 } 37 public double 求體積(){ 38 return (底.求面積()*高)/3.0; 39 } 40 } 41 public class TomTest_33 { 42 public static void main(String args[]){ 43 堆 zui; 44 Computerable bottom; 45 bottom=new 梯形(2.0,7.0,10.7); 46 System.out.println("梯形的面積"+bottom.求面積()); 47 zui=new 堆(bottom,30); 48 System.out.println("梯形底的堆的體積"+zui.求體積()); 49 bottom=new 圓形(10); 50 System.out.println("半徑是10的圓的面積"+bottom.求面積()); 51 zui.換底(bottom); 52 System.out.println("圓形底的堆的體積"+zui.求體積()); 53 } 54 }