一轴猎、JSP技術(shù):
1.簡介:
JSP全稱是Java Server Pages轧苫,它是建立在servlet規(guī)范之上的動態(tài)網(wǎng)頁開發(fā)技術(shù)樟遣。
2.jsp腳本和注釋:
1)<%java代碼%> ----- 內(nèi)部的java代碼翻譯到service方法的內(nèi)部
2)<%=java變量或表達(dá)式%> ----- 會被翻譯成service方法內(nèi)部out.print()
3)<%!java代碼%> ---- 會被翻譯成servlet的成員的內(nèi)容
jsp注釋: 不同的注釋可見范圍是不同
1)Html注釋: ---可見范圍 jsp源碼茧妒、翻譯后的servlet酬蹋、頁面 顯示html源碼
2)java注釋://單行注釋 /多行注釋/ --可見范圍 jsp源碼 翻譯后的servlet
3)jsp注釋:<%--注釋內(nèi)容--%> ----- 可見范圍 jsp源碼可見
3.jsp運(yùn)行原理-----jsp本質(zhì)就是servlet(面試):
jsp在第一次被訪問時首先會被Web容器翻譯成servlet及老,然后再執(zhí)行。
過程:
第一次訪問---->helloServlet.jsp---->helloServlet_jsp.java---->編譯運(yùn)行
PS:被翻譯后的servlet在Tomcat的work目錄中可以找到
4.jsp指令(3個):
jsp的指令是指導(dǎo)jsp翻譯和運(yùn)行的命令范抓,jsp包括三大指令:
1)page指令 --- 屬性最多的指令(實際開發(fā)中page指令默認(rèn))
屬性最多的一個指令骄恶,根據(jù)不同的屬性,指導(dǎo)整個頁面特性
格式如下:
<%@ page 屬性名1= "屬性值1" 屬性名2= "屬性值2" ...%>
常用屬性如下:
language:jsp腳本中可以嵌入的語言種類
pageEncoding:當(dāng)前jsp文件的本身編碼---內(nèi)部可以包含contentType
contentType:response.setContentType(text/html;charset=UTF-8)
session:是否jsp在翻譯時自動創(chuàng)建session
import:導(dǎo)入java的包
errorPage:當(dāng)當(dāng)前頁面出錯后跳轉(zhuǎn)到哪個頁面
isErrorPage:當(dāng)前頁面是一個處理錯誤的頁面
2)include指令:
頁面包含(靜態(tài)包含)指令匕垫,可以將一個jsp頁面包含到另一個jsp頁面中.
格式:
<%@ include file="被包含的文件地址"%>
3)taglib指令:
在jsp頁面中引入標(biāo)簽庫(jstl標(biāo)簽庫僧鲁、struts2標(biāo)簽庫).
<%@ taglib uri="標(biāo)簽庫地址" prefix="前綴"%>
下面這個是常用的。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
5.jsp內(nèi)置/隱式對象(9個)----- 筆試:
jsp被翻譯成servlet之后年缎,service方法中有9個對象定義并初始化完畢悔捶,我們在jsp 腳本中可以直接使用這9個對象。
(1)out對象
out的類型:JspWriter
out作用就是想客戶端輸出內(nèi)容----out.write()
out緩沖區(qū)默認(rèn)8kb 可以設(shè)置成0 代表關(guān)閉out緩沖區(qū) 內(nèi)容直接寫到respons緩沖 器
(2)pageContext對象
jsp頁面的上下文對象单芜,作用如下:
page對象與pageContext對象不是一回事
1)pageContext是一個域?qū)ο?br>
setAttribute(String name,Object obj)
getAttribute(String name)
removeAttrbute(String name)
pageContext可以向指定的其他域中存取數(shù)據(jù)
setAttribute(String name,Object obj,int scope)
getAttribute(String name,int scope)
removeAttrbute(String name,int scope)
findAttribute(String name)
---依次從pageContext域蜕该,request域,session域洲鸠,application域中獲 取屬性堂淡,在某個域中獲取后將不在向后尋找
四大作用域的總結(jié):
page域:當(dāng)前jsp頁面范圍
request域:一次請求
session域:一次會話
application域:整個web應(yīng)用
2)可以獲得其他8大隱式對象
例如:
pageContext.getRequest()
pageContext.getSession()
6.jsp標(biāo)簽(動作):
1)頁面包含(動態(tài)包含):<jsp:include page="被包含的頁面"/>
2)請求轉(zhuǎn)發(fā):<jsp:forward page="要轉(zhuǎn)發(fā)的資源" />
靜態(tài)包含與動態(tài)包含的區(qū)別馋缅?