什么是JSP

PPT

視頻鏈接

一、什么是JSP

JSP全名為Java Server Pages,中文名叫java服務(wù)器頁面,其根本是一個簡化的Servlet設(shè)計,它是由Sun

Microsystems公司倡導(dǎo)、許多公司參與一起建立的一種動態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn)。JSP技術(shù)有點(diǎn)類似ASP技術(shù),它是在傳統(tǒng)的網(wǎng)頁HTML(標(biāo)準(zhǔn)通用標(biāo)記語言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標(biāo)記(tag),從而形成JSP文件,后綴名為(*.jsp)。

用JSP開發(fā)的Web應(yīng)用是跨平臺的,既能在Linux下運(yùn)行,也能在其他操作系統(tǒng)上運(yùn)行。

JSP將網(wǎng)頁邏輯(由java程序段和jap標(biāo)記執(zhí)行)與網(wǎng)頁設(shè)計和顯示(html標(biāo)簽)分離,與JavaServlet一樣,是在服務(wù)器端執(zhí)行的,就是在服務(wù)器端,JSP引擎解釋JSP標(biāo)識和腳本,生成所請求的內(nèi)容(生成內(nèi)容的邏輯被封裝在標(biāo)識和JavaBeans組件中,并且捆綁在腳本中,所有的腳本在服務(wù)器端運(yùn)行。),并且將結(jié)果以HTML(或者XML)頁面的形式(返回給客戶端的就是一個HTML文本)發(fā)送回瀏覽器,因此客戶端只要有瀏覽器就能瀏覽。

今天主要分享的三個問題:

1:JSP與JavaScript區(qū)別?

1、JSP屬于java的組件,使用的是java語言,所以JSP與javascript的區(qū)別就是JAVA與JAVASCRIPT的區(qū)別。

2、JavaScript是一種動態(tài)、弱類型、基于原型的語言,通過瀏覽器可以直接執(zhí)行;而Java(JSP)是面向?qū)ο蟮木幊陶Z言,必須先進(jìn)行編繹和連接等動作才可執(zhí)行。

3、JavaScript編寫在HTML文件中,直接查看網(wǎng)頁的原始碼,就可以看到JavaScript程式,所以沒有保護(hù),任何人都可以透過HTML文件復(fù)制程式;而Java應(yīng)用在網(wǎng)頁的程式稱為Java

Applet(Applet是[小程序]的意思),是和HTML文件分開的。

4、JavaScript的結(jié)構(gòu)較為自由松散,而Java和正統(tǒng)的編程語言一樣,結(jié)構(gòu)較為嚴(yán)謹(jǐn)。

5、JavaScript不具有讀寫檔案及網(wǎng)絡(luò)控制等功能,Java則提供了這些功能,但是JavaScript在網(wǎng)頁內(nèi)容的控制和互動性方面,比較方便快捷的。

6、javascript多運(yùn)行于客戶端,而java多運(yùn)行于服務(wù)器端。


2:jsp內(nèi)置的對象有哪些?

1、request對象:該對象封裝了用戶提交的信息,通過調(diào)用該對象相應(yīng)的方法可以獲取封裝的信息,即使用該對象可以獲取用戶提交信息。它是HttpServletRequest的實例。實例:不必直接傳送參數(shù)到JavaBean,你可以藉由請求對象來取得參數(shù)的值:<%Stringname=request.getParameter("name"); out.println(name); %>。

2、response對象:對客戶的請求做出動態(tài)的響應(yīng),向客戶端發(fā)送數(shù)據(jù)。

3、session對象

?(1)、什么是session:session對象是一個JSP內(nèi)置對象,它在第一個JSP頁面被裝載時自動創(chuàng)建,完成會話期管理從一個客戶打開瀏覽器并連接到服務(wù)器開始,到客戶關(guān)閉瀏覽器離開這個服務(wù)器結(jié)束,被稱為一個會話。當(dāng)一個客戶訪問一個服務(wù)器時,可能會在這個服務(wù)器的幾個頁面之間反復(fù)連接,反復(fù)刷新一個頁面,服務(wù)器應(yīng)當(dāng)通過某種辦法知道這是同一個客戶,這就需要session對象。  ? ? ? ? ? ? ? ??

(2)、session對象的ID:當(dāng)一個客戶首次訪問服務(wù)器上的一個JSP頁面時,JSP引擎產(chǎn)生一個session對象,同時分配一個String類型的ID號,JSP引擎同時將這個ID號發(fā)送到客戶端,存放在Cookie中,這樣session對象和客戶之間就建立了一一對應(yīng)的關(guān)系。當(dāng)客戶再訪問連接該服務(wù)器的其他頁面時,不再分配給客戶新的session對象,直到客戶關(guān)閉瀏覽器后,服務(wù)器端該客戶的session對象才取消,并且和客戶的會話對應(yīng)關(guān)系消失。當(dāng)客戶重新打開瀏覽器再連接到該服務(wù)器時,服務(wù)器為該客戶再創(chuàng)建一個新的session對象。   ? ??

(3)、session對象存在一定時間過期問題,所以存在session中的名值對會在一定時間后失去,可以通過更改session有效時間來避免這種情況。同時編程時盡量避免將大量有效信息存儲在session中,request是一個不錯的替代對象。

