1、JSP中9種內置對象:
(1)out對象:負責管理對客戶端的請求信息
(2)request對象:負責得到客戶端的請求信息
(3)response對象:負責向客戶端發出響應
(4)session對象:負責保存同一客戶端一次會話過程中的一些信息
(5)application對象:表示整個應用環境的信息
(6)exception對象:表示頁面上發生的異常,可以通過它獲得頁面異常信息
(7)page對象:表示的是當前JSP頁面本身,就像Java定義的this一樣
(8)pageContext對象:表示的是此JSP的上下文
(9)config對象:表示此JSP的ServletConfig
2、response.sendRedirect與
(1)從浏覽器的地址顯示上來看:
forward方法屬於服務器端去請求資源,服務器直接訪問目標地址,並對該目標地址的響應內容進行讀取,再把讀取的內容發給浏覽器,因此此時客戶端浏覽器的地址不變。
而redirect是告訴客戶端,使浏覽器知道去請求哪一個地址,相當於客戶端重新請求一遍,所以地址欄會改變。
(2)從數據共享上來看:
forward轉發的頁,以及轉發到的目標頁能夠共享request裡面的數據,而redirect轉發的頁以及轉發到的目標頁不能共享request裡面的數據。
(3)從功能上來看:
redirect能夠重定向到當前應用程序的其他資源,而且能夠重定向到同一個站點上的其他應用程序中的資源。
forward方法只能在同一個web應用程序內的資源之間轉發請求,則可以理解為服務器內部的一種操作。
(4)從效率上來看:
forward效率較高,因為跳轉僅僅發生在服務器端。
redirect相對較低,因為類似於再進行一次請求。
3、Cookie操作:cookie是一種常見的在頁面之間傳遞數據的過程。Cookie是一個小的文本數據,由服務器端生成,發送給客戶端浏覽器,客戶端浏覽器如果設置為啟用cookie,則會將這個小文本數據保存到某個目錄下的文本文件內,下次登錄同一網站,客戶端浏覽器自動將cookie讀入。
4、定義JavaBean有如下兩種方法:
(1)直接在JSP中實例化JavaBean:這是在JSP中使用Java代碼,不提倡
<%
Student student=new Student();
//下面就可以使用實例化的student
%>
(2)使用
5、設置JavaBean屬性和獲取JavaBean屬性。
6、JavaBean的scope范圍:
(1)page:表示JavaBean對象的作用范圍只是在其實例化的頁面上,只有在當前頁面可用,在其他頁面不可用。
(2)request:表示JavaBean實例除了可以在當前頁面上可用之外,還可以在通過forward(3)session:表示JavaBean對象可以存在session中,該對象可以被同一個用戶一次會話的所有頁面認識到。(要保證是同一個客戶端,session才可以的)
(4)application:表示JavaBean對象可以存在application中,該對象可以被所有用戶的所有頁面認識到。
7、配置servlet,在web.xml中配置:
上面的
8、在不關閉服務器的情況下,若干次訪問只創建一個對象,只創建一個對象,很多用戶訪問的時候,會不會造成等待?
解:不會的,因為Servlet采用的是多線程機制,每一次請求,系統就會分配一個線程來運行doGet函數,但是這樣也會帶來安全問題,一般說來,不要在Servlet內定義成員變量,除非這些成員變量是所有的用戶公用的。
9、Servlet中獲取對象的方法:
(1)獲取out對象:PrintWriter out=response.getWriter()
(2)獲取request和response對象:
(3)獲得session對象:HttpSession session=request.getSession()
(4)獲得application對象:ServletContext application=this.getServletContext()
10、在Servlet中設置和讀取參數:
(1)設置參數:
設置全局參數:所有的Servlet都可以訪問該參數
設置局部參數:只有本Servlet可以訪問該參數
(2)獲取參數:
獲取全局參數:
ServletContext application=this.getServletContext(); application.getInitParameter(“參數名稱”);
獲取局部參數:
this.getInitParameter(“參數名稱”);
11、Servlet內實現跳轉:
(1)重定向(對應JSP內置對象中的sendRedirect)
response.sendRedirect(“URL地址”);
(2)服務器內跳轉(對應於JSP中的forward標簽):
ServletContext application=this.getServletContext();
RequestDispatcher rd=application.getRequestDispatcher(“URL地址”);
rd.forward(request,response);
一般情況下,當不需要傳遞參數或者需要跳轉到另一個服務器頁面時使用重定向,當需要從A頁面跳轉到B頁面時,存在著大量的暫態數據(即在B頁面顯示過後就可以不用的數據),為了節省內存,可以使用forward,可以避免把很多內容存儲在session中。
12、JSTL聲明的核心標簽庫:
<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core” %>
核心標簽庫:
(1)表達式操作:
(2)流程控制:
(3)迭代操作:
(4)URL操作。
13、Ajax(Asynchronous JavaScript and XML),當一個異步過程調用發出後,調用者不需要立刻得到結果,可以繼續做自己的事情,等到過程調用完畢,再通過回調函數通知調用方。而在同步情況下,調用方必須等待對方得到結果,才能繼續運行。
Ajax包含一下5部分:
(1)異步數據獲取技術:使用XMLHttpRequest,(它是所有技術的基礎)
(2)基於標准的表示技術:使用XHTML與CSS
(3)動態顯示和交互技術:使用Document Object Model(文檔對象模型)
(4)數據互換和操作技術:使用XML與XSLT
(5)JavaScript:將以上的技術融合在一起
14、實現Ajax程序的5個核心步驟:
(1)在IE中實例化Msxml2.XMLHTTP對象:
var xmlHttp=new ActiveObject(“Msxml2.XMLHTTP”);
Msxml2.XMLHTTP是IE浏覽器內置的對象,該對象具有異步提交數據和獲取結果的功能,如果不是IE浏覽器,則實例化方法如下:
<script type=”text/javascript”>
Var xmlHttp=new XMLHttpRequest();
</script>
(2)指定異步提交的目標和提交方式,調用了xmlHttp的open方法:
xmlHttp.open(“get”,”info.jsp”,true);此方法共單個參數,參數1表示請求的方式,參數2表示請求的目標是info.jsp,參數3為true時表示異步請求,為false表示非異步請求。
注意:此時知識指定異步提交的目標和提交方式,並沒有進行真正的提交。
(3)指定當xmlHttp狀態改變時,需要進行的處理,處理一般是以相應函數的形式進行:
xmlHttp.onreadystatechange=function(){
//處理代碼
}
該代碼中用到了xmlHttp的onreadystatechange事件,表示xmlHttp狀態改變時,調用處理代碼。也可以直接將處理代碼單獨寫成函數。
(4)編寫處理代碼:
xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4)
infoDiv.innerHTML=xmlHttp.responseText;
}
(5)發出請求,調用xmlHttp的send函數:
xmlHttp.send();
15、Ajax具有如下的優點:
(1)減輕服務器負擔,避免整個浏覽器窗口刷新的時造成的重復請求。
(2)帶來更好的用戶體驗。
(3)進一步促進頁面呈現和數據本身的分離。
缺點:
(1)對浏覽器有一定的限制,對於不兼容的浏覽器,無法使用。
(2)Ajax沒有刷新按鈕,浏覽器上的“後退”按鈕是失效的,因此,客戶經常無法回退到以前的操作。
16、MVC(Model、View、Controller):軟件開發過程中比較流行的設計思想,基於該思想,將JSP拆成三個模塊來實現,首先,編寫JSP,負責輸入查詢代碼,提交到Servlet,Servlet進行安全驗證,調用DAO來訪問數據庫,得到結果,跳轉到JSP顯示。
我們可以從這種設計思想上發現:程序被分成了不同的模塊,顯示、業務邏輯、過程控制相互獨立,使得軟件在伸縮性和可維護性方面有了很大的優勢。
M(Model),封裝應用程序的數據結構和事務邏輯,集中體現應用程序的狀態,當數據狀態改變的時候,能夠在視圖中體現出來,JavaBean適合這個角色。
V(View),是Model的外在表現,模型狀態改變時,有所體現,JSP非常適合這個角色。
C(Controller),對用戶的輸入進行響應,將模型和視圖聯系到一起,負責將數據寫到模型中,並調用視圖,Servlet適合這個角色。
17、Structs中常用的組件:JSP、ActionServlet、ActionForm、Action、JavaBean、配置文件等。
(1)用戶輸入,JSP表單提交給ActionServlet。
(2)ActionServlet將表單信息封裝在ActionForm內,轉交Action。
(3)ActionServlet不直接處理業務邏輯,讓Action來調用JavaBean(DAO)。
(4)Action返回要跳轉的JSP頁面地址給ActionServlet。
(5)ActionServlet進行跳轉,結果在JSP上顯示。
注意:
(1)ActionServlet先實例化LoginForm對象,然後調用LoginForm的setAccount函數,封裝表單數據,然後實例化LoginAction進行處理。
(2)LoginForm和LoginAction第一次實例化之後就不會再實例化,這和Servlet的原理是一樣的,實際上是一個對象用多線程的方式來運行。
18、Struts三個主要標簽庫:
(1)struts-html taglib(htm標簽庫):包含來生成動態HTML用戶界面和窗體標簽。
(2)struts-bean taglib(bean標簽庫):包含訪問bean和bean屬性時使用的標簽,也包含一些消息顯示的標簽。
(3)struts-logic taglib(邏輯標簽庫):包含的標簽來管理一些邏輯條件,根據邏輯條件進行一些操作。