最復(fù)雜: pageEncoding和contentType: pageEncoding:它指定當(dāng)前jsp頁(yè)面的編碼,在服務(wù)器要把jsp..."/>
溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時(shí)間:2020-07-17 16:45:42 來(lái)源:網(wǎng)絡(luò) 閱讀:344 作者:風(fēng)雨佟洲 欄目:大數(shù)據(jù)

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

1.page-->最復(fù)雜:<%@page language="java" info="xxx"...%>

  • pageEncoding和contentType:

    pageEncoding:它指定當(dāng)前jsp頁(yè)面的編碼,在服務(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è)屬性都沒(méi)有設(shè)置,那么默認(rèn)為iso
    import:導(dǎo)包!可以出現(xiàn)多次
    errorPage和isErrorPage
    errorPage:當(dāng)前頁(yè)面如果拋出異常,那么要轉(zhuǎn)發(fā)到哪一個(gè)頁(yè)面,由errorPage屬性來(lái)指定。
    isErrorPage:指定當(dāng)前頁(yè)面是否為處理錯(cuò)誤的頁(yè)面!當(dāng)該屬性為true時(shí),這個(gè)頁(yè)面會(huì)設(shè)置狀態(tài)碼為500!而且這個(gè)頁(yè)面可以使用9大內(nèi)置對(duì)象中的exception!
    error-page:可在web.xml中設(shè)置jsp頁(yè)面錯(cuò)誤時(shí)的跳轉(zhuǎn)頁(yè)面。
    <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,不忽略,即支持!
    以下屬性基本沒(méi)用
    language:指定當(dāng)前jsp編譯后的語(yǔ)言類型,默認(rèn)值為java。
    info:信息!
    isThreadSafa:當(dāng)前jsp是否支持并發(fā)訪問(wèn)!
    session:當(dāng)前頁(yè)面是否支持session,如果為false,那么當(dāng)前頁(yè)面就沒(méi)有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í)合并了、
作用:把頁(yè)面分解了,使用包含的方式組合在一起,這樣一個(gè)頁(yè)面中不變的部分,就是一個(gè)獨(dú)立的jsp,而我們只需要處理變化的頁(yè)面。
3.taglib-->導(dǎo)入標(biāo)簽庫(kù)
*兩個(gè)屬性

prefix:指定標(biāo)簽庫(kù)在本頁(yè)面中的前綴!由我們自己來(lái)起名稱。
uri:指定標(biāo)簽庫(kù)的位置!
<%@taglib prefix="s" uri="/struts-tags"%> 如<s:text>

=====================================================================
九個(gè)內(nèi)置對(duì)象
out-->jsp的輸出流,用來(lái)向客戶端響應(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頁(yè)面!這個(gè)域是在當(dāng)前jsp頁(yè)面和當(dāng)前jsp頁(yè)面中使用的標(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ù)器來(lái)解釋執(zhí)行!它與java代碼一樣,都是在服務(wù)器端執(zhí)行的!
html標(biāo)簽由瀏覽器來(lái)執(zhí)行!
<jsp:forward>:轉(zhuǎn)發(fā)!它與RequestDispatcher的forward方法是一樣的,一個(gè)在servlet中使用,一個(gè)在jsp中使用!
<jsp:include>:包含,它與Requestdispatcher的include方法是一樣的。
*<jsp:param>:它用來(lái)作為forward和include的子標(biāo)簽!用來(lái)給轉(zhuǎn)發(fā)或包含的jsp頁(yè)面?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方法的成員,還可以沒(méi)有成員,只有g(shù)et/set方法。屬性名稱由get/set方法來(lái)決定!而不是成員名稱!
4.方法名稱滿足一定的規(guī)范,那么它就是屬性!boolean類型屬性,它的讀方法可以是is開(kāi)頭,也可以是get開(kāi)頭!

內(nèi)省:
內(nèi)省類-->Bean信息-->屬性描述符-->屬性的get/set對(duì)應(yīng)的Method!-->可以反射了。

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頁(yè)面中內(nèi)置的表達(dá)式語(yǔ)言!
jsp2.0開(kāi)始,不讓再使用java腳本,而是使用el表達(dá)式和動(dòng)態(tài)標(biāo)簽替代java腳本!
EL替代的是<%= ...%>,也就算說(shuō),EL只能做輸出!

2.EL表達(dá)式來(lái)讀取四大域
${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ù)庫(kù)(由JSTL提供的)
導(dǎo)入標(biāo)簽庫(kù) <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
具體庫(kù)方法:https://docs.oracle.com/cd/E17802_01/products/products/jsp/jstl/1.1/docs/tlddocs/fn/tld-summary.html

  • boolean contains(string, substring)
  • boolean containsIgnoreCase(string, substring)
  • boolean startsWith(string, prefix)
  • boolean endsWith(string, suffix)
  • String[] split(string, separator)
  • String substring(string, begin, end)
  • String substringBefore(string, substring)
  • String substringAfter(string, substring)
  • String replace(string, before, after)
  • String toLowerCase(string)
  • String toUpperCase(string)
  • String trim(string)
  • int indexOf(string, suffix)
  • int length(String or Collection)
  • String join(String[], separator)
  • String escapeXml(string)
    *調(diào)用方法:${fn:length}

============================================================

自定義函數(shù)庫(kù)
寫(xiě)一個(gè)java類,勒種可以定義0~n個(gè)方法,單必須是static方法,必須有返回值的。
在WEB-INF目錄下創(chuàng)建一個(gè)tld文件
在jsp頁(yè)面中導(dǎo)入標(biāo)簽庫(kù) <%@ taglib prefix="it" uri="/WEB-INF/tlds/itcast.tld" %>
在jsp頁(yè)面中使用自定義的函數(shù)庫(kù): ${it:fun()}

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI