JSP
2016年7月7日
9:37
jsp:java server page JAVA服務器腳本語言
js頁面要被web容器翻譯成java類,按照servlet規範,所有jsp翻譯生成了的類必須實現HttpJspPage接口。而HttpJspPage是Servlet的子接口。所以所有jsp翻譯生成類也會實現Servlet,jsp本質是Servlet;jsp重在頁面顯示,而servlet重在於邏輯處理。
jsp引擎:是web容器編寫的類,負責將jsp頁面翻譯成java類。在web容器/conf/web.xml中進行註冊。
Jsp生命週期:1、由jsp引擎將jsp頁面翻譯成java代碼2、將java代碼編譯成class字節碼文件3、加載到容器4、由容器實例化對象5、初始化jspInit()6、調用_jspService()7、銷燬
Jsp網頁主要由元素(Element)和模版數據(TemplateDate)兩個部分組成:
- 模版數據是jsp的靜態部分, web容器不處理
- 元素是必須經由web容器解釋 ,元素是以xml做爲語法基礎,並且大小寫要一致
web容器支持兩種不同格式的jsp語法,普通格式和xml兼容格式
- 普通jsp語法是設計給開發者用的
- xml兼容jsp語法是設計用來容易被開發工具使用的
jsp腳本元素:
聲明:<%! %>定義jsp類的成員變量、靜態變量、和方法
腳本:<% %>豐富_jspService(),在腳本中定義的變量,全部是_jspService()方法的局部變量。
表達式:<%= %>豐富下劃線_jspService(),相當於out.print()向頁面輸出內容。注意,後邊不能加分號。
jsp註釋:
jsp註釋:<%-- --%>容器不翻譯,只在元代碼中可見,最爲安全
html註釋:<!-- -->容器翻譯到客戶端,最不安全。
java註釋:// /* */給java代碼書寫的註釋,只在服務器端可見。
page指令:
contentType:設置mime類型和編碼集
pageEncoding:設置編碼集,MIME類型默認爲text/html
import:導入jsp類中所用到的類。導入多個,中間以逗號分開。
session:默認爲true。表示訪問該jsp頁面時,產生會話對象。
errorPage:表示當前jsp頁面如果爆出了運行異常,則跳轉指定出錯頁面
isErrorPage:表示該jsp頁面爲出錯處理頁面。定義了exception隱式對象,接收異常對象。
過濾器概述:一箇中間web組件,用於過濾攔截源數據和目的數據之間的消息
EL表達式 ${userName} 可以獲得值,從小的作用域開始找值,找到即停止找值
${sessionScope.userName} 指定搜索的範圍,如果沒有值,不會去其它範圍查找
配置Filter
手動註冊: <filter>
<filter-name>index</filter-name>
<filter-class>util.IndexFilter</fil ter-class>
</filter>
<filter-mapping>
<filter-name>index</filter-name>
<url-pattern>/index.jsp</url-pattern> <%-- 針對路徑過濾--%>
<servlet-name>dd</servlet-name> <%-- 針對servlet過濾--%>
<dispatcher>FORWARD</dipathcher>
</filter-mapping>
註解註冊:@WebFilter("/*")
過濾器的類型:
1、REQUEST:表示直接請求,按請求路徑進行過濾。 默認方式
2、FORWARD: 表示通過內部轉發到達目標資源之前,進行過濾。
3、INCLUDE: 表示包含指定資源時,進行過濾。
4、ERROR:表示發生異常時,進行過濾。
過濾器鏈:當一個請求到達目標資源時,可能會經過多個過濾器。這就形成了過濾器鏈。過濾器鏈執行順序是:先經過<url-pattern>標籤,再經過<servlet-name>標籤。如果一個請求經過多個<url-pattern>標籤,按部署順序執行。