天天看點

JSP三個指令及9個内置對象

注:本文編寫友善自己以後用到時查閱

三大指令:include、 page、taglib

include指令: 

  作用: 在目前頁面用于包含其他頁面

  文法: <%@include file="xxx.jsp"%>

  注意:

  1)原理是把被包含的頁面(xxx.jsp)的内容翻譯到包含頁面中,合并成翻譯成一 個java源檔案,再編譯運作,這種包含叫靜态包含(源碼包含)

  2)如果使用靜态包含,被包含頁面中不需要出現全局的html标簽了!!!(如html、head、 body 當然出現也不會報錯)

page指令: 

  作用: 告訴tomcat伺服器如何把jsp檔案翻譯成java檔案

  預設寫法:<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>

  屬性介紹:

    language="java"   //告訴伺服器使用什麼動态語言來翻譯jsp檔案

    import="java.util.*" //告訴伺服器java檔案使用什麼包導入包,多個包之間用逗号分割

    pageEncoding="utf-8"  //告訴伺服器使用什麼編碼翻譯jsp檔案(成java檔案)

              注意:在開發工具中,以後隻需要設定pageEncoding即可解決中文亂碼問題,因為contentType屬性會預設設定和pageEncoding一緻

    contentType="text/html; charset=utf-8" //伺服器發送浏覽器的資料類型和内容編碼

    errorPage="error.jsp" //配置了之後,當頁面運作出錯後,會跳轉到對應的錯誤頁面

    isErrorPage="false" //預設為false,當設為true後,可以使用内置對象exception,否則不能使用

    buffer="8kb" //out内置對象的款存大小,當超過款存後,立馬向浏覽器中寫出内容

    session="true" //是否可以使用内置對象session,預設true

    isELIgnored="false" //是否忽略EL表達式,預設false

taglib指令: 

  作用:用于導入jstl标簽庫

9個内置對象

内置對象 對應的類型 解釋
request HttpServletRequest
response HttpServletResponse
config ServletConfig
application ServletContext
session HttpSession
exception Throwable
page Object(this) 目前頁面編譯後的class
out JspWriter
pageContext PageContext

pageContext對象: 

  pageContext對象的類型是PageContext,叫jsp的上下文對象

  1)可以擷取其他八個内置對象

  如:

1 HttpServletRequest  request= pageContext.getRequest(); //等價于request内置對象
2 HttpServletResponse response = pageContext.getResponse(); ////等價于response内置對象
3 HttpSession session = pageContext.getSession(); //...
4 JspWriter out = pageContext.getOut(); //...
5 
6  ...      

  2)本身是一個域對象

  #四個域對象

context域
HttpServletRequet session域
request域
page域
作用: 儲存資料和擷取資料,用于共享資料

                   

              

                       

                  

    

  #儲存資料

    1)預設情況下,儲存到page域

      pageContext.setAttribute("name");

    2)可以向四個域對象儲存資料

      pageContext.setAttribute("name",域範圍常量)

  #擷取資料

    1)預設情況下,從page域擷取

      pageContext.getAttribute("name")

    2)可以從四個域中擷取資料

      pageContext.getAttribute("name",域範圍常量)

  #域範圍常量:

    PageContext.PAGE_SCOPE

    PageContext.REQUEST_SCOPE

    PageContext..SESSION_SCOPE

    PageContext.APPLICATION_SCOPE

  3)自動在四個域中搜尋資料

    pageContext.findAttribute("name"); //搜尋順序: page域 -> request域 -> session域- > context域(application域)