在學習了一門新的技術后切記要及時總結,這樣才能達到一個鞏固的效果。那么首先我就對JSP做個簡單的總結:
1 什么是JSP ?
JSP是Java Server Pages 的簡稱,是一種運行在服務器端的Java頁面,開發時是采用在HTML頁面中嵌套Java頁面來實現的。
2 JSP的工作原理是什么?
JSP是運行在服務器端的Java頁面,當用戶通過瀏覽器請求訪問Web應用時,Web服務器會使用JSP引擎對請求的JSP進行編譯和運行,然后將生成的頁面返回給客戶端瀏覽器進行
顯示,JSP的執行過程共分為三步:
第一步是翻譯階段,Web服務器會將接收到的JSP文件翻譯成Java文件。
第二步是編譯階段,Web容器將Java文件編譯成字節碼文件(.class文件)
第三步是執行階段,Web容器執行字節碼文件將生成的結果返回給客戶端進行顯示。
3 JSP的中文亂碼如何處理?
產生中文亂碼的根本原因是JSP頁面的默認編碼格式 "ISO-8859-1" 不支持中文,盡然不支持中文,悲催啊,但是還好有支持中文的,常見的有三種支持中文的編碼格式,分別是
gb2312:包含常用的簡體漢字。gbk:收錄了比gb2312更多的漢字,包括簡體和繁體漢字。utf-8:包含全世界所有國家需要的字符,是國際編碼,通用性強。
中文亂碼的解決方案:
POST方式提交表單的解決方案:設置請求和相應的編碼格式 1.request.setCharacterEncoding("utf-8"); 2. response.setCharacterEncoding("utf-8");
GET方式提交表單的兩種解決方案:
第一種:讀取數據時對數據進行編碼 new String(s.getBytes("iso-8859-1"), "utf-8");參數s代表一個變量,其中保存了從request對象中讀取的中文數據。
第二種:通過配置文件設置解決中文亂碼顯示
配置tomcat\conf\server.xml 文件
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8843" URIEncoding="UTF-8"/>
需要加上的是URIEncoding="UTF-8"這句。
4 轉發與重定向的區別是什么?
重定向的執行過程:
Web服務器向瀏覽器發送一個http響應--->瀏覽器接受此響應后在發送一個新的http請求到服務器---->服務器根據此請求尋找資源並發送給瀏覽器,他可以重定向到任意的URL,
不能共享request范圍內的數據。
重定向是在客戶端發揮作用,通過請求新的地址實現頁面的轉向。
重定向是通過瀏覽器重新請求地址,在地址欄中可以顯示轉向后的地址。
轉發的執行過程:
Web服務器調用內部的方法在容器內部完成請求處理和轉發動作---->將目標資源發送給瀏覽器,它只能在同一個Web應用中使用,可以共享request范圍內的數據。
轉發是在服務器端發揮的作用,通過forward()方法將提交信息在多個頁面間進行傳遞。
轉發是在服務器內部控制權的轉移,客戶端瀏覽器的地址欄不會顯示出轉發后的地址。
5 JSP對象常見的四個作用域?
page作用域:只在當前頁面有效,一旦離開當前頁面,則在該范圍內創建的對象將無法訪問。
request作用域:在同一個請求范圍內,可以訪問該范圍內創建的對象,一旦請求失敗,則創建的對象也隨之失效。
session作用域:在會話沒有失效或者銷毀前,都可以訪問該范圍內的對象。
application作用域:在整個Web應用服務器沒有停止前,都可以從application中進行數據存取。
6 JSP的九大內置對象?
1.request對象:客戶端的請求信息被封裝在request對象中,通過它才能了解到客戶的需求,然后做出響應。它是HttpServletRequest類的實例。
2.response對象: response對象包含了響應客戶請求的有關信息,但在JSP中很少直接用到它。它是HttpServletResponse類的實例。
3.session對象:session對象指的是客戶端與服務器的一次會話,從客戶端連接到服務器的一個WebApplication開始,直到客戶端與服務器斷開連接為止。它是HttpSession類
的實例。
4.out對象:out對象是JspWriter類的實例,是向客戶端輸出內容常用的對象。
5.page對象:page對象就是指向當前JSP頁面本身,有點象類中的this指針,它是java.lang.Object類的實例。
6.application對象:application對象實現了用戶間數據的共享,可存放全局變量。它開始於服務器的啟動,直到服務器的關閉,在此期間,此對象將一直存在;這樣在用戶的前
后連接或不同用戶之間的連接中,可以對此對象的同一屬性進行操作;在任何地方對此對象屬性的操作,都將影響到其他用戶對此的訪問。服務器的啟動和關閉決定了application對
象的生命。它是ServletContext類的實例。
7.exception對象:exception對象是一個例外對象,當一個頁面在運行過程中發生了例外,就產生這個對象。如果一個JSP頁面要應用此對象,就必須把isErrorPage設為true,
否則無法編譯。他實際上是java.lang.Throwable的對象。
8.pageContext對象:pageContext對象提供了對JSP頁面內所有的對象及名字空間的訪問,也就是說他可以訪問到本頁所在的SESSION,也可以取本頁面所在的application的
某一屬性值,他相當於頁面中所有功能的集大成者,它的本類名也叫pageContext。
9.config對象:config對象是在一個Servlet初始化時,JSP引擎向它傳遞信息用的,此信息包括Servlet初始化時所要用到的參數(通過屬性名和屬性值構成)以及服務器的有關信息(通過傳遞一個ServletContext對象)。
7 JSP頁面的靜態包含和動態包含的區別?
靜態包含:<@ include file="URL"> 靜態包含是指將被包含的文件插入JSP頁面中,簡單的說是將另一個文件中的代碼復制到一個JSP頁面中,被包含的文件代碼將會在JSP中執行。先將頁面包含,后執行頁面代碼,即將一個頁面的代碼復制到另一個頁面中。
動態包含:<jsp:include page="URL" /> 先執行頁面代碼,后將頁面包含,即將一個頁面的運行結果包含到另一個頁面中。當包含靜態頁面時效果等同於靜態包含。