- JSP從零開始學(xué)(視頻教學(xué)版)
- 劉鑫編著
- 1353字
- 2021-03-12 12:31:55
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程序段。
- UI設(shè)計基礎(chǔ)培訓(xùn)教程
- DB2 V9權(quán)威指南
- Google Flutter Mobile Development Quick Start Guide
- Learning ROS for Robotics Programming(Second Edition)
- Selenium Design Patterns and Best Practices
- Learning ArcGIS Pro
- Data Analysis with Stata
- MATLAB for Machine Learning
- Internet of Things with ESP8266
- C陷阱與缺陷
- AV1視頻編解碼標(biāo)準(zhǔn):原理與算法實現(xiàn)
- Android編程權(quán)威指南(第4版)
- Java EE項目應(yīng)用開發(fā)
- 少兒編程輕松學(xué)(全2冊)
- Linux Networking Cookbook