2018.10.3 MianShiBaoDian JavaWeb後端部分

MSBD 4、JavaWeb後端部分

1.Tomcat的優化經驗

去掉對web.xml的監控,吧jsp提早編寫成servlet,因爲物理內存的狀況,加大Tomcat使用的jvm的內存

2.HTTP請求的GET與POST方式的區別

(1)get是從服務器上獲取數據,post是向服務器傳送數據。
    (2)get是把參數數據隊列加載大提交表單的Action屬性所指向的Url中,值和表單內各個字段一一對應,在Url中能夠看到。post經過Http post機制,將表單內的各個字段與其內容在HTML HEADER內一塊兒傳送到Action屬性所指的Url地址。用戶看不到這個進程。          
    (3)對於get方式。服務器端用request。QueryString獲取變量的值,對於post方式,服務器端用request.form 獲取提交的數據 
    (4)get傳送的數據量較小,不能大於2KB。post傳送的數據量較大,通常被默認爲不受限制。但理論上,IIS4中最大量爲80KB,IIS5中爲100KB
    (5)get安全性很是低,post安全性較高。可是執行效率區別post方法好

3.解釋一下什麼是servlet?

是用Java編寫的服務器端程序。主要功能在與交互式地瀏覽和修改數據,生成動態Web內容。狹義的Servlet是指Java語言實現的一個接口,廣義的Servlet是指任何實現這個Servlet接口的類,通常狀況下,人們將Servlet理解爲後者。Servlet雲星宇支持Java的應用服務器中。從原理上講,Servlet能夠響應任何類型的請求,但絕大多數狀況下Servlet只用來擴展基於HTTP協議的Web服務器。

4.說一說Servlet的生命週期

servlet 有良好的生存期定義,包括加載和實例化、初始化、處理請求以及服務結束。這個生存期有javax.servlet.Servlet  接口的init,service和的story方法表達
    servlet被服務器實例化後,容器運行期init方法,請求到達時運行其service方法,service方法自動派遣運行語言請求對應的doXXX方法(doGet,doPost)等,當服務器決定實例銷燬的時候調用其的story方法。
    web容器加載servlet,生命週期開始。經過調用servlet的init() 進行servlet的初始化。經過調用service()方法實現,根據請求的不一樣調用不一樣的do***()   方法結束服務,web容器調用servlet的destory()  方法

五、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()  方法,而且這樣也有助於隱藏實際的連接。在有些狀況下,好比,須要跳轉到一個其餘服務器上的資源,則必須使用sendRedirect()   方法

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

Jsp頁面中的FORM標籤裏的method屬性爲get時調用doGet(),爲post時調用doPost()。

8.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():得到客戶端向服務器端傳送數據的方法

9.forward和redirect的區別

forward 是服務器請求資源,服務器直接訪問目標地址的URL,把那個URl的響應內容讀取過來,而後把這些內容在發給瀏覽器,瀏覽器根本不知道服務器發送的內容是從哪裏發過來的,因此它的地址欄仍是原來的地址不會改變
    redirect就是服務器端根據邏輯,,發送一個請求狀態碼,高速瀏覽器從新去請求那個地址,通常倆說瀏覽器會用剛纔請求的全部參數從新請求,因此session,request參數均可以獲取。

10.request.getAttribute() 和request.getParameter() 有什麼區別?

getParameter 是用來接受用post個get方法傳遞過來的參數的.
    getAttribute 必須先setAttribute.

    (1)request.getParameter() 取得是經過容器的實現來取得經過相似post,get等方式傳入的數據,request.setAttribute()和getAttribute()只是在web容器內部流轉,僅僅是請求處理階段。

    (2)request.getParameter() 方法傳遞的數據,會從Web客戶端傳到Web服務器端,表明HTTP請求數據。request.getParameter()方法返回String類型的數據。
    (3)HttpServletRequest 類有setAttribute()方法,而沒有setParameter()方法

11.Jsp有哪些內置對象?做用分別是什麼?分別有什麼方法?

JSp有9個內置對象
        request用戶端請求:次請求會包含來自get、post請求的參數
        response  網頁傳回用戶端的迴應
        pageContext   網頁的屬性在這裏設置
        session   與請求有關的會話期
        application servlet     正在執行的內容
        out   用來傳送回應的輸出

12.Jsp有哪些動做?做用分別是什麼?

jsp共有6種基本動做
        jsp:include 在頁面被請求的時候引入一個文件
        jsp:useBean:尋找或實例化一個JavaBean
        jsp:setProperty:設置JavaBean的屬性
        jsp:setProperty:輸出某個JavaBean的屬性
        jsp:forward:把請求跳轉到一個新的頁面
        jsp:plugin: 根據瀏覽器類型爲Java插件生成Object或Embed標記

13.Jsp經常使用指令

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

    <%@ page import="com.etc.vo.*" %>
    <%@ page pageEcoding="gb2312" %>
errorPage屬性:設置JSP頁面的錯誤頁面。當JSP中發生異常或錯誤卻沒有被處理時,容器將請求轉發到錯誤頁面。  <%@ page errorPage="error.jsp" %>

14.Jsp動態include 和靜態include的區別?

動態include用jsp:include  動做實現
    <jsp:include page="include.jsp" flush=true />它老是會檢查所含文件中的變化,適合用於包含動態頁面,而且能夠帶參數,靜態include用include僞碼實現,定不會檢查所含文件的變化,適用於含靜態頁面<%@ include file="include.jsp"%>

15.兩種跳轉方式分別是什麼?有什麼區別?

有兩種:分別是,
        <jsp:include page="a.jsp" flush=true />
        <jsp:forward page="b.jsp"/>
          前者頁面不會轉向,include所指的頁面,只是顯示該頁的結果。主頁面仍是原來的頁面,執行完後還會回來,至關於函數的掉調用

16.頁面間對象傳遞的方法

request session application cookie

17.JSP和Servlet有哪些相同點和不通電,他們之間的聯繫是什麼?

Jsp是Servlet技術的擴展,本質上是Servlet的簡易方式,更強調應用的外表表達。Jsp編譯後是類Servlet。Servlet和Jsp最主要的不一樣點在於Servlet的應用邏輯是在Java文件中,而且徹底從表示層中的HTML裏分離開來。而Jsp的狀況是Java和HTML徹底組合成一個擴展名爲.jsp 的文件。Jsp側重於師徒,Servlet主要用於控制邏輯

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

MVC是Model--View--Controller的簡寫。Model表明的是應用業務邏輯(經過JavaBean,EJB組件來實現),View是應用的表示面(由Jsp頁面產生),COntroller是提供應用的處理過程控制(通常是一個servlet),經過這種設計模式把應用邏輯,處理過程和顯示分紅不一樣的組件實現。這些組件能夠進行交互和重用

19.咱們在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; 
 }
相關文章
相關標籤/搜索