JavaEE面試題庫分類及答案之二
24、使用Cookie物件
答:
寫入:
Cookie c=new Cookie(“maomao”,”xixi”);
c.setMaxAge(100);//單位秒
c.setPath(“/”);
response.addCookie(c);
讀取:
Cookie cookies []=request.getCookies();
if(cookies!=null)
{
for(int a=0;a<cookies.length;a++)
{
Cookie c=cookies[a];
if(……)
{
……
}
}
}
25、什麼是servlet:
在web容器中執行的伺服器端JAVA程式,主要用於響應HTTP請求。Servlet一般用於MVC中的控制器部分。
26、什麼是servlet容器:
用來管理servlet生命週期的應用程式如(tomcat)。
27、什麼是JSP頁面
java server page 是servlet的擴充套件,強調web頁面表達,編譯後是一個類servlet。
28、JSP標籤
動作標籤:jsp:include jsp:forword jsp:usebean jsp:set/get Property
指令標籤:<%@page……%> <%@include…..%> <%@taglib…..%>
29 servlet中如何(第5、6章)
a、從HTML表單中獲得引數
request.getParameterNames();enumer;
request.getParameter(); String
b、如何獲得請求頭部的資訊
Enumeration enumer=request.getHeaderNames();
While(enumer. HasMoreElements())
{
String header= enumer.next();
String result=request.getHeader(header);
Out.print(result);
}
c、如何獲得客戶cookie的資訊
request.getCookies();array[]
d、如何設定response的頭部資訊
response.setHeader();
e、如何設定響應的content type
response.setContentType(“text/html charset=utf-8”);
f、如何獲得I/O流、text流、二進位制流
g、如何從當前的servlet重定向到其他的URL
response.sendRedirect(“url”)
request.get RequstDispatcher(“url”) .forword(request,response);
h如何向客戶端寫cookie
Cookie cookie=new Cookie(“object”,”jklj”);
cookie.setMaxAge(時間);
cookie.sePath(“/”);
response.addCookie(cookie);
30、描述servlet的生命週期誰來控制servlet的生命週期,servlet生命週期在J2EE規範中是如何來定義
(看ppt2)
伺服器例項化一個servlet物件,容器執行其init()方法,請求到達時執行其service方法,service方法根據請求的型別呼叫(doGet,doPost)方法,當伺服器決定將例項銷燬時呼叫其destory方法。
PPT2中的servlet的生命週期:
(1)init 僅在servlet首次載入時執行一次。不是每次請求都要呼叫。
(2)service 在新執行緒中由伺服器為每個請求而呼叫。傳送到doGet,doPost等。不要覆蓋這個方法!
(3)doGet, doPost, doXxx 處理GET, POST, 等請求。覆蓋這些方法以提供期望的行為。
(4) destroy 在伺服器刪除servlet的例項時呼叫。不是每次請求後都呼叫。
31、如何建立Request Dispatcher物件,如何將請求轉發給其它的web資源(包含其它的web資源),描述如何利用request來存狀態,以及與其它儲存狀態方法有什麼區別
RequstDispatcher rd=request.get RequstDispatcher(“url”)
rd.forword(request,response);
request.setAttribute(“object”,”內容”);
request.setAttribute(“rs”,a);
request.get RequstDispatcher(“/s84.jsp”).forware(request,response);
一旦產生響應,request的生命週期就結束了
32、如何在web.xml中配置servlet定義(強調再強調)
name
包.類
對映
name
/servlet/SSSSS
33、獲得ServletConfig物件
ServletConfig sc=getServletConfig();
34、如何獲得servletContext物件
servletContext sc=getservletContext();
35、通過超連結來訪問servlet
呼叫servlet時採用了doPost、doGet、doForm、doHref中的哪個方法
doGet方法
36、說明如下的web的資源應該放在web容器中的什麼目錄下,靜態頁面JSP、servlet class、web.xml、Tag libraries、JAR File、java class以及需要保護的資原始檔
37、描述request session application的區別,建立監聽器類來監聽每個scope的生命週期
生命週期不同
request產生響應時生命週期結束,
session的有效期是在web.xml檔案當中設定,單位為分鐘。session的生命週期從會話開始而開始,會話結束而結束。結束會話的方式有兩種:超時和強制退出。
application的生命週期從伺服器啟動開始,伺服器關閉或者伺服器重啟結束。
38、JSP的內建物件及方法。(與前面題相同)
request表示HttpServletRequest物件。它包含了有關瀏覽器請求的資訊,並且提供了幾個用於獲取cookie, header, 和session資料的有用的方法。
response表示HttpServletResponse物件,並提供了幾個用於設定送回 瀏覽器的響應的方法(如cookies,頭資訊等)
out物件是javax.jsp.JspWriter的一個例項,並提供了幾個方法使你能用於向瀏覽器回送輸出結果。
pageContext表示一個javax.servlet.jsp.PageContext物件。它是用於方便存取各種範圍的名字空間、servlet相關的物件的API,並且包裝了通用的servlet相關功能的方法。
session表示一個請求的javax.servlet.http.HttpSession物件。Session可以存貯使用者的狀態資訊
applicaton 表示一個javax.servle.ServletContext物件。這有助於查詢有關servlet引擎和servlet環境的資訊
config表示一個javax.servlet.ServletConfig物件。該物件用於存取servlet例項的初始化引數。
page表示從該頁面產生的一個servlet例項
39、JSP的常用指令(見ppt11)
<%@page language=”java” contenType=”text/html;charset=gb2312” session=”true” buffer=”64kb” autoFlush=”true” isThreadSafe=”true” info=”text” errorPage=”error.jsp” isErrorPage=”true” isELIgnored=”true” pageEncoding=”gb2312” import=”java.sql.*”%>
isErrorPage(是否能使用Exception物件),isELIgnored(是否忽略表示式)
<%@include file=”filename”%>
<%@taglib prefix=”c”uri=”http://……”%>
PPT11中的內容:
(一)page指令的用途
• 為根據JSP頁面生成的servlet指定高層的資訊
• 能夠控制
– 匯入哪些類 – 該servlet擴充套件哪個類 – 產生哪種MIME型別 – 如何處理多執行緒
– servlet是否共享會話 – 輸出緩衝區的大小的行為 – 由哪個頁面來處理意外的錯誤
(二)import屬性
• 格式
– <%@ page import=”package.class” %> – <%@ page import=”package.class1,…,package.classN” %>
• 目的
– 在servlet定義的頂部生成匯入語句
• 注意
– 儘管JSP頁面幾乎可以放在伺服器的任何位置,但由
JSP使用的類必須放在常規的servlet目錄中
– 例如:
…/WEB-INF/classes或
…/WEB-INF/classes/directoryMatchingPackage
• 由JSP使用的實用工具類一定要使用包!
(三)contentType和pageEncoding屬性
• 格式
– <%@ page contentType=”MIME-Type” %> – <%@ page contentType=”MIME-Type; charset=Character-Set” %>
– <%@ page pageEncoding=”Character-Set” %>
• 目的
– 指定由JSP頁面生成的servlet生成的頁面的MIME型別
• 注意
– 屬性值不能在請求期間計算得出
– 常見MIME型別的表格,參見介紹響應報頭的章節。
(四)session屬性
• 格式
– <%@ page session=”true” %> <%– Default –%>
– <%@ page session=”false” %>
• 目的
– 指定頁面不是會話的一部分
• 注意
– 預設地,它是屬於會話。
– 如果網站的流量較大,可以節省伺服器端的記憶體。
– 要想真正起到作用,所有的相關網頁都必須這樣做。
(五)import屬性
– 改變由JSP頁面生成的servlet匯入的類
• 實用工具類一定要使用包!
• contentType屬性
– 指定結果的MIME型別
– 不能根據條件來使用
• 要想條件性地設定MIME型別,請使用
<% response.setContentType(…); %>
• errorPage和isErrorPage屬性
– 指定“緊急情況”錯誤處理頁面。
• isThreadSafe屬性
– 關閉並行訪問
– 請使用顯式的同步,而非這個屬性。
40、JSP和Servlet有哪些相同點和不同點,他們之間的聯絡是什麼?
JSP是Servlet技術的擴充套件,本質上是Servlet的簡易方式,更強調應用的外表表達。JSP編譯後是”類servlet”。
Servlet和JSP最主要的不同點在於,Servlet的應用邏輯是在Java檔案中,並且完全從表示層中的HTML裡分離開來。而JSP的情況是Java和HTML可以組合成一個副檔名為.jsp的檔案。JSP側重於檢視,Servlet主要用於控制邏輯。
41、四種會話跟蹤技術
會話作用域ServletsJSP 頁面描述
page是代表與一個頁面相關的物件和屬性。一個頁面由一個編譯好的 Java servlet 類(可以帶有任何的 include 指令,但是沒有 include 動作)表示。這既包括 servlet 又包括被編譯成 servlet 的 JSP 頁面
request是代表與 Web 客戶機發出的一個請求相關的物件和屬性。一個請求可能跨越多個頁面,涉及多個 Web 元件(由於 forward 指令和 include 動作的關係)
session是代表與用於某個 Web 客戶機的一個使用者體驗相關的物件和屬性。一個 Web 會話可以也經常會跨越多個客戶機請求
application是代表與整個 Web 應用程式相關的物件和屬性。這實質上是跨越整個 Web 應用程式,包括多個頁面、請求和會話的一個全域性作用域
43.重定向和請求分派區別
重定向 請求分派
Response.sendRedirect request.getRequestDispatcher(“/04172.jsp”).forward(request, response);
這個東西可以跳轉到外網 這個東西只能在本專案當中跳來跳去
這個東西跳轉之後位址列發生改變 跳轉之後還是顯示原來地址
不能跳轉到WEB-INF資料夾當中 可以啊
不支援 支援:
我們將一個物件放在request共享範圍當中(request.setAttribute(“sdfdsf”,”sdfds”))
通過請求轉發,是可以將這個物件傳送到目標地址的,其實就是下一頁,一般是個JSP