java基礎知識記錄--Java web部分(摘自張孝祥整理java面試題)__Java

來源:互聯網
上載者:User
         

1.tomcat的最佳化經驗

        去掉對web.xml的監視,把jsp提前編輯成Servlet。

        有富餘實體記憶體的情況,加大tomcat使用的jvm的記憶體。

2.HTTP請求的get和post方式的區別:

    http定義了與伺服器互動的不同方法,最基本的方法時get和post。

 區別:

       1.get是從伺服器上擷取資料,post是向伺服器傳送資料。

       2. get是把參數資料隊列加到提交表單的action屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到。post是通過httppost機制,將表單內各個欄位與其內容放置在HTML HEADER內一起傳送到action屬性所知的URL地址。使用者看不到這個過程。

       3. 對於get方式,伺服器端用request.QueryString擷取變數的值,對於post方式,伺服器端用request.Form擷取提交的資料。

       4.get傳送的資料量較小,不能大於2KB。post傳送的資料量較大,一般被預設為不受限制。但理論上,IIS4中最大量為80KB,IIS中為100KB。

       5.get安全性非常低,post安全性較高。

3.解釋一下什麼是servlet

      servlet有良好的生存期的定義,包括載入和執行個體化、初始化、處理請求以及服務結束。這個生存期由javax.servlet.Servlet介面的init,service和destroy方法表達。

4.說一說Servlet的生命週期:

       servlet被伺服器執行個體化後,容器運行其init方法,請求到達時運行其service方法,service方法自動派遣運行與請求對應的doXXX方法(doGet,doPost)等,當伺服器決定將執行個體銷毀的時候調用其destroy方法。

    web容器載入servlet,生命週期開始。通過調用servlet的init()方法進行servlet的初始化。通過調用service()方法實現,根據請求的不同調用不同的doXXX方法。結束服務,web容器調用servlet的destroy()方法。

5.  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{}

   }

6. servlet API中forward()與redirect()區別:

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

7. 什麼情況下調用doGet()和doPost()?

    JSP頁面中的Form標籤裡的method屬性為get時調用doGet(),為post時調用doPost()。

8. Request對象的主要方法:

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

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

    getAttributeName():返回request對象所有屬性的名字的集合,結果是一個枚舉的執行個體

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

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

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

    getHeader(String name):獲得HTTP協議定義的檔案頭資訊

    getHeasers(String name):返回指定名字的request Header的所有值,結果是一個枚舉的執行個體

    getHeaderNames():返回所有以request Header的名字,結果是一個枚舉的執行個體

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

    getMethod():獲得用戶端向伺服器端傳送資料的方法

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

    getParameterNames(String name):獲得用戶端傳送給伺服器端的所有參數的名字,結果是一個枚舉的執行個體

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

    getProtocol():擷取用戶端向伺服器端傳送資料所依據的協議名稱

    getQueryString():獲得查詢字串

    getRequestURI():擷取發出請求字串的用戶端地址

    getRemoteAddr():擷取用戶端的IP地址

    getRemoteHost():擷取用戶端的名字

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

    getServerName():擷取伺服器的名字

    getServletPath():擷取用戶端所請求的指令檔的路徑

    getServerPort():擷取伺服器的連接埠

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

9. forward和redirect的區別:

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

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

10. JSP 有哪些內建對象。作用分別是什麼。分別有什麼方法。

    JSP共有以下9個內建對象:

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

  response:網頁傳回使用者端的響應

  pageContext:網頁的屬性是在這裡管理

  session:與請求有關的會話期

  application: servlet 正在執行的內容

  out:用來傳送回應的輸出

  config:servlet的構架組件

  page:jsp網頁本身

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

 

     request表示HttpServletRequest對象。它包含了有關瀏覽器請求的資訊,並且提供了幾個用於擷取cookie,header和session資料的有用的方法。

     response表示HttpServletResponse對象,並提供了幾個用於設定送回瀏覽器的響應的方法(如cookie,頭資訊等)

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

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

     session表示一個請求的javax.servlet.http.HttpSession對象。Session可以存貯使用者的狀態資訊。

     application表示一個javax.servlet.ServletContext對象。這有助於尋找有關servlet引擎和servlet環境的資訊。

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

     page表示從該頁面產生的一個servlet執行個體。

11. jsp有那些動作。作用分別是什麼。

     jsp共有以下6中基本動作:

     jsp:include  在頁面被請求的時候引入一個檔案

     jsp:useBean  尋找或者執行個體化一個JavaBean

     jsp:setProperty 設定javabean的屬性

     jsp:getProperty 輸出某個javabean的屬性

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

     jsp:plugin 根據瀏覽器類型為java外掛程式產生OBJECT或EMBED標記

12. jsp的常用命令

      isErrorPage(是否能使用Exception對象),isELIgnored(是否忽略運算式)

13. jsp中動態include與靜態include的區別

      動態include用jsp:include動作實現 <jsp:include page=include.jsp flush=true/>它總是會檢查所含檔案中的變化,適合用於包含動態網頁面,並且可以帶參數。

      靜態include 用include偽碼實現,不會檢查所含檔案的變化,適用於包含靜態頁面<%@ include file=included.html %>

14. 頁面間對象傳遞 的方法:

      request   session  application  cookie等

15.jsp和servlet有哪些相同點和不同點,他們之間的聯絡是什麼?

     jsp是servlet技術的擴充,本質上是servlet的簡易方式,更強調應用的外表表達。jsp編譯後是“類servlet”。servlet和jsp最主要的不同點在於,servlet的應用邏輯是在java檔案中,並且完全從展示層中html裡分離開來。而jsp的情況是java和html可以組合成一個副檔名為.jsp的檔案。jsp側重於視圖,servlet主要用於邏輯控制。

16. MVC的各個部分都有哪些技術來實現。如何?。

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

17. 我們在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;

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.