Servlet&JSP中的知識點

來源:互聯網
上載者:User

Servlet&JSP中的知識點

1、說一說Servlet的生命週期?

(1)、servlet容器負責載入和執行個體化servlet 答:servlet有良好的生存期的定義,包括載入和執行個體化、初始化、處理請求以及服務結束。這個生存期由

javax.servlet.Servlet介面的init,service和destroy方法表達。 Servlet被伺服器執行個體化後,容器運行

其init方法,請求到達時運行其service方法,service方法自動派遣運行與請求對應的doXXX方法(doGet

,doPost)等,當伺服器決定將執行個體銷毀的時候調用其destroy方法。

與cgi的區別在於servlet處於伺服器處理序中,它通過多線程方式運行其service方法,一個執行個體可以服務於

多個請求,並且其執行個體一般不會銷毀,而CGI對每個請求都產生新的進程,服務完成後就銷毀,所以效率上

低於servlet。

2、JAVA SERVLET API中forward() 與redirect()的區別? 答:前者僅是容器中控制權的轉向,在用戶端瀏覽器地址欄中不會顯示出轉向後的地址;後者則是完全的跳

轉,瀏覽器將會得到跳轉的地址,並重新發送請求連結。這樣,從瀏覽器的地址欄中可以看到跳轉後的鏈

接地址。所以,前者更加高效,在前者可以滿足需要時,盡量使用forward()方法,並且,這樣也有助於隱

藏實際的連結。在有些情況下,比如,需要跳轉到一個其它伺服器上的資源,則必須使用sendRedirect()

方法。

3、Servlet的基本架構 答: public class ServletName extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }

4、什麼情況下調用doGet()和doPost()? 答:Jsp頁面中的form標籤裡的method屬性為get時調用doGet(),為post時調用doPost()。

5 servlet的生命週期 答:web容器載入servlet,生命週期開始。通過調用servlet的init()方法進行servlet的初始化。通過調

用service()方法實現,根據請求的不同調用不同的do***()方法。結束服務,web容器調用servlet的

destroy()方法。

6、如何現實servlet的單線程模式 答:<%@ page isThreadSafe="false"%>

7、頁面間對象傳遞的方法 答:request,session,application,cookie等

8、JSP和Servlet有哪些相同點和不同點,他們之間的聯絡是什嗎? 答:JSP是Servlet技術的擴充,本質上是Servlet的簡易方式,更強調應用的外表表達。JSP編譯後是"類

servlet"。Servlet和JSP最主要的不同點在於,Servlet的應用邏輯是在Java檔案中,並且完全從展示層中

的HTML裡分離開來。而JSP的情況是Java和HTML可以組合成一個副檔名為.jsp的檔案。JSP側重於視圖,

servlet主要用於控制邏輯。

9、四種會話跟蹤技術 答:會話範圍ServletsJSP 頁面描述 1、page否是代表與一個頁面相關的對象和屬性。一個頁面由一個編譯好的 Java servlet 類(可以帶有任

何的 include 指令,但是沒有 include 動作)表示。這既包括 servlet 又包括被編譯成 servlet 的

JSP 頁面; 2、request是是代表與 Web 客戶機發出的一個請求相關的對象和屬性。一個請求可能跨越多個頁面,涉及

多個 Web 元件(由於 forward 指令和 include 動作的關係); 3、session是是代表與用於某個 Web 客戶機的一個使用者體驗相關的對象和屬性。一個 Web 會話可以也經

常會跨越多個客戶機請求; 4、application是是代表與整個 Web 應用程式相關的對象和屬性。這實質上是跨越整個 Web 應用程式,

包括個頁面、請求和會話的一個全域範圍。

10、Request對象的主要方法 答: setAttribute(String name,Object):設定名字為name的request的參數值 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):刪除請求中的一個屬性

11、我們在web應用開發過程中經常遇到輸出某種編碼的字元,如iso8859-1等,如何輸出一個某種編碼的

字串? 答: Public String translate (String str) { String tempStr = ""; try { tempStr = new String(str.getBytes("ISO-8859-1"), "GBK"); tempStr = tempStr.trim(); } catch (Exception e) { System.err.println(e.getMessage()); } return tempStr; }

12、Servlet執行時一般實現哪幾個方法? 答: public void init(ServletConfig config) public ServletConfig getServletConfig() public String getServletInfo() public void service(ServletRequest request,ServletResponse response) public void destroy()

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.