程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> JSP知識點總結-面試

JSP知識點總結-面試

編輯:關於JSP

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中配置:

welcomeservlet
servlets.WelcomeServlet


welcomeservlet
/servlets/WelcomeServlet
上面的不一定非要是類路徑,也可以是其他的。


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可以訪問該參數

  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)表達式操作:
顯示數據的內容;
對變量或者JavaBean的變量屬性進行賦值;
刪除存在於scope中的變量。
(2)流程控制:
用於簡單的條件語句;
以及這三個標簽通常會一起使用,用於復雜語句的判斷;
為循環控制標簽,功能是將集合中的成員順序浏覽一遍,在實際應用開發中,使用頻率最高;
標簽是用來浏覽字符串裡的所有成員,其成員是用分隔符delims所分隔的。
(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(邏輯標簽庫):包含的標簽來管理一些邏輯條件,根據邏輯條件進行一些操作。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved