1、什么是jsp,什么是Servlet?jsp 和Servlet 有什么區別?
jsp本質上就是一個Servlet,它是Servlet的一種特殊形式(由SUN公司推出),每個jsp頁面都是一個servlet實例。Servlet是由Java提供用于開發web服務器應用程序的一個組件,運行在服務端,由servlet容器管理,用來生成動態內容。一個servlet實例是實現了特殊接口Servlet的Java類,所有自定義的servlet均必須實現Servlet接口。
● 區別:
jsp是html頁面中內嵌的Java代碼,側重頁面顯示;
Servlet是html代碼和Java代碼分離,側重邏輯控制,mvc設計思想中jsp位于視圖層,servlet位于控制層
jsp運行機制:如下圖
JVM只能識別Java類,并不能識別jsp代碼!web容器收到以.jsp為擴展名的url請求時,會將訪問請求交給tomcat中jsp引擎處理,每個jsp頁面第一次被訪問時,jsp引擎將jsp代碼解釋為一個servlet源程序,接著編譯servlet源程序生成.class文件,再有web容器servlet引擎去裝載執行servlet程序,實現頁面交互。
四大域對象:
● pageContext page域-指當前頁面,在當前jsp頁面有效,跳到其它頁面失效。
● requestrequest域-指一次請求范圍內有效,從http請求到服務器處理結束,返回響應的整個過程。在這個過程中使用forward(請求轉發)方式跳轉多個jsp,在這些頁面里你都可以使用這個變量。
● sessionsession域-指當前會話有效范圍,瀏覽器從打開到關閉過程中,轉發、重定向均可以使用。
● applicationcontext域-指只能在同一個web中使用,服務器未關閉或者重啟,數據就有效。
xml是一種可擴展性標記語言,支持自定義標簽(使用前必須預定義)使用DTD和XMLSchema標準化XML結構。
優點:用于配置文件,格式統一,符合標準;用于在互不兼容的系統間交互數據,共享數據方便;
缺點:xml文件格式復雜,數據傳輸占流量,服務端和客戶端解析xml文件占用大量資源且不易維護
xml常用解析器有2種,分別是:DOM和SAX。主要區別在于它們解析xml文檔的方式不同。使用DOM解析,xml文檔以DOM樹形結構加載入內存,而SAX采用的是事件模型。
Ajax是一種創建交互式網頁應用的的網頁開發技術;AsynchronousJavaScriptandXML的縮寫。
Ajax的優勢:通過異步模式,提升了用戶體驗。優化了瀏覽器和服務器之間的傳輸,減少不必要的數據往返,減少了帶寬占用。Ajax引擎在客戶端運行,承擔了一部分本來由服務器承擔的工作,從而減少了大用戶量下的服務器負載。
Ajax的最大特點:可以實現局部刷新,在不更新整個頁面的前提下維護數據,提升用戶體驗度。
JavaScript是一種在Web開發中經常使用的前端動態腳本技術。在JavaScript中,有一個很重要的安全性限制,被稱為“Same-OriginPolicy”(同源策略)。這一策略對于JavaScript代碼能夠訪問的頁面內容做了很重要的限制,即JavaScript只能訪問與包含它的文檔在同一域下的內容。
JavaScript這個安全策略在進行多iframe或多窗口編程、以及Ajax編程時顯得尤為重要。根據這個策略,在baidu.com下的頁面中包含的JavaScript代碼,不能訪問在google.com域名下的頁面內容;甚至不同的子域名之間的頁面也不能通過JavaScript代碼互相訪問。對于Ajax的影響在于,通過XMLHttpRequest實現的Ajax請求,不能向不同的域提交請求,例如,在abc.example.com下的頁面,不能向def.example.com提交Ajax請求,等等。然而,當進行一些比較深入的前端編程的時候,不可避免地需要進行跨域操作,這時候“同源策略”就顯得過于苛刻。JSONP跨域GET請求是一個常用的解決方案,下面我們來看一下JSONP跨域是如何實現的,并且探討下JSONP跨域的原理。jsonp的最基本的原理是:動態添加一個<script>標簽,使用script標簽的src屬性沒有跨域的限制特點。首先在客戶端注冊一個callback,然后把callback的名字傳給服務器。此時,服務器先生成json數據。然后以javascript語法的方式,生成一個function,function名字就是傳遞上來的參數jsonp。最后將json數據直接以入參的方式,放置到function中,這樣就生成了一段js語法的文檔,返回給客戶端。客戶端瀏覽器,解析script標簽,并執行返回的javascript文檔,此時數據作為參數,傳入到了客戶端預先定義好的callback函數里。