官术网_书友最值得收藏!

1.4 用JSP進(jìn)行網(wǎng)頁開發(fā)

上一節(jié)簡單介紹了Web開發(fā)的一些背景知識,讀者已經(jīng)了解了Web訪問的基本原理,HTTP超文本傳輸協(xié)議,靜態(tài)網(wǎng)頁與動態(tài)網(wǎng)頁的區(qū)別,以及主流的瀏覽器和Web服務(wù)器,本節(jié)將介紹JSP的基本概念、執(zhí)行過程等,讓讀者了解JSP是什么,能做些什么。

1.4.1 JSP與其他語言相比的優(yōu)勢

JSP可以看作是Java Servlet的一種擴(kuò)展,JSP在使用前必須被編譯為Servlet,也就是Java類,然后被調(diào)用執(zhí)行,Servlet所產(chǎn)生的Web頁面是不能包含在HTML標(biāo)簽中的,因為它離不開Java類文件的支持。隨著學(xué)習(xí)的深入,使用JSP將帶給用戶很多明顯的優(yōu)點:

(1)開發(fā)簡單方便

在JSP中的編輯跟編寫HTML文件基本一樣,在處理表單方面極為方便。設(shè)置HTTP報頭,JSP同樣提供了豐富的方法。使得JSP開發(fā)者在編寫通用功能時很便捷,就能有更多的時間花費(fèi)在業(yè)務(wù)邏輯上。

(2)跨平臺

Java本身就有跨平臺的特性,因此JSP程序可以在支持Java的平臺上開發(fā)運(yùn)行。顯然這對平臺移植極其有利。當(dāng)JSP在更換服務(wù)平臺時,如若不涉及數(shù)據(jù)庫等相關(guān)操作,幾乎可以不做任何變動就能完成服務(wù)平臺的遷移。當(dāng)需要更換Web服務(wù)器時,JSP同樣可以做到不修改或者少量修改就能在新的Web服務(wù)器中編譯、運(yùn)行。

(3)高效率和高性能

上文提到過,JSP可以是Servlet的擴(kuò)展,因此Java虛擬機(jī)為每一個請求創(chuàng)建一個單獨(dú)的線程,而不是進(jìn)程,如此系統(tǒng)能很快地處理請求。同時JSP只會被編譯一次,只是在首次的加載時需要編譯,這樣加快了系統(tǒng)的響應(yīng)速率。當(dāng)一個請求處理結(jié)束之后,相關(guān)的JSP映射的Java類并不會從內(nèi)存中刪除,會被保留在內(nèi)存中,當(dāng)下次同樣的請求發(fā)生時,系統(tǒng)會提供更快的響應(yīng)速度。

(4)低成本

眾所周知Java是開源的開發(fā)語言,JSP也是基于Java的開源環(huán)境開發(fā)的動態(tài)網(wǎng)頁技術(shù),所以這就省去了商業(yè)的付費(fèi)項目。再有,開發(fā)者可以從眾多的Java IDE中選擇一款適合自己的開發(fā)工具來進(jìn)行項目研發(fā),當(dāng)然了,也可以直接用文本編輯器直接編寫,只是這樣比較耗時而且易出錯。還有許多的商業(yè)軟件可以使用,但是通常來說使用JSP開發(fā)總成本比采用其他技術(shù)要低廉些。

綜上所述,采用JSP動態(tài)網(wǎng)頁技術(shù)是目前Web開發(fā)者的最佳選擇。

1.4.2 JSP網(wǎng)頁的執(zhí)行順序

在編寫JSP程序時,要了解它的執(zhí)行順序,這樣對于后續(xù)的學(xué)習(xí)會有很大的幫助。JSP程序的執(zhí)行過程大致如下。

首先,客戶端向Web服務(wù)器提出請求,然后JSP引擎負(fù)責(zé)將頁面轉(zhuǎn)化為Servlet,此Servlet經(jīng)過虛擬機(jī)編譯生成類文件,然后再把類文件加載到內(nèi)存中執(zhí)行。最后,由服務(wù)器將處理結(jié)果返回給客戶端。整個流程如圖1.3所示。

圖1.3 JSP執(zhí)行順序

JSP頁面代碼會被編譯成Servlet代碼,所以從執(zhí)行效率上說肯定是沒有Servlet快的,但并不是每一次都需要編譯JSP頁面。當(dāng)JSP第一次被編譯成類文件后,重復(fù)調(diào)用該JSP頁面時,JSP引擎發(fā)現(xiàn)該JSP頁面沒有被改動過,那么就會直接使用編譯后的類文件而不會再次編譯成新的Servlet。當(dāng)然,如果頁面被修改過,則需要重新加載編譯。

1.4.3 實例:第一個Hello JSP網(wǎng)頁

本章因為只是熟悉網(wǎng)頁的基本機(jī)構(gòu)和瀏覽器瀏覽網(wǎng)頁的原理,還沒有搭建JSP開發(fā)的基礎(chǔ)環(huán)境,所以這里只給一個簡單的例子,讀者先仔細(xì)看看,等搭建完環(huán)境后,再來分析具體每段代碼的功能。

下面是JSP網(wǎng)頁的一個簡單例子,功能是循環(huán)輸出1~10的輸出結(jié)果,代碼如下:

      -----------------------Index.jsp--------------------------
      01   <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
      02   <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      03   <html>
      04    <head>
      05      <title>JSP簡單例子</title>
      06    </head>
      07    <body>
      08      <%
      09          int count=0;
      10          for(int i=1; i<10; i++)
      11          {
      12            count+=i;
      13          }
      14         out.print("1到10的相加結(jié)果:"+count);
      15       %>
      16    </body>
      17   </html

提示

第1行中,pageEncoding標(biāo)簽可以設(shè)定字符類型,在工作中這一行會自動生成。第8~15行為Java代碼。

該程序主要作用是利用JSP輸出1~10的和,其中代碼是由簡單的HTML代碼和JSP表達(dá)式構(gòu)成,JSP表達(dá)式中是一段Java程序段。

主站蜘蛛池模板: 永登县| 芷江| 镇坪县| 内江市| 新疆| 阿克陶县| 镇赉县| 平武县| 柞水县| 桑日县| 灯塔市| 石景山区| 滨海县| 万年县| 韶山市| 华阴市| 黔东| 台北市| 克山县| 肃宁县| 大宁县| 绿春县| 五指山市| 平潭县| 安徽省| 玉田县| 崇明县| 乌兰浩特市| 连平县| 诸城市| 遂川县| 临泽县| 滨州市| 兴安县| 南城县| 突泉县| 元阳县| 湄潭县| 东丰县| 台山市| 于田县|