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;
}