更新時(shí)間:2020-10-21 18:03:03 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1878次
JSP(全稱JavaServer Pages)是由Sun Microsystems公司主導(dǎo)創(chuàng)建的一種動(dòng)態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn)。本文我們就來為大家介紹這門Java Web核心技術(shù)-JSP。
在 Servlet 組成的 MVC 中模型中,JSP 就代表著 View ,JSP控制著視圖顯示,一切邏輯在 Servlet(Controller) 和Model 中解決完畢后,轉(zhuǎn)發(fā)到 JSP 中生成視圖文件(HTML),大家也都知道在 Java 中寫 HTML 代碼是很麻煩的,因?yàn)橛泻芏噢D(zhuǎn)義字符需要轉(zhuǎn)義,所以人們想不如在 HTML 中寫 Java 算了,于是就誕生了JSP。
JSP部署于網(wǎng)絡(luò)服務(wù)器上,可以響應(yīng)客戶端發(fā)送的請(qǐng)求,并根據(jù)請(qǐng)求內(nèi)容動(dòng)態(tài)地生成HTML、XML或其他格式文檔的Web網(wǎng)頁,然后返回給請(qǐng)求者。JSP作為JavaWeb核心技術(shù)以Java語言作為腳本語言,為用戶的HTTP請(qǐng)求提供服務(wù),并能與服務(wù)器上的其它Java程序共同處理復(fù)雜的業(yè)務(wù)需求。
JSP將Java代碼和特定變動(dòng)內(nèi)容嵌入到靜態(tài)的頁面中,實(shí)現(xiàn)以靜態(tài)頁面為模板,動(dòng)態(tài)生成其中的部分內(nèi)容。JSP引入了被稱為“JSP動(dòng)作”的XML標(biāo)簽,用來調(diào)用內(nèi)建功能。另外,可以創(chuàng)建JSP標(biāo)簽庫,然后像使用標(biāo)準(zhǔn)HTML或XML標(biāo)簽一樣使用它們。標(biāo)簽庫能增強(qiáng)功能和服務(wù)器性能,而且不受跨平臺(tái)問題的限制。JSP文件在運(yùn)行時(shí)會(huì)被其編譯器轉(zhuǎn)換成更原始的Servlet代碼。JSP編譯器可以把JSP文件編譯成用Java代碼寫的Servlet,然后再由Java編譯器來編譯成能快速執(zhí)行的二進(jìn)制機(jī)器碼,也可以直接編譯成二進(jìn)制碼。
Jsp實(shí)際上可以看成是一種特殊的Servlet:
當(dāng)jsp頁面第一次被訪問時(shí),服務(wù)器會(huì)把jsp編譯成java文件(這個(gè)java其實(shí)是一個(gè)Servlet類);
然后再把java編譯成.class;
然后創(chuàng)建該類對(duì)象;
最后調(diào)用它的service()方法;
第二次請(qǐng)求同一jsp時(shí),直接調(diào)用service()方法。
在Tomcat的work目錄下可以找到j(luò)sp對(duì)應(yīng)的.java源代碼。
1、IE瀏覽器在訪問JSP頁面時(shí),Web服務(wù)器是如何調(diào)用并執(zhí)行一個(gè)jsp頁面的?(Servlet)
第一次:轉(zhuǎn)譯(翻譯) --> 編譯 --> 執(zhí)行
第二次:執(zhí)行
2、Web服務(wù)器在執(zhí)行jsp頁面時(shí),是如何把Jsp頁面中的html排版標(biāo)簽發(fā)送到客戶端的?
out.print("<......>"); 或者 out.write("<......>");
3、Jsp頁面中的java代碼服務(wù)器是如何執(zhí)行的?
服務(wù)器 --> .java文件 --> .class文件 --> 結(jié)果out回客戶端
4、Web服務(wù)器在調(diào)用jsp時(shí),會(huì)給jsp提供一些什么java對(duì)象(內(nèi)置對(duì)象)?
HttpSession、ServletConfig、ServletContent、request、response、out等等。
上面我們說了,JSP最后仍然會(huì)轉(zhuǎn)換為Java代碼,并且前面介紹的 scriplet 所定義的變量是局部變量,那么如果我想定義一個(gè)全局變量怎么辦呢,這就需要用到聲明,形如<%! int i=0;%> 注意這句代碼里就必須要有分號(hào)了。標(biāo)簽類不僅可以定義變量,也可以定義一個(gè)函數(shù)。由此我們推斷出JSP的聲明規(guī)則:
1.JSP中聲明的變量和方法對(duì)應(yīng)于Servlet中的實(shí)例方法和實(shí)例變量。這些將被同時(shí)請(qǐng)求該頁面的所有用戶所共享;
2.在使用變量或方法前須先定義(不是說聲明變量的位置在頁面中要處于使用變量的前面,而是指變量不聲明不能使用);
3.聲明的變量或方法的作用域?yàn)楫?dāng)前頁面或包含的頁面;
4.語句間以分號(hào)分隔。
以上就是對(duì)JavaWeb核心技術(shù)—JSP的簡單介紹,JSP技術(shù)本身還是很復(fù)雜的,簡單的一篇文章很難梳理清里面無數(shù)的知識(shí),想要深入了解的小伙伴可以觀看本站的Java入門到精通教程,靜下心來慢慢體會(huì)JSP技術(shù)的神奇和奧妙。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)