JSP的3指令6動作9物件4大域
阿新 • • 發佈:2018-12-14
jsp的3個指令
-
JSP指令(directive)是為JSP引擎而設計的,它們並不直接產生任何可見輸出,而只是告訴引擎如何處理JSP頁面中的其餘部分。 在JSP 2.0規範中共定義了三個指令:
page指令
Include指令
taglib指令
-
語法:
- <%@ 指令名稱 屬性1=“屬性值1” 屬性2=“屬性值2”。。。%> 或者:
- <%@ 指令名稱 屬性1=“屬性值1”%>
-
<%@ 指令名稱 屬性2=“屬性值2”%>
-
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
-
<%@ page language="java" %>
- <%@ page import="java.util.*" %>
-
1、page:
- 作用:用於定義JSP頁面的各種屬性
-
屬性:
- 1.1、 import 和java程式碼中的import是一樣的
-
<%@ page import="java.util.Date,java.util.List"%> 或者: <%@ page import="java.util.Date"%> <%@ page import="java.util.List"%> JSP會自動匯入以下的包: import java.lang.*; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.jsp.*;
- 1.2、 session: 是否會自動建立session物件。預設值是true;
- 1.3、 buffer: JSP中有javax.servlet.jsp.JspWriter輸出字元流。設定。輸出資料的快取大小,預設是8kb.
- 1.4 errorPage: 如果頁面中有錯誤,則跳轉到指定的資源。
-
errorPage="/uri" 如果寫“/”則代表當前應用的目錄下,絕對路徑。 如果不寫“/”則代表相對路徑。
- 1.5、 isErrorPage: 是否建立throwable物件。預設是false;
- 1.6、 contextType: 等同於response.setCotntextType("text/html;charset=utf-8");
- 1.7、 pageEncoding: 告訴JSP引擎要翻譯的檔案使用的編碼。
-
1.8、 isELIgnored: 是否支援EL表示式。 預設是false
<%@ page pageEncoding="gbk" %>
2、include:
- 靜態包含:把其它資源包含到當前頁面中。 <%@ include file="/include/header.jsp" %>
-
動態包含: <jsp:include page="/include/header.jsp"></jsp:include>
-
兩者的區別:翻譯的時間段不同
- 前者:在翻譯時就把兩個檔案合併
- 後者:不會合並檔案,當代碼執行到include時,才包含另一個檔案的內容。
-
原則:能用靜的就不用動的。
3、taglib
-
作用:在JSP頁面中匯入JSTL標籤庫。替換jsp中的java程式碼片段。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
jsp的6個動作
-
使用標籤的形式來表示一段java程式碼。 如: <jsp:include page="2.jsp"></jsp:include>
<jsp:include > 動態包含 <jsp:forward> 請求轉發 <jsp:param> 設定請求引數 <jsp:useBean> 建立一個物件 <jsp:setProperty> 給指定的物件屬性賦值 <jsp:getProperty> 取出指定物件的屬性值
jsp的9個內建物件
-
指在JSP的<%=%> 和<% %>中可以直接使用的物件
物件名 型別 說明
request javax.servlet.http.HttpServletRequest response javax.servlet.http.HttpServletResponse session javax.servlet.http.HttpSession 由session="true"開關 application javax.servlet.ServletContext exception java.lang.Throwable 由isErrorPage="false"開關 page java.lang.Object當前物件this 當前servlet例項 config javax.servlet.ServletConfig out javax.servlet.jsp.JspWriter 字元輸出流,相當於 printWriter物件 pageContext javax.servlet.jsp.PageContext
-
pageContext(重要)
-
1、本身也是一個域物件:它可以操作其它三個域物件(request session application)的資料
void setAttribute(String name,Object o); Object getAttribute(String name); void removeAttribute(String name); 操作其它域物件的方法 void setAttribute(String name,Object o,int Scope); Object getAttribute(String name,int Scope); void removeAttribute(String name,int Scope); scpoe的值: PageContext.PAGE_SCOPE PageContext.REQUEST_SCOPE PageContext.SESSION_SCOPE PageContext.APPLICATION_SCOPE findAttribute(String name); 自動從page request session application依次查詢,找到了就取值,結束查詢。
-
2、它可以建立其它的8個隱式物件
在普通類中可以通過PageContext獲取其他JSP隱式物件。自定義標籤時就使用。
3、提供了的簡易方法
pageContext.forward("2.jsp"); pageContext.include("2.jsp");
-
四大域物件:實際開發
- PageContext : pageConext 存放的資料在當前頁面有效。開發時使用較少。
- ServletRequest: request 存放的資料在一次請求(轉發)內有效。使用非常多。
- HttpSession: session 存放的資料在一次會話中有效。使用的比較多。如:存放使用者的登入資訊,購物車功能。
- ServletContext: application 存放的資料在整個應用範圍內都有效。因為範圍太大,應儘量少