javaweb----JSP技術

JSP運行原理

1.客戶端訪問zhangpeng.jsp

2.服務器讀取zhangpeng.jsp內容到內存

3.服務器根據zhangpeng.jsp內容生成servlet程序--存在tomcat/work下

4.servlet編譯運行

圖解:


JSP中的代碼都會被翻譯至servlet中的_jspService()方法中

翻譯規則:

1.JSP中HTML翻譯成out.write()

2.JSP中java代碼不會被翻譯,會原樣不動的放進_jspService()中

JSP程序的翻譯過程


JSP腳本元素

1.聲明<!%%>   將被翻譯成servlet類成員變量和方法以及內部類等

2.表達式<%=%>  用於向頁面輸出內容  將被翻譯成servlet的out.print()方法

3.代碼塊 <%%>  可以編寫任何的java程序。代碼塊可以和HTML嵌套使用

JSP和servlet的關係

JSP和servlet都是動態網頁技術,只是分工不同。

有人恰當的比喻:servlet就是嵌入HTML的java文件,JSP就是嵌入java的HTML文件

JSP技術的企業最佳實踐

生成HTML內容


JSTL,全稱(jsp standard Taglib Liberary)  JSP標準標籤庫

JSTL有什麼用?

簡化頁面<%%>與HTML嵌套寫法,說白了就是簡化JSP開發。


--------------------------------------------------------------------------------------------------------------------------------

JSP基本語法

JSP腳本元素

JSP頁面註釋

JSP指令元素

JSP內置對象

JSP標籤

JSP四種數據範圍


JSP中的pageEncoding和contentType的作用

pageEncoding

在編寫階段,當我們編寫完jsp文件時,點擊"save"時,jsp將保存在硬盤,pageEncoding就是JSP文件

保存在硬盤上的編碼格式。

contentType

用來對servlet生成的HTML頁面進行編碼,同時指定瀏覽器查看內容的編碼。

圖解:


錯誤友好頁面的設置

當頁面發生錯誤時不應該給用戶看到含有代碼的錯誤頁面,應該給一個友好的頁面。

通過errorPage 和 isErrorPage控制JSP頁面發生錯誤時的跳轉

errorPage在發生錯誤的jsp中設置發生錯誤時跳轉的頁面

isErrorPage設置true ,就是錯誤頁面本身,只有設置了這個屬性,才能使用jsp的內置對象

excetion打印出錯誤信息。

這種方式的配置只能處理一個頁面的錯誤,處理多個頁面的時候需要每個頁面都要

做如上的配置。

實際開發中,通常用這個方法。

web.xml中配置

<error-page>

<error-code>500</error-code>

<location>/zhangpeng/500.jsp</location>

</error-page>

<error-page>

<error-code>404</error-code>

<location>/zhangpeng/404.jsp</location>

</error-page>

這種方式能處理所有頁面的錯誤,同時它不僅可以處理500,還可以處理404.


JSP 的include指令

用來靜態包含頁面---將頁面的公共部分提取出來,通過include完成頁面的佈局

include包含目標頁面的整個內容,被包含頁面不需要一個完整的HTML,只要編寫HTML片段就可以了,同時保留它的編碼。

靜態包含的原理:

index.jsp-------翻譯------index_jsp.java

在翻譯的過程中,遇到這句時<% include file="/demo6/logo.jsp"%>.翻譯logo.jsp將p翻譯後的servlet內容嵌入到index_jsp中。

靜態包含:包含include中的文件的源代碼,將兩者的源代碼合併至一起,結果就是生成一個servlet。

動態包含的原理:



taglib指令,用來在jsp中引用標籤庫文件的。

JSP9大內置對象

JSP Servlet

page ---this(HttpServlet)     代表當前jsp生成的servlet對象

pageContext   ---PageContext 頁面上下文對象  1.向page範圍存儲數據  2..可以獲得另外8個內置對象

request ---HttpServletRequest

session ---HttpServletSession

application ---ServletContext

response ---HttpServletResponse

out ---JspWriter

config ---ServletConfig

exception ---Throwable


應用上下文:可以獲取應用的所有信息

頁面上下文可以獲取頁面中的所有信息

servlet上下文可以獲取servlet生命週期中的所有信息


out對象的原理,和response.getWriter()有什麼區別

兩者都是向瀏覽器輸出內容

但是後者輸出的內容在前者的內容之前





什麼是內置對象?

JSP翻譯爲servlet代碼時候,有些對象默認在servlet中已經創建好的,這類對象可以直接在JSP中使用。











發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章