您好,登錄后才能下訂單哦!
JSP學習 三大指令、九個內置對象、JavaBean、EL表達式
1.page-->最復雜:<%@page language="java" info="xxx"...%>
pageEncoding:它指定當前jsp頁面的編碼,在服務器要把jsp編譯成.java時需要使用pageEncoding。
contentType:它標識添加一個響應頭 Content-Type 等同于response.setContentType("text/html;charset=utf-8");
如果兩個屬性只提供一個,那么另一個的默認值為設置的那個。
如果兩個屬性都沒有設置,那么默認為iso
import:導包!可以出現多次
errorPage和isErrorPage
errorPage:當前頁面如果拋出異常,那么要轉發到哪一個頁面,由errorPage屬性來指定。
isErrorPage:指定當前頁面是否為處理錯誤的頁面!當該屬性為true時,這個頁面會設置狀態碼為500!而且這個頁面可以使用9大內置對象中的exception!
error-page:可在web.xml中設置jsp頁面錯誤時的跳轉頁面。
<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的輸出流緩沖區滿時,是否自動刷新!默認為true,如果為false,那么在緩沖區滿是拋出異常!
buffer:指定緩沖區大小,默認為8kb,通常不需要修改!
isELIgnored:是否忽略el表達式,默認值為false,不忽略,即支持!
以下屬性基本沒用
language:指定當前jsp編譯后的語言類型,默認值為java。
info:信息!
isThreadSafa:當前jsp是否支持并發訪問!
session:當前頁面是否支持session,如果為false,那么當前頁面就沒有session這個內置對象!
extends:讓jsp生成的servlet去繼承該屬性指定的類!
2.include-->靜態包含
與RequestDispatcher的inchlude()方法的功能相似!
<%@include%> 它是在jsp編譯成java文件時完成的,他們共同生成一個java文件,然后再生成一個.class!
RequestDispatcher的include()是一個方法,包含和被包含的是兩個servlet,即兩個.class!他們只算把響應的內容在運行時合并了、
作用:把頁面分解了,使用包含的方式組合在一起,這樣一個頁面中不變的部分,就是一個獨立的jsp,而我們只需要處理變化的頁面。
3.taglib-->導入標簽庫
*兩個屬性
prefix:指定標簽庫在本頁面中的前綴!由我們自己來起名稱。
uri:指定標簽庫的位置!
<%@taglib prefix="s" uri="/struts-tags"%> 如<s:text>
=====================================================================
九個內置對象
out-->jsp的輸出流,用來向客戶端響應
page-->當前jsp對象! 它的引用類型是Object,即真身中有如下代碼:Object page =this;
config-->它對應真身中的ServletConfig對象!
pageContext-->一個頂九個
request-->HttpServletRequest
response-->HttpServletResponse
exception-->Throwable
session-->HttpSession
appliction-->ServletContext
1.pageContext
Servlet中有三大域,而jsp中有四大域,它就是最后一個域對象!
ServletContext:整個應用程序
Session:整個會話(一個會話中只有一個用戶)
Request:一個請求鏈
pageContext:一個jsp頁面!這個域是在當前jsp頁面和當前jsp頁面中使用的標簽之間共享數據!
域對象
代理其它域:pageContext.setAttribute("xxx","XXX",PageContext.SESSION_SCOPE);
全域查找:pageContext.findAttribute("xxx");從小到大,依賴查找!
============================================================
JSP動作標簽
這些jsp的動作標簽,與html提供的標簽有本質的區別。
動作標簽由tomcat服務器來解釋執行!它與java代碼一樣,都是在服務器端執行的!
html標簽由瀏覽器來執行!
<jsp:forward>:轉發!它與RequestDispatcher的forward方法是一樣的,一個在servlet中使用,一個在jsp中使用!
<jsp:include>:包含,它與Requestdispatcher的include方法是一樣的。
*<jsp:param>:它用來作為forward和include的子標簽!用來給轉發或包含的jsp頁面傳遞參數。
============================================================
JavaBean
javaBean的規范:
1.必須要一個默認的構造器
2.提供get/set方法,如果只有get方法,那么這個屬性是制只讀屬性!
3.屬性:有get、set方法的成員,還可以沒有成員,只有get/set方法。屬性名稱由get/set方法來決定!而不是成員名稱!
4.方法名稱滿足一定的規范,那么它就是屬性!boolean類型屬性,它的讀方法可以是is開頭,也可以是get開頭!
commons-beanUtils,它是依賴內省完成!
*導包:
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相關的標簽!
<jsp:useBean> 創建或查詢bean
<jsp:setProperty>
*<jsp:getProperty>
============================================================
EL表達式
1.EL是jsp頁面中內置的表達式語言!
jsp2.0開始,不讓再使用java腳本,而是使用el表達式和動態標簽替代java腳本!
EL替代的是<%= ...%>,也就算說,EL只能做輸出!
2.EL表達式來讀取四大域
${xxx},全域查找名為xxx的屬性,如果不存在,輸出空字符串,而不是null。
${pageScope.xxx} ${requestScope.xxx} ${sessionScope.xxx} ${applicationScope.xxxx},指定域獲取屬性!
3.EL可以輸出的東西都在11個內置對象中!
我們已經學習了四個
param:對應參數,它是一個Map,其中key參數名,value是參數值,適用于單值的參數。
paramValues:對應參數,它是一個Map,其中key參數名,value是多個參數值,適用于多值的參數。
header:對應請求頭,它是一個Map,其中key標識頭名稱,value是單個頭值,適用于單值請求頭。
headerValues:對應請求頭,它是一個Map,其中key標識頭名稱,value是多個頭值,適用于多值請求頭。
initParam:獲取web.xml文件中 <context-param>節點下的參數
cookie:Map<String,Cookie>類型,其中key是cookie的name,value是cookie對象。
如:${cookie.JSESSTONID.value} 即可獲取cookie中存儲的JSESSTONID
pageContext:它是PageContext類型! ${pageContext.request.contextPath} 輸出當前項目名稱
如:href=“${pageContext.request.contextPath}/xx/aa/b.jsp”
============================================================
EL函數庫(由JSTL提供的)
導入標簽庫 <%@ 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
============================================================
自定義函數庫
寫一個java類,勒種可以定義0~n個方法,單必須是static方法,必須有返回值的。
在WEB-INF目錄下創建一個tld文件
在jsp頁面中導入標簽庫 <%@ taglib prefix="it" uri="/WEB-INF/tlds/itcast.tld" %>
在jsp頁面中使用自定義的函數庫: ${it:fun()}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。