【JSP】相關基礎內容複習-jsp

jsp編碼原理

一、JSP概述

1、JSP:Java Server Pages(運行在服務器端的頁面)。就是Servlet。
學習JSP學好的關鍵:時刻聯想到Servlet即可。
2、JSP的原理
	JSP會被Tomcat翻譯成一個Servlet。該Servlet在Tomcat\work\catalina\locahot\day09\....
3、JSP、Servlet開發的最佳實踐:
	Servlet:一般作爲控制組件,處理業務邏輯
	JSP:一般作爲顯示組件,顯示數據

二、JSP的語法

1、JSP的模板元素:(先寫HTML)
		就是JSP中的那些HTML標記
		作用:頁面佈局和美化
2、JSP的Java腳本表達式:
		作用:輸出數據到頁面上
		語法:<%=表達式%>(實際上就是調用輸出流打印到頁面上)
3、JSP中的Java腳本片段:(實際開發中,應做到JSP中不能出現一行Java腳本片段)
		作用:書寫Java代碼邏輯
		語法:<%
				語句1;
				語句2;
			  %>
		原理:其中的語句會原封不動的被服務器翻譯到對應的Servlet的service方法中。
4、JSP的聲明:(瞭解其原理)
		作用:定義類的成員
		語法:<%!
				你的Java代碼
				%>
5、JSP的註釋:
		作用:註釋Java腳本代碼
		語法:<%--這是註釋--%>

三、JSP的指令:給JSP引擎用的(服務器用的)

	基本的語法格式:<%@ 指令名稱 屬性1="值1" 屬性2="值2" ....%>
	作用:告訴服務器,該如何處理JSP中除了指令之外的內容的。
	
3.1page
	作用:定義JSP頁面的各種屬性
	屬性:
		language:指示JSP頁面中使用腳本語言。默認值java,目前只支持java。
		extends:指示JSP對應的Servlet類的父類。不要修改。
		*import:導入JSP中的Java腳本使用到的類或包。(如同Java中的import語句)
					JSP引擎自動導入以下包中的類:
							javax.servlet.*
							javax.servlet.http.*
							javax.servlet.jsp.*
				注意:一個import屬性可以導入多個包,用逗號分隔。
		*sessioin:指示JSP頁面是否創建HttpSession對象。默認值是true,創建
		*buffer:指示JSP用的輸出流的緩存大小.默認值是8Kb。
		autoFlush:自動刷新輸出流的緩存。
		isThreadSafe:指示頁面是否是線程安全的(過時的)。默認是true。
				true:不安全的。
				false:安全的。指示JSP對應的Servlet實現SingleThreadModel接口。
		*errorPage:指示當前頁面出錯後轉向(轉發)的頁面。
					目標頁面如果以"/"(當前應用)就是絕對路徑。
					
					配置全局錯誤提示頁面:
						web.xml
						 <error-page>
							<exception-type>java.lang.Exception</exception-type>
							<location>/error.jsp</location>
						  </error-page>
						  <error-page>
							<error-code>404</error-code>
							<location>/404.jsp</location>
						  </error-page>
		*isErrorPage:指示當前頁面是否產生Exception對象。
		*contentType:指定當前頁面的MIME類型。作用與Servlet中的response.setContentType()作用完全一致
		*pageEncoding:通知引擎讀取JSP時採用的編碼(因爲要翻譯)
				還有contentType屬性的作用。
		*isELIgnored:是否忽略EL表達式。${1+1}。默認值是false。
		
	page指令最簡單的使用方式:<%@ page pageEncoding="UTF-8"%>
3.2include(靜態包含,開發中能用靜的不用動的)
	作用:包含其他的組件。
	語法:<%@include file=""%>file指定要包含的目標組件。路徑如果以"/"(當前應用)就是絕對路徑。
	原理:把目標組件的內容加到源組件中,輸出結果。
	
	動態包含:
		採用動作元素:<jsp:include page=""/>路徑如果以"/"(當前應用)就是絕對路徑。
		
	
3.3taglib
	作用:引入外部的標籤
	語法:<%@taglib uri="標籤名稱空間" prefix="前綴"%>
		<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

四、JSP的內置對象(9個JSP內置對象)

JSP的內置對象引用名稱			對應的類型

request							HttpServletRequest
response						HttpServletResponse
session							HttpSession(有開關的:page指令的session屬性的取值)
application						ServletContext
config							ServletConfig
page							this(當前Servlet對象)
exception						java.lang.Throwable(有開關的:page指令的isErrorPage屬性改爲true)

out								JspWriter
pageContext						javax.servlet.jsp.PageContext非常重要
		有三大作用:
				1、本身是一個域對象。同時還能操作其他三個域對象(PageContext ServletRequest HttpSession  ServletContext)
						本身表示的域範圍是本頁面。
								void setAttribute(String name,Object value)
								void removeAttribute(String name)
								Object getAttribute(String name)
						操作其他的三個域對象
								void setAttribute(String name,Object value,int scope)
								void removeAttribute(String name,int scope)
								Object getAttribute(String name,int scope)
								
								參數int scope是由PageContext類提供的靜態變量規定的。
											PageContext.PAGE_SCOPE:頁面範圍(是PageContext本身中的那個Map,代號page)
											PageContext.REQUEST_SCOPE:請求範圍(是ServletRequest中的那個Map,代號request)
											PageContext.SESSION_SCOPE:請求範圍(是HttpSession中的那個Map,代號session)
											PageContext.APPLICATION_SCOPE:請求範圍(是ServletContext中的那個Map,代號application)
											
											
						(非常有用)Object findAttribute(String name):依次按照page request session application範圍搜索指定名稱的對象,找到爲止。
						
				2、獲取其他8個隱式對象
				3、提供了轉發和包含的方便方法
					RequestDispatcher rd = request.getRequestDispatcher("/url");
					rd.forward(request,response);
					
					pageContext.forward("url");
					pageContext.include("url");

五、四大域對象(兩個資源之間互傳數據)

JSP中隱式對象的名稱				範圍名稱			具體的類型
pageContext						page				javax.servlet.jsp.PageContext
request							request				javax.servlet.ServletRequest  (顯示完數據就沒有用了)
session							session				javax.servlet.http.HttpSession (顯示完數據了,過一會自己還要用)
application						application			javax.servlet.ServletContext (顯示完數據了,大家都要用。不建議使用,如果使用,必須同步處理)

六、JSP常用的動作元素

<jsp:include/>
<jsp:forward/>
<jsp:param/>:在包含和轉發時,利用該標籤傳遞請求參數

七、如何調試JSP出現的錯誤

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章