什么是JSP

PPT

視頻鏈接

一、什么是JSP

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

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

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

JSP將網(wǎng)頁邏輯(由java程序段和jap標記執(zhí)行)與網(wǎng)頁設計和顯示(html標簽)分離,與JavaServlet一樣,是在服務器端執(zhí)行的,就是在服務器端,JSP引擎解釋JSP標識和腳本,生成所請求的內容(生成內容的邏輯被封裝在標識和JavaBeans組件中,并且捆綁在腳本中,所有的腳本在服務器端運行。),并且將結果以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)是面向對象的編程語言,必須先進行編繹和連接等動作才可執(zhí)行。

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

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

4、JavaScript的結構較為自由松散,而Java和正統(tǒng)的編程語言一樣,結構較為嚴謹。

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

6、javascript多運行于客戶端,而java多運行于服務器端。


2:jsp內置的對象有哪些?

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

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

3、session對象

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

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

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

4、application對象

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

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

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

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

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

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

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

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

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

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

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

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

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

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

pageContext.REQUEST_SCOPE);

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

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

pageContext.SESSION_SCOPE);

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

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

pageContext.APPLICATION_SCOPE)?


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

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

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

velocity與jsp有什么不同?

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

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

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

如何配置velocity?

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

pom中引用jar包

配置視圖解析:


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


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容