JSP學(xué)習(xí) 三大指令、九個(gè)內(nèi)置對(duì)象、JavaBean、EL表達(dá)式

1.page-->最復(fù)雜:<%@page language="java" info="xxx"...%>
pageEncoding:它指定當(dāng)前jsp頁面的編碼,在服務(wù)器要把jsp編譯成.java時(shí)需要使用pageEncoding。
contentType:它標(biāo)識(shí)添加一個(gè)響應(yīng)頭 Content-Type 等同于response.setContentType("text/html;charset=utf-8");
如果兩個(gè)屬性只提供一個(gè),那么另一個(gè)的默認(rèn)值為設(shè)置的那個(gè)。
如果兩個(gè)屬性都沒有設(shè)置,那么默認(rèn)為iso
import:導(dǎo)包!可以出現(xiàn)多次
errorPage和isErrorPage
errorPage:當(dāng)前頁面如果拋出異常,那么要轉(zhuǎn)發(fā)到哪一個(gè)頁面,由errorPage屬性來指定。
isErrorPage:指定當(dāng)前頁面是否為處理錯(cuò)誤的頁面!當(dāng)該屬性為true時(shí),這個(gè)頁面會(huì)設(shè)置狀態(tài)碼為500!而且這個(gè)頁面可以使用9大內(nèi)置對(duì)象中的exception!
error-page:可在web.xml中設(shè)置jsp頁面錯(cuò)誤時(shí)的跳轉(zhuǎn)頁面。
<error-page>
<error-code>404</error-code>
<location>error/404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>error/500.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.RuntimeException</exception-type>
<location>error/error.jsp</location>
</error-page>
autoFlush和buffer
autoFlush:指定jsp的輸出流緩沖區(qū)滿時(shí),是否自動(dòng)刷新!默認(rèn)為true,如果為false,那么在緩沖區(qū)滿是拋出異常!
buffer:指定緩沖區(qū)大小,默認(rèn)為8kb,通常不需要修改!
isELIgnored:是否忽略el表達(dá)式,默認(rèn)值為false,不忽略,即支持!
以下屬性基本沒用
language:指定當(dāng)前jsp編譯后的語言類型,默認(rèn)值為java。
info:信息!
isThreadSafa:當(dāng)前jsp是否支持并發(fā)訪問!
session:當(dāng)前頁面是否支持session,如果為false,那么當(dāng)前頁面就沒有session這個(gè)內(nèi)置對(duì)象!
extends:讓jsp生成的servlet去繼承該屬性指定的類!
2.include-->靜態(tài)包含
與RequestDispatcher的inchlude()方法的功能相似!
<%@include%> 它是在jsp編譯成java文件時(shí)完成的,他們共同生成一個(gè)java文件,然后再生成一個(gè).class!
RequestDispatcher的include()是一個(gè)方法,包含和被包含的是兩個(gè)servlet,即兩個(gè).class!他們只算把響應(yīng)的內(nèi)容在運(yùn)行時(shí)合并了、
作用:把頁面分解了,使用包含的方式組合在一起,這樣一個(gè)頁面中不變的部分,就是一個(gè)獨(dú)立的jsp,而我們只需要處理變化的頁面。
3.taglib-->導(dǎo)入標(biāo)簽庫
*兩個(gè)屬性
prefix:指定標(biāo)簽庫在本頁面中的前綴!由我們自己來起名稱。
uri:指定標(biāo)簽庫的位置!
<%@taglib prefix="s" uri="/struts-tags"%> 如<s:text>
=====================================================================
九個(gè)內(nèi)置對(duì)象
out-->jsp的輸出流,用來向客戶端響應(yīng)
page-->當(dāng)前jsp對(duì)象! 它的引用類型是Object,即真身中有如下代碼:Object page =this;
config-->它對(duì)應(yīng)真身中的ServletConfig對(duì)象!
pageContext-->一個(gè)頂九個(gè)
request-->HttpServletRequest
response-->HttpServletResponse
exception-->Throwable
session-->HttpSession
appliction-->ServletContext
1.pageContext
Servlet中有三大域,而jsp中有四大域,它就是最后一個(gè)域?qū)ο螅?/p>
ServletContext:整個(gè)應(yīng)用程序
Session:整個(gè)會(huì)話(一個(gè)會(huì)話中只有一個(gè)用戶)
Request:一個(gè)請(qǐng)求鏈
pageContext:一個(gè)jsp頁面!這個(gè)域是在當(dāng)前jsp頁面和當(dāng)前jsp頁面中使用的標(biāo)簽之間共享數(shù)據(jù)!
域?qū)ο?br/>代理其它域:pageContext.setAttribute("xxx","XXX",PageContext.SESSION_SCOPE);
全域查找:pageContext.findAttribute("xxx");從小到大,依賴查找!
============================================================
JSP動(dòng)作標(biāo)簽
這些jsp的動(dòng)作標(biāo)簽,與html提供的標(biāo)簽有本質(zhì)的區(qū)別。
動(dòng)作標(biāo)簽由tomcat服務(wù)器來解釋執(zhí)行!它與java代碼一樣,都是在服務(wù)器端執(zhí)行的!
html標(biāo)簽由瀏覽器來執(zhí)行!
<jsp:forward>:轉(zhuǎn)發(fā)!它與RequestDispatcher的forward方法是一樣的,一個(gè)在servlet中使用,一個(gè)在jsp中使用!
<jsp:include>:包含,它與Requestdispatcher的include方法是一樣的。
*<jsp:param>:它用來作為forward和include的子標(biāo)簽!用來給轉(zhuǎn)發(fā)或包含的jsp頁面?zhèn)鬟f參數(shù)。
============================================================
JavaBean
javaBean的規(guī)范:
1.必須要一個(gè)默認(rèn)的構(gòu)造器
2.提供get/set方法,如果只有g(shù)et方法,那么這個(gè)屬性是制只讀屬性!
3.屬性:有g(shù)et、set方法的成員,還可以沒有成員,只有g(shù)et/set方法。屬性名稱由get/set方法來決定!而不是成員名稱!
4.方法名稱滿足一定的規(guī)范,那么它就是屬性!boolean類型屬性,它的讀方法可以是is開頭,也可以是get開頭!
commons-beanUtils,它是依賴內(nèi)省完成!
*導(dǎo)包:
commons-beanUtils.jar
commons-logging.jar
BeanUtils.getProperty(Object bean,String propertyName)
BeanUtils.setProperty(Object bean,String PropertyName,String propertyValue)
BeanUtils.populate(Map map,Object bean)
jsp中與javaBean相關(guān)的標(biāo)簽!
<jsp:useBean> 創(chuàng)建或查詢bean
<jsp:setProperty>
*<jsp:getProperty>
============================================================
EL表達(dá)式
1.EL是jsp頁面中內(nèi)置的表達(dá)式語言!
jsp2.0開始,不讓再使用java腳本,而是使用el表達(dá)式和動(dòng)態(tài)標(biāo)簽替代java腳本!
EL替代的是<%= ...%>,也就算說,EL只能做輸出!
2.EL表達(dá)式來讀取四大域
${xxx},全域查找名為xxx的屬性,如果不存在,輸出空字符串,而不是null。
${pageScope.xxx} ${requestScope.xxx} ${sessionScope.xxx} ${applicationScope.xxxx},指定域獲取屬性!
3.EL可以輸出的東西都在11個(gè)內(nèi)置對(duì)象中!
我們已經(jīng)學(xué)習(xí)了四個(gè)
param:對(duì)應(yīng)參數(shù),它是一個(gè)Map,其中key參數(shù)名,value是參數(shù)值,適用于單值的參數(shù)。
paramValues:對(duì)應(yīng)參數(shù),它是一個(gè)Map,其中key參數(shù)名,value是多個(gè)參數(shù)值,適用于多值的參數(shù)。
header:對(duì)應(yīng)請(qǐng)求頭,它是一個(gè)Map,其中key標(biāo)識(shí)頭名稱,value是單個(gè)頭值,適用于單值請(qǐng)求頭。
headerValues:對(duì)應(yīng)請(qǐng)求頭,它是一個(gè)Map,其中key標(biāo)識(shí)頭名稱,value是多個(gè)頭值,適用于多值請(qǐng)求頭。
initParam:獲取web.xml文件中 <context-param>節(jié)點(diǎn)下的參數(shù)
cookie:Map<String,Cookie>類型,其中key是cookie的name,value是cookie對(duì)象。
如:${cookie.JSESSTONID.value} 即可獲取cookie中存儲(chǔ)的JSESSTONID
pageContext:它是PageContext類型! ${pageContext.request.contextPath} 輸出當(dāng)前項(xiàng)目名稱
如:href=“${pageContext.request.contextPath}/xx/aa/b.jsp”
============================================================
EL函數(shù)庫(由JSTL提供的)
導(dǎo)入標(biāo)簽庫 <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
具體庫方法:https://docs.oracle.com/cd/E17802_01/products/products/jsp/jstl/1.1/docs/tlddocs/fn/tld-summary.html
============================================================
自定義函數(shù)庫
寫一個(gè)java類,勒種可以定義0~n個(gè)方法,單必須是static方法,必須有返回值的。
在WEB-INF目錄下創(chuàng)建一個(gè)tld文件
在jsp頁面中導(dǎo)入標(biāo)簽庫 <%@ taglib prefix="it" uri="/WEB-INF/tlds/itcast.tld" %>
在jsp頁面中使用自定義的函數(shù)庫: ${it:fun()}
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)站標(biāo)題:JSP學(xué)習(xí)三大指令、九個(gè)內(nèi)置對(duì)象、JavaBean、EL表達(dá)式-創(chuàng)新互聯(lián)
當(dāng)前路徑:http://www.yijiale78.com/article40/ppheo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、App開發(fā)、全網(wǎng)營銷推廣、服務(wù)器托管、企業(yè)網(wǎng)站制作、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容