78、什么情況下調(diào)用doGet()和doPost()?
答:Jsp頁面中的form標(biāo)簽里的method屬性為get時(shí)調(diào)用doGet(),為post時(shí)調(diào)用doPost()。
79、servlet的生命周期。
答:web容器加載servlet,生命周期開始。通過調(diào)用servlet的init()方法進(jìn)行servlet的初始化。通過調(diào)用service()方法實(shí)現(xiàn),根據(jù)請求的不同調(diào)用不同的do***()方法。結(jié)束服務(wù),web容器調(diào)用servlet的destroy()方法。
80、如何現(xiàn)實(shí)servlet的單線程模式。
答:<%@ page isThreadSafe="false"%>
81、頁面間對象傳遞的方法。
答:request,session,application,cookie等
82、JSP和Servlet有哪些相同點(diǎn)和不同點(diǎn),他們之間的聯(lián)系是什么?
答:JSP是Servlet技術(shù)的擴(kuò)展,本質(zhì)上是Servlet的簡易方式,更強(qiáng)調(diào)應(yīng)用的外表表達(dá)。JSP編譯后是"類servlet"。
Servlet和JSP最主要的不同點(diǎn)在于,Servlet的應(yīng)用邏輯是在Java文件中,并且完全從表示層中的HTML里分離開來。而JSP的情況是Java和HTML可以組合成一個(gè)擴(kuò)展名為.jsp的文件。
JSP側(cè)重于視圖,Servlet主要用于控制邏輯。
83、四種會話跟蹤技術(shù)。
答:會話作用域Servlets JSP 頁面描述
page否是代表與一個(gè)頁面相關(guān)的對象和屬性。一個(gè)頁面由一個(gè)編譯好的 Java servlet 類(可以帶有任何的 include 指令,但是沒有 include 動(dòng)作)表示。這既包括 servlet 又包括被編譯成 servlet 的 JSP 頁面。
request是代表與 Web 客戶機(jī)發(fā)出的一個(gè)請求相關(guān)的對象和屬性。一個(gè)請求可能跨越多個(gè)頁面,涉及多個(gè) Web 組件(由于 forward 指令和 include 動(dòng)作的關(guān)系)。
session是代表與用于某個(gè) Web 客戶機(jī)的一個(gè)用戶體驗(yàn)相關(guān)的對象和屬性。一個(gè) Web 會話可以也經(jīng)常會跨越多個(gè)客戶機(jī)請求 。
application是代表與整個(gè) Web 應(yīng)用程序相關(guān)的對象和屬性。這實(shí)質(zhì)上是跨越整個(gè) Web 應(yīng)用程序,包括多個(gè)頁面、請求和會話的一個(gè)全局作用域。
84、Request對象的主要方法。
答: setAttribute(String name,Object):設(shè)置名字為name的request的參數(shù)值
getAttribute(String name):返回由name指定的屬性值
getAttributeNames():返回request對象所有屬性的名字集合,結(jié)果是一個(gè)枚舉的實(shí)例
getCookies():返回客戶端的所有Cookie對象,結(jié)果是一個(gè)Cookie數(shù)組
getCharacterEncoding():返回請求中的字符編碼方式
getContentLength():返回請求的Body的長度
getHeader(String name):獲得HTTP協(xié)議定義的文件頭信息
getHeaders(String name):返回指定名字的requestHeader的所有值,結(jié)果是一個(gè)枚舉的實(shí)例
getHeaderNames():返回所以request Header的名字,結(jié)果是一個(gè)枚舉的實(shí)例
getInputStream():返回請求的輸入流,用于獲得請求中的數(shù)據(jù)
getMethod():獲得客戶端向服務(wù)器端傳送數(shù)據(jù)的方法
getParameter(String name):獲得客戶端傳送給服務(wù)器端的有name指定的參數(shù)值
getParameterNames():獲得客戶端傳送給服務(wù)器端的所有參數(shù)的名字,結(jié)果是一個(gè)枚舉的實(shí)例
getParameterValues(String name):獲得有name指定的參數(shù)的所有值
getProtocol():獲取客戶端向服務(wù)器端傳送數(shù)據(jù)所依據(jù)的協(xié)議名稱
getQueryString():獲得查詢字符串
getRequestURI():獲取發(fā)出請求字符串的客戶端地址
getRemoteAddr():獲取客戶端的IP地址
getRemoteHost():獲取客戶端的名字
getSession([Boolean create]):返回和請求相關(guān)Session
getServerName():獲取服務(wù)器的名字
getServletPath():獲取客戶端所請求的腳本文件的路徑
getServerPort():獲取服務(wù)器的端口號
removeAttribute(String name):刪除請求中的一個(gè)屬性
85、我們在web應(yīng)用開發(fā)過程中經(jīng)常遇到輸出某種編碼的字符,如iso8859-1等,如何輸出一個(gè)某種編碼的字符串?
答:
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;
}
86、Servlet執(zhí)行時(shí)一般實(shí)現(xiàn)哪幾個(gè)方法?
答: public void init(ServletConfig config)
public ServletConfig getServletConfig()
public String getServletInfo()
public void service(ServletRequest request,ServletResponse response)
public void destroy()