Servlet的request和response


  SERVLET APIforward() redirect()的區別? 

:前者僅是容器中控制權的轉向,在客戶端瀏覽器地址欄中不會顯示出轉向后的地址;后者則是完全的跳轉,瀏覽器將會得到跳轉的地址,並重新發送請求鏈接。這樣,從瀏覽器的地址欄中可以看到跳轉后的鏈接地址。所以,前者更加高效,在前者可以滿足需要時,盡量使用forward()方法,並且,這樣也有助於隱藏實際的鏈接。在有些情況下,比如,需要跳轉到一個其它服務器上的資源,則必須使用sendRedirect()方法。

 

  什么情況下調用doGet()doPost() 

Jsp頁面中的FORM標簽里的method屬性為get時調用doGet(),為post時調用doPost()

 

 

  Request對象的主要方法: 

setAttribute(String name,Object):設置名字為namerequest的參數值

getAttribute(String name):返回由name指定的屬性值

getAttributeNames():返回request對象所有屬性的名字集合,結果是一個枚舉的實例

getCookies():返回客戶端的所有Cookie對象,結果是一個Cookie數組

getCharacterEncoding():返回請求中的字符編碼方式

getContentLength():返回請求的Body的長度

getHeader(String name):獲得HTTP協議定義的文件頭信息

getHeaders(String name):返回指定名字的request Header的所有值,結果是一個枚舉的實例

getHeaderNames():返回所以request Header的名字,結果是一個枚舉的實例

getInputStream():返回請求的輸入流,用於獲得請求中的數據

getMethod():獲得客戶端向服務器端傳送數據的方法

getParameter(String name):獲得客戶端傳送給服務器端的有name指定的參數值

getParameterNames():獲得客戶端傳送給服務器端的所有參數的名字,結果是一個枚舉的實例

getParametervalues(String name):獲得有name指定的參數的所有值

getProtocol():獲取客戶端向服務器端傳送數據所依據的協議名稱

getQueryString():獲得查詢字符串

getRequestURI():獲取發出請求字符串的客戶端地址

getRemoteAddr():獲取客戶端的IP地址

getRemoteHost():獲取客戶端的名字

getSession([Boolean create]):返回和請求相關Session

getServerName():獲取服務器的名字

getServletPath():獲取客戶端所請求的腳本文件的路徑

getServerPort():獲取服務器的端口號

removeAttribute(String name):刪除請求中的一個屬性

 

 

  forward redirect的區別 

  forward是服務器請求資源,服務器直接訪問目標地址的URL,把那個URL的響應內容讀取過來,然后把這些內容再發給瀏覽器,瀏覽器根本不知道服務器發送的內容是從哪兒來的,所以它的地址欄中還是原來的地址。

     redirect就是服務端根據邏輯,發送一個狀態碼,告訴瀏覽器重新去請求那個地址,一般來說瀏覽器會用剛才請求的所有參數重新請求,所以session,request參數都可以獲取。

 

  request.getAttribute() request.getParameter() 有何區別?

 

1,getAttribute表示從request范圍取得設置的屬性,必須要先setAttribute設置屬性,才能通過getAttribute來取得,設置與取得的為Object對象類型

 

2,getParameter表示接收參數,參數為頁面提交的參數,包括:表單提交的參數、URL重寫(就是xxx?id=1中的id)傳的參數等,因此這個並沒有設置參數的方法(沒有setParameter),而且接收參數返回的不是Object,而是String類型

 

  jsp有哪些內置對象?作用分別是什么? 分別有什么方法? 

JSP共有以下9個內置的對象:

request 用戶端請求,此請求會包含來自GET/POST請求的參數

response 網頁傳回用戶端的回應

pageContext 網頁的屬性是在這里管理

session 與請求有關的會話期

application servlet 正在執行的內容

out 用來傳送回應的輸出

config servlet的構架部件

page JSP網頁本身

exception 針對錯誤網頁,未捕捉的例外

request表示HttpServletRequest對象。它包含了有關瀏覽器請求的信息,並且提供了幾個用於獲取cookie, header, session數據的有用的方法。

   response表示HttpServletResponse對象,並提供了幾個用於設置送回 瀏覽器的響應的方法(如cookies,頭信息等)

   out對象是javax.jsp.JspWriter的一個實例,並提供了幾個方法使你能用於向瀏覽器回送輸出結果。

   pageContext表示一個javax.servlet.jsp.PageContext對象。它是用於方便存取各種范圍的名字空間、servlet相關的對象的API,並且包裝了通用的servlet相關功能的方法。

   session表示一個請求的javax.servlet.http.HttpSession對象。Session可以存貯用戶的狀態信息

   applicaton 表示一個javax.servle.ServletContext對象。這有助於查找有關servlet引擎和servlet環境的信息

   config表示一個javax.servlet.ServletConfig對象。該對象用於存取servlet實例的初始化參數。

   page表示從該頁面產生的一個servlet實例

 

 

   jsp有哪些動作?作用分別是什么? 

(這個問題似乎不重要,不明白為何有此題)

jsp:include:在頁面被請求的時候引入一個文件。

jsp:useBean:尋找或者實例化一個JavaBean

jsp:setProperty:設置JavaBean的屬性。

jsp:getProperty:輸出某個JavaBean的屬性。

jsp:forward:把請求轉到一個新的頁面。

jsp:plugin:根據瀏覽器類型為Java插件生成OBJECTEMBED標記

 

  JSP的常用指令 

isErrorPage(是否能使用Exception對象)isELIgnored(是否忽略表達式)

 

 

  JSP中動態INCLUDE與靜態INCLUDE的區別? 

答:動態INCLUDEjsp:include動作實現

<jsp:include page=included.jsp flush=true />它總是會檢查所含文件中的變化,適合用於包含動態頁面,並且可以帶參數 靜態INCLUDEinclude偽碼實現,定不會檢查所含文件的變化,適用於包含靜態頁面 <%@ include file=included.htm %>

 

 

  兩種跳轉方式分別是什么?有什么區別? 

<jsp:include page=included.jsp flush=true>

<jsp:forward page= nextpage.jsp/>

前者頁面不會轉向include所指的頁面,只是顯示該頁的結果,主頁面還是原來的頁面。執行完后還會回來,相當於函數調用。並且可以帶參數.后者完全轉向新頁面,不會再回來。相當於go to 語句。

  頁面間對象傳遞的方法 

requestsessionapplicationcookie

 

 

  JSPServlet有哪些相同點和不同點,他們之間的聯系是什么? 

JSPServlet技術的擴展,本質上是Servlet的簡易方式,更強調應用的外表表達。JSP編譯后是"servlet"ServletJSP最主要的不同點在於,Servlet的應用邏輯是在Java文件中,並且完全從表示層中的HTML里分離開來。而JSP的情況是JavaHTML可以組合成一個擴展名為.jsp的文件。JSP側重於視圖,Servlet主要用於控制邏輯。

 

 

  MVC的各個部分都有那些技術來實現?如何實現? 

MVCModelViewController的簡寫。Model 代表的是應用的業務邏輯(通過JavaBeanEJB組件實現), View 是應用的表示面(由JSP頁面產生),Controller 是提供應用的處理過程控制(一般是一個Servlet),通過這種設計模型把應用邏輯,處理過程和顯示邏輯分成不同的組件實現。這些組件可以進行交互和重用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM