JSP 三 :九大隱式對象

###細節java

  1. 每一個JSP頁面在第一次被訪問時,web容器都會把請求交給JSP引擎(即一個Java程序)去處理。JSP引擎先將JSP翻譯成一個_jspServlet(實質上也是一個servlet),而後按照servlet的調用方式進行調用。
  2. 因爲JSP第一次訪問時會翻譯成servlet,因此第一次訪問通暢會比較慢,但第二次訪問,JSP引擎若是發現JSP沒有變化,就不會再翻譯,而是直接調用,因此程序的執行效率不會受到影響。
  3. JSP引擎在調用JSP對應的_jspServlet時,會傳遞或建立9個與web開發相關的對象供_jspServlet使用。JSP技術的設計者爲便於開發人員在編寫JSP頁面時得到這些web對象的飲用,特地定義了9個相應的變量,開發人員在JSP頁面中經過這些變量就能夠快速的得到這9大對象的飲用。

##9大對象是什麼web

  1. HttpServletRequest request;
  2. HttpServletResponse response;
  3. PageContext pageContext;
  4. HttpSession session;
  5. ServletContext application;
  6. ServletConfig config;
  7. JspWriter out;
  8. Object page = this;
  9. Exception exception;

##out隱式對象 1.out隱式對象用戶向客戶端發送文本數據。 2.out對象是經過調用pageContext對象的getOut方法返回,其做用和用法與ServletResponse.getWriter方法返回的PrintWriter對象很是類似。 3.JSP頁面中的out隱式對象的類型爲JspWriter,JspWriter至關於一種帶緩存功能的PrintWriter,設置JSP頁面的page指令的buffer屬性能夠調整它的緩存大小,設置關閉它的緩存 4.只有向out對象中寫入了內容,且知足以下任何一個條件時,out對象纔去調用ServletResponse.getWriter方法,並經過該方法返回的PrintWriter對象將out對象緩衝區的內容真正寫入到Servlet引擎提供的緩衝區中: (1). 設置page指令的buffer屬性關閉了out對象的緩存功能 (2). out對象的緩衝區已滿 (3). 整個JSP頁面結束編程

question:緩存

<body>
	aaaaa
	<%
		out.write("bbbbb");
		response.getWriter().write("ccccc")	
	%>

輸出結果是什麼?session

answer:app

ccccc  aaaaa bbbbb

##pageContext對象 pageContext對象是JSP技術中最重要的一個對象,它表明JSP頁面的運行環境。jsp

1. 這個對象不只分裝了對其它8大隱式對象的引用,
2. 它自身仍是一個域對象,能夠用來保存數據
3. 而且,這個對象還封裝了web開發中常常涉及到一些經常使用操做,例如引入和跳轉其它資源,檢索其它域對象中的屬性等。

###經過pageContext得到其它對象 1.getException : 得到exception 2.getPage : 得到page 3.getRequest : 得到request 4.getResponse : 得到response 5.getServletConfig : 得到config 6.getServletContext : 得到application 7.getSession : 得到session 8.getOut : 得到out 9.pageContext封裝其它8大內置對象的意義,思考:若是在編程過程當中,把pageContext對象傳遞給一個普通java對象,那麼這個對象將具備什麼功能。 pageContext主要用在 自定義標籤開發技術裏面 ###四個域對象 application>session>request>pageContext ###pageContext對象的方法this

1.public void setAttribute(name,value)
	2.public Object getAttribute(name)
	3.public void remoteAttribute(name)

###pageContext對象還封裝了訪問其它域的方法spa

1.public Object getAttribute(name,scope)
	2.public void setAttribute(name,value,scope)
	3.public void remoteAttribute(name,scope)

###表明各個域的常量翻譯

1.PageContext.APPLICATION_SCOPE
	2.PageContext.SESSION_SCOPE
	3.PageContext.REQUEST_SCOPE
	4.PageContext.PAGE_SCOPE

###findAttribute 查找各個域中的屬性 按照域範圍的從小到大的順序查找: pageContext --> request --> session --> application ###引入和跳轉到其它資源 1.PateContext類中定義了一個forward方法和兩個include方法分別簡化和替代RequestDispatcher.forward方法和include方法 2.方法接收的資源若是以"/"開頭,"/"表明當前web應用。

相關文章
相關標籤/搜索