4、application對象

(1)、什么是application:  服務(wù)器啟動后就產(chǎn)生了這個application對象,當(dāng)客戶在所訪問的網(wǎng)站的各個頁面之間瀏覽時,這個application對象都是同一個,直到服務(wù)器關(guān)閉。但是與session不同的是,所有客戶的application對象都是同一個,即所有客戶共享這個內(nèi)置的application對象。

(2)、application對象常用方法:

A:public void setAttribute(String key,Object obj):將參數(shù)Object指定的對象obj添加到application對象中,并為添加的對象指定一個索引關(guān)鍵字。

B:public Object getAttribute(String key):獲取application對象中含有關(guān)鍵字的對象。

5、out對象:是一個輸出流,用來向客戶端輸出數(shù)據(jù)。out對象用于各種數(shù)據(jù)的輸出。在頁面中例如:<%out.print("'....'/>")%>

6、Page對象:就是指向當(dāng)前JSP頁面本身,有點(diǎn)象類中的this指針,它是java.lang.Object類的實例。JSP網(wǎng)頁本身,page對象是當(dāng)前JSP頁面轉(zhuǎn)換后的Servlet類的實例。從轉(zhuǎn)換后的Servlet類的代碼中,可以看到這種關(guān)系:Objectpage = this;在JSP頁面中,很少使用page對象。

7、config:jav jsp validator相關(guān)的錯誤ax.servlet. ServletConfig 的實例,該實例代表該JSP 的配置信息。常用的方法有g(shù)etInitParameter(StringparamNarne)及getInitParameternarnes() 等方法。事實上, JSP頁面通常無須配置,也就不存在配置信息。因此,該對象更多地在Servlet中有效。很少會在jsp頁面中使用這個對象

8、exception:java.lang.Throwable的實例,該實例代表其他頁面中的異常和錯誤。只有當(dāng)頁面是錯誤處理頁面,即編譯指令page的isErrorPage

屬性為true時,該對象才可以使用。常用的方法有g(shù)etMessage()和printStackTrace()等。

9、 pageContext:javax.servlet.jsp.PageContext的實例,網(wǎng)頁的屬性是在這里管理,該對象代表該JSP

頁面上下文,使用該對象可以訪問頁面中的共享數(shù)據(jù)。常用的方法有g(shù)etServletContext()和getServletConfig()等。

//使用pageContext設(shè)置屬性,該屬性默認(rèn)在page 范圍內(nèi)  pageContext. setAttribute("page" , "hello") ;

//使用request設(shè)置屬性,該屬性默認(rèn)在request 范圍內(nèi)  request. setAttribute ("request" , "hello");

//使用pageContext將屬性設(shè)置在request范圍中  pageContext.setAttribute("request2" , "hello" ,

pageContext.REQUEST_SCOPE);

//使用session將屬性設(shè)置在session范圍中  session.setAttribute("session" , "hello");

//使用pageContext將屬性設(shè)置在session范圍中  pageContext.setAttribute("session2" , "hello" ,

pageContext.SESSION_SCOPE);

//使用application將屬性設(shè)置在application范圍中  application. setAttribute ("app" , "hello") ;

//使用pageContext將屬性設(shè)置在application 范圍中  pageContext.setAttribute("app2" , "hello" ,

pageContext.APPLICATION_SCOPE)?


3:與JSP相同的視圖有什么?

與jsp配置視圖一樣,也有著別的視圖解析

其中velocity就是一類,Velocity是一種Java模版引擎技術(shù),該項目由Apache提出,由另外一種引擎技術(shù)Webmacro引深而來。那什么是官方的Velocity定義呢?Apache對它的定義是:一種基于Java的模板引擎,但允許任何人使用簡單而強(qiáng)大的模板語言來引用定義在Java代碼中的對象。

velocity與jsp有什么不同?

執(zhí)行方式不一樣: JSP是編譯執(zhí)行,Velocity是解釋執(zhí)行.如果JSP文件被修改了,對應(yīng)的java類就會重新編譯,而Velocity卻不需要,只是會重新生成一棵語法樹.

執(zhí)行效率不同:理論上來說,編譯執(zhí)行的效率明顯好于解釋執(zhí)行,在JSP中方法調(diào)用是直接執(zhí)行的,而在velocity中使用反射執(zhí)行的,從這方面來講JSP效率會明顯好于Velocity.如果JSP中有大量的jstl或者其他標(biāo)簽的話,就不一定了.

需要的環(huán)境支持不同:JSP的執(zhí)行依賴Servlet環(huán)境,他需要ServletContext,request,response這些類.而渲染Velocity不需要其他環(huán)境的支持,所以說velocity的應(yīng)用環(huán)境更廣.

如何配置velocity?

我們演示的是在springmvc中配置velocity,管理是使用maven

pom中引用jar包

配置視圖解析:


最后創(chuàng)建以.vm結(jié)尾的網(wǎng)頁即可使用模版語言


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,488評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,034評論 3 414
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,327評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,554評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,337評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,883評論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,975評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,114評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,625評論 1 332
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,555評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,737評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,244評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 43,973評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,615評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,343評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,699評論 2 370

推薦閱讀更多精彩內(nèi)容