一鹏浅、JSP概述
1辟灰、JSP:Java Server Pages(運行在服務(wù)器端的頁面)。就是Servlet篡石。
學(xué)習(xí)JSP學(xué)好的關(guān)鍵:時刻聯(lián)想到Servlet即可芥喇。
2、JSP的原理
JSP會被Tomcat翻譯成一個Servlet凰萨。該Servlet在Tomcat\work\catalina\locahot\day09\....
3继控、JSP械馆、Servlet開發(fā)的最佳實踐:
Servlet:一般作為控制組件,處理業(yè)務(wù)邏輯
JSP:一般作為顯示組件武通,顯示數(shù)據(jù)
二霹崎、JSP的語法
1、JSP的模板元素:(先寫HTML)
就是JSP中的那些HTML標(biāo)記
作用:頁面布局和美化
2冶忱、JSP的Java腳本表達(dá)式:
作用:輸出數(shù)據(jù)到頁面上
語法:<%=表達(dá)式%>(實際上就是調(diào)用輸出流打印到頁面上)
3尾菇、JSP中的Java腳本片段:(實際開發(fā)中,應(yīng)做到JSP中不能出現(xiàn)一行Java腳本片段)
作用:書寫Java代碼邏輯
語法:<%
語句1;
語句2;
%>
原理:其中的語句會原封不動的被服務(wù)器翻譯到對應(yīng)的Servlet的service方法中囚枪。
4派诬、JSP的聲明:(了解其原理)
作用:定義類的成員
語法:<%!
你的Java代碼
%>
5、JSP的注釋:
作用:注釋Java腳本代碼
語法:<%--這是注釋--%>
三链沼、JSP的指令:給JSP引擎用的(服務(wù)器用的)
基本的語法格式:<%@ 指令名稱 屬性1="值1" 屬性2="值2" ....%>
作用:告訴服務(wù)器默赂,該如何處理JSP中除了指令之外的內(nèi)容的。
3.1page
作用:定義JSP頁面的各種屬性
屬性:
language:指示JSP頁面中使用腳本語言括勺。默認(rèn)值java缆八,目前只支持java。
extends:指示JSP對應(yīng)的Servlet類的父類疾捍。不要修改奈辰。
*import:導(dǎo)入JSP中的Java腳本使用到的類或包。(如同Java中的import語句)
JSP引擎自動導(dǎo)入以下包中的類:
javax.servlet.*
javax.servlet.http.*
javax.servlet.jsp.*
注意:一個import屬性可以導(dǎo)入多個包乱豆,用逗號分隔奖恰。
*sessioin:指示JSP頁面是否創(chuàng)建HttpSession對象。默認(rèn)值是true咙鞍,創(chuàng)建
*buffer:指示JSP用的輸出流的緩存大小.默認(rèn)值是8Kb。
autoFlush:自動刷新輸出流的緩存趾徽。
isThreadSafe:指示頁面是否是線程安全的(過時的)续滋。默認(rèn)是true。
true:不安全的孵奶。
false:安全的疲酌。指示JSP對應(yīng)的Servlet實現(xiàn)SingleThreadModel接口。
*errorPage:指示當(dāng)前頁面出錯后轉(zhuǎn)向(轉(zhuǎn)發(fā))的頁面了袁。
目標(biāo)頁面如果以"/"(當(dāng)前應(yīng)用)就是絕對路徑朗恳。
配置全局錯誤提示頁面:
web.xml
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>
*isErrorPage:指示當(dāng)前頁面是否產(chǎn)生Exception對象。
*contentType:指定當(dāng)前頁面的MIME類型载绿。作用與Servlet中的response.setContentType()作用完全一致
*pageEncoding:通知引擎讀取JSP時采用的編碼(因為要翻譯)
還有contentType屬性的作用粥诫。
*isELIgnored:是否忽略EL表達(dá)式。${1+1}崭庸。默認(rèn)值是false怀浆。
page指令最簡單的使用方式:<%@ page pageEncoding="UTF-8"%>
3.2include(靜態(tài)包含,開發(fā)中能用靜的不用動的)
作用:包含其他的組件谊囚。
語法:<%@include file=""%>file指定要包含的目標(biāo)組件。路徑如果以"/"(當(dāng)前應(yīng)用)就是絕對路徑执赡。
原理:把目標(biāo)組件的內(nèi)容加到源組件中镰踏,輸出結(jié)果。
動態(tài)包含:
采用動作元素:<jsp:include page=""/>路徑如果以"/"(當(dāng)前應(yīng)用)就是絕對路徑沙合。
3.3taglib
作用:引入外部的標(biāo)簽
語法:<%@taglib uri="標(biāo)簽名稱空間" prefix="前綴"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
四奠伪、JSP的內(nèi)置對象(9個JSP內(nèi)置對象)
JSP的內(nèi)置對象引用名稱 對應(yīng)的類型
request HttpServletRequest
response HttpServletResponse
session HttpSession(有開關(guān)的:page指令的session屬性的取值)
application ServletContext
config ServletConfig
page this(當(dāng)前Servlet對象)
exception java.lang.Throwable(有開關(guān)的:page指令的isErrorPage屬性改為true)
out JspWriter
pageContext javax.servlet.jsp.PageContext非常重要
有三大作用:
1、本身是一個域?qū)ο笫仔浮M瑫r還能操作其他三個域?qū)ο螅≒ageContext ServletRequest HttpSession ServletContext)
本身表示的域范圍是本頁面绊率。
void setAttribute(String name,Object value)
void removeAttribute(String name)
Object getAttribute(String name)
操作其他的三個域?qū)ο? void setAttribute(String name,Object value,int scope)
void removeAttribute(String name,int scope)
Object getAttribute(String name,int scope)
參數(shù)int scope是由PageContext類提供的靜態(tài)變量規(guī)定的。
PageContext.PAGE_SCOPE:頁面范圍(是PageContext本身中的那個Map猜拾,代號page)
PageContext.REQUEST_SCOPE:請求范圍(是ServletRequest中的那個Map即舌,代號request)
PageContext.SESSION_SCOPE:請求范圍(是HttpSession中的那個Map,代號session)
PageContext.APPLICATION_SCOPE:請求范圍(是ServletContext中的那個Map挎袜,代號application)
(非常有用)Object findAttribute(String name):依次按照page request session application范圍搜索指定名稱的對象顽聂,找到為止。
2盯仪、獲取其他8個隱式對象
3紊搪、提供了轉(zhuǎn)發(fā)和包含的方便方法
RequestDispatcher rd = request.getRequestDispatcher("/url");
rd.forward(request,response);
pageContext.forward("url");
pageContext.include("url");
五、四大域?qū)ο?兩個資源之間互傳數(shù)據(jù))
JSP中隱式對象的名稱 范圍名稱 具體的類型
pageContext page javax.servlet.jsp.PageContext
request request javax.servlet.ServletRequest (顯示完數(shù)據(jù)就沒有用了)
session session javax.servlet.http.HttpSession (顯示完數(shù)據(jù)了全景,過一會自己還要用)
application application javax.servlet.ServletContext (顯示完數(shù)據(jù)了耀石,大家都要用。不建議使用爸黄,如果使用滞伟,必須同步處理)
六、JSP常用的動作元素
<jsp:include/>
<jsp:forward/>
<jsp:param/>:在包含和轉(zhuǎn)發(fā)時炕贵,利用該標(biāo)簽傳遞請求參數(shù)
六梆奈、如何調(diào)試JSP出現(xiàn)的錯誤