1. 程式人生 > >JSP 學習總結---學習筆記

JSP 學習總結---學習筆記

JSP 學習總結---學習筆記

什麽是JSP

1)為什麽說,Servlet是一個動態Web開發技術呢?
Servlet是基於服務端的一種動態交互技術,
HttpServletRequest表示客戶端到服務端的對象
HttpServletResponse表示服務端到客戶端的對象
2)JSP是SUN公司開發的一個基於服務端的一種動態WEB開發技術
3)JSP的代碼結構/內容=HTML+JSP所有元素內容
4)在IDE工具中,開發JSP,pageEncoding有二層含義:
a)指明當前JSP中的中文采用什麽方式編碼(如果在IDE工具外)
b)指明當前JSP頁面保存時采用什麽方式編碼
5)項目中,JSP最佳實踐模式:
Servlet:適合控制器

Jsp:適合顯示
JavaBean:模型

*2 JSP工作原理

1)Web容器根據客戶端訪問的資源類別(Web容器會根據資源的第一行代碼確定),如果你訪問的是JSP資源,就交由JSP引擎處理
如果你訪問的是Servlet資源,就交由Servlet引擎處理
2)如果是JSP資源,JSP引擎會將其翻譯成Servlet資源,傳入相關的對象,如果是靜態資源,以out.write()形式輸出,如果是動態 資源,以out.print()形式輸出
3)此時JSP引擎在翻譯正確後,將其輸出給Servlet引擎,當作Servlet處理。
4)如果再次訪問同一個date.jsp文件,翻譯工作依然進行,Servlet引擎工作可以減化,所以這是為會麽第N次較第1次快的原因

3 JSP語法

1)JSP模版元素
模版元素就是HTML中的靜態內容,即<body>,<table>,<form>標簽。。。

2)JSP表達式
a)語法:<%="字符串變量或表達式"%>
b)結束無分號
c)默認輸出到瀏覽器

3)JSP腳本片斷
a)語法:<% ...java代碼; %>
b)腳本片斷中的註釋符號與java代碼一致
註意:JSP修改後,無需重新部署,直接刷新,Web容器會自動比較新舊二個版本的JSP
c)多個JSP腳本片斷中定義的變量,本質是_jspService()方法中的局部變量,可以訪問
4)JSP聲明

a)語法:<%! ...java代碼 %>
b)JSP聲明的變量或方法,會成為Servlet的實例變量或實例方法或普通方法
c)JSP腳本片斷中不能定義局部方法,方法只能定義在JSP聲明中

5)JSP註釋

1)語法:<%-- 註釋的內容 --%>
    2)對於HTML註釋來說,JSP引擎會將其翻譯成servlet內容,
  對於JSP註釋來說,JSP引擎不會將其翻譯成servlet內容
    3)註釋不能嵌套使用

6)JSP指令
1)指令是程序員控制JSP引擎做什麽的依據
2)有三類:
a)page
b)include
c)tablib
3)page指令的屬性有
language="指明JSP支持的語言,默認為java語言"
import="當前JSP頁面中,需要導入的包,其中import可以寫多次"
session="true表示需要服務器創建session/false不需要服務器創建session",默認true
buffer="none|8kb|sizekb"JSP輸出使用的緩存大小,默認8kb
autoFlush="true表示當緩存滿時,web容器是自動刷新到客戶端/false需要手工刷新到客戶端",默認true
isThreadSafe="true表示web服務器確保線程安全/false不確保線程安全",默認true
info="text"表示jsp的相關描述信息,可以通過getServletInfo()取得該jsp的信息
errorPage="當前jsp頁面出錯後,轉發到的目標頁面"
isErrorPage="true"(當某個jsp頁面有該屬性時,web容器會自動創建exception對象
上述異常處理屬於局部異常處理
在web.xml文件:
<error-page>
<error-code>500</error-code>
<location>/s_500.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.NumberFormatException</exception-type>
<location>/s1_500.jsp</location>
</error-page>
上述異常處理屬於全部異常處理
如果全局中有code又有type,此時二者同時顯示
當全局和局部異常同時出現時,局部異常優先
pageEncoding="UTF-8"
前提在IDE工具中
a)JSP頁面的中文采用UTF-8方式編碼
b)JSP保存時采用UTF-8方式編碼
c)指示瀏覽器以UTF-8方式查看
contentType="text/html;charset=UTF-8"
isELIgnored="false表法JSP引擎不忽略EL表達式語言/true表法JSP引擎忽略EL表達式語言"

9)如何查找JSP頁面中的錯誤

4 JSP出錯後處理方法

5 M(Javabean)V(Jsp)C(Servlet)模式

6 @include指令[靜態包含]

1)include指令包含多個JSP頁面,最後JSP引擎只翻譯總JSP頁面,即index.jsp頁面
2)include指令包含多個JSP頁面,那麽被包含的JSP頁面原封不動的進入總JSP頁面,即index.jsp頁面,造成HTML結構非常混亂
3)include指令包含多個JSP頁面,多個JSP最終會翻譯成一個Servlet,即index_jsp.java頁面

*7 jsp九大隱式/內置對象

1)request
2)response
3)session
    訪問jsp頁面時,默認web服務器創建session
    訪問servlet時,必須通過request.getSession()才能創建session
    在轉發和重定向情況下,session域不會銷毀
4)application=ServletContext對象  
5)config:取得jsp在web.xml文件中的映射信息
6)exception:該對象只能在<%@isErroPage="true"%>的情況下,容器才會創建,否則容器不予創建
7)out:out的類型是JspWriter,它是具體緩存功能的PrintWriter對象
8)pageContext: 表示Jsp行運過程中的環境對象
  a)能夠取得其它8個內置對象
  b)具有轉發和包含的功能 
  c)域對象
[pageContext/request/session/application]
9)page

JSP 學習總結---學習筆記