天天看點

Jsp&servlet知識問答

1 三個Statment差別,用法

Statment,基本的;PreparedStatement是可編譯的,提高效率,callablestatment,存儲過程

2 Cookie

答:臨時cookic存在于記憶體中,(公話),長時cookic存在于硬碟上長時coolkie和臨時cookie 路徑問題

3 servlet調試方式幾種方法

答:使用列印語句,使用TOMCAT日志,傳回錯誤頁面,使用IDE內建,重起伺服器,直接檢視HTML源代碼,分别處理請求和響應資料。

4.Cookie 與session 的差別是:session為短對話,Cookie可以設定任意時間的有效期。

5.Get請求和Post請求差別

答:a、Post是通過Http中的Post機制将表單中的資料送出道Action所制定的程式Get方法是通過Url請求來送出表單資料的。

b.Get适用于傳輸資料量小于1K資料,執行效率高。Post傳輸資料量較大,但也有限量。

6. servlet生命周期

答: Servlet 的生命周期始于将它裝入 Web 伺服器的記憶體時,并在終止或重新裝入 Servlet 時結束。包括加載和執行個體化、初始化、處理請求以及服務結束。這個生存期由 javax.servlet.Servlet 接口的 init, service 和 destroy 方法表達。

描述servlet的生命周期,誰來控制servlet的生命周期,servlet生命周期在J2EE規範中是如何來定義的伺服器執行個體化一個servlet對象,容器運作其init方法,請求到達時運作其service方法,service方法根據請求的類型調用(doGet,doPost)方法,當伺服器決定将執行個體銷毀時調用其destory方法

7、Servlet和Jsp的差別?

答:Servlet是直接執行的檔案Jsp是要被通過編譯形成Servlet後才執行。

8.JSP構架模型

Model1:純jsp 維護難,代碼可複用性差

Model2:jsp+javabean 在jsp中使用usebean标簽,代碼在jsp中本質同Model1

Mvc:jsp+servlet+javabean

9. JSP隐含變量

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

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

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

session 與請求有關的會話期

application servlet 正在執行的内容

config servlet的構架部件

out 用來傳送回應的輸出 (用來向用戶端輸出資料)

page JSP網頁本身

exception 針對錯誤網頁,未捕捉的例外 (異常)

10.四大共享範圍

答:a、page 目前頁面。

b、session 同一個網站内。

c、request 從上一頁到下一個頁面。

d、application 同一個網站内。

11.MVC——如何了解MVC

答: MVC是Model-View-Controller的簡寫。

"Model" 代表的是應用的業務邏輯 (通過JavaBean,EJB元件實作),

"View" 是應用的表示面(由JSP頁面産生),

"Controller" 是提供應用的處理過程控制(一般是一個Servlet),通過這種設計模型把應用邏輯,處理過程和顯示邏輯分成不同的元件實作。這些元件可以進行互動和重用。

11. JSP生命周期

12、JSP中動态INCLUDE與靜态INCLUDE的差別?

動态INCLUDE用jsp:include動作實作,它總是會檢查所含檔案中的變化,适合用于包含動态頁面,并且可以帶參數。

靜态INCLUDE用include僞碼實作,定不會檢查所含檔案的變化,适用于包含靜态頁面

13. Forword和SendRedirect差別

答: 前者僅是容器中控制權的轉向,在用戶端浏覽器位址欄中不會顯示出轉向後的位址;

後者則是完全的跳轉,浏覽器将會得到跳轉的位址,并重新發送請求連結。這樣,從浏覽器的位址欄中可以看到跳轉後的連結位址。

是以,前者更加高效,在前者可以滿足需要時,盡量使用forward()方法,并且,這樣也有助于隐藏實際的連結。但在有些情況下,比如,需要跳轉到一個其它伺服器上的資源,則必須使用sendRedirect()方法。

forward是伺服器請求資源,伺服器直接通路目标位址的URL,把那個URL的響應内容讀取過來,然後把這些内容再發給浏覽器,浏覽器根本不知道伺服器發送的内容是從哪兒來的,是以它的位址欄中還是原來的位址。

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

14. 從 BeanFactoy或 ApplicationContext是通過什麼模式取得執行個體的?如果要取得多個執行個體在配制檔案中要怎樣做映射

答:是通過單态模式取得執行個體的,在配制檔案中可以改,好像是isthread...設成false

15. jsp有哪些動作?作用分别是什麼?

答: JSP共有以下6種基本動作

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

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

jsp:setProperty:設定JavaBean的屬性。

jsp:getProperty:輸出某個JavaBean的屬性。

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

jsp:plugin:根據浏覽器類型為Java插件生成OBJECT或EMBED标記

16.請簡述Session的特點有哪些?

答案:

(1) 不是線程安全的

(2) Session執行個體是輕量級的

(3) (3)在Session 中,每個資料庫操作都是在一個事務(transaction)中進行的

17. 叙述Session的緩存的作用

(1)減少通路資料庫的頻率。

(2)保證緩存中的對象與資料庫中的相關記錄保持同步。

18、如何設定/取得Bean 中的屬性值?

答:設定屬性值<jsp:setPropertyname=”haha”,property=”haha的屬性” value=”變量值”/>

< jsp:setProperty name=”haha”,property=”*” />擷取從上一個表單中送出過來的,與Bean中變量名字相同的所有屬性.

取得屬性值:<jsp:getProperty name=”haha” property=”bean的屬性”/>

相當于:<%=getA()%>

19、JavaBean的使用:<jsp:useBean id=”name” class=”sist.md5” scope=”page”/>或者<jsp:useBean id=”name” class=”sist.md5” scope=”page”></jsp:useBean>

20、實作頁面跳轉的兩種方法:

答:a、<jsp:forward page=”for2.jsp”/>

b、<%response.sendRedirect(“for2.jsp”);%>

21、include指令标簽:

<%@include file=”inc1.jsp”%> 簡單的代碼複制。

include動作标簽:<jsp:include page =”inc2.jsp”>擷取inc2.jsp的執行結果。

22、頁面之間的值傳遞:

答:a、設定Session 變量:session.setAttribute(“name”,”sist”);

擷取Session 變量:session.getAttribute(“name”);

b、位址方式傳遞:show.jsp?id=變量值

23、内置對象的作用域分為4種:

24、擷取session ID: <%=session.getId()%>;判斷session是否有效:session.isNew();

25、使用Cookie對象

答:Cookie ck=new Cookie(“name”,”sist”);

寫入:response.addCookie(ck);

讀取:Cookie[] ck=request.getCookies();

If(ck==null)

for(int a=0;a<ck.length;a++)

{

If(“name”.equals(ck[a].getName()))

Out.print(ck[a].getValue());

}

26、什麼是servlet:在web容器中運作的伺服器端JAVA程式,主要用于響應HTTP請求。Servlet一般用于MVC中的控制器部分。

27、什麼是servlet容器:用來管理servlet生命周期的應用程式如(tomcat)。

28、什麼是JSP Page:java server page 是servlet的擴充,強調web頁面表達,編譯後是一個類servlet。

29、JSP标簽

動作标簽:jsp:include jsp:forword jsp:usebean jsp:set/get Property

指令标簽:<%@page……%> <%@include…..%> <%@taglib…..%>

30、servlet中如何

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”)

RequstDispatcher rd=request.get RequstDispatcher(“url”)

Rd.forword(request,response);

h如何向用戶端寫cookie

Cookie cookie=new Cookie(“object”,”jklj”);

Cookie.setMaxAge(時間);

Response.addCookie(cookie);

31、描述servlet的生命周期,誰來控制servlet的生命周期,servlet生命周期在J2EE規範中是如何來定義的

伺服器執行個體化一個servlet對象,容器運作其init方法,請求到達時運作其service方法,service方法根據請求的類型調用(doGet,doPost)方法,當伺服器決定将執行個體銷毀時調用其destory方法。

32、如何建立Request Dispatcher對象,如何将請求轉發給其它的web資源(包含其它的web資源),描述如何利用request來存狀态,以及與其它儲存狀态方法有什麼差別

Request.setAttribute(“object”,”内容”);

一旦産生響應request的生命周期就結束了

33、如何在web.xml中配置servlet定義

<servlet>

<servlet-name>name</servlet-name>

<servlet-class>package</servlet-class>

</servlet>

映射

<servlet-mapping>

<url-patten>/patten</url-patten>

</servlet-mapping>

34、獲得ServletConfig對象

ServletConfig sc=getServletConfig();

35、如何獲得servletContext對象

servletContext sc=getservletContext();

36、<html><body>

<a href=”/servlet/HelloServlet”>POST</a>

</body></html>

調用servlet時采用了doPost、doGet、doForm、doHref中的哪個方法

doGet方法

37、說明如下的web的資源應該放在web容器中的什麼目錄下,靜态頁面JSP、servlet class、web.xml、Tag libraries、JAR File、java class以及需要保護的資源檔案

tomcat容器 web.xml, Tag libraries: \webapps\工程名\WEB-INF

servlet,javaclass: \webapps\工程名\WEB-INF\classes \

jar: \webapps\工程名\WEB-INF\lib\

38、描述request session web application的差別,建立監聽器類來監聽每個scope的生命周期

生命周期不同request産生響應時生命周期結束,session在web.xml中設定生命周期時間、手動清除web容器重新開機生命周期結束。Webapplication容器重新開機、手動清除

39、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執行個體

40、JSP的常用指令

<%@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"%>

41、JSP和Servlet有哪些相同點和不同點,他們之間的聯系是什麼? 

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

42、四種會話跟蹤技術

會話作用域ServletsJSP 頁面描述

page否是代表與一個頁面相關的對象和屬性。一個頁面由一個編譯好的 Java servlet 類(可以帶有任何的 include 指令,但是沒有 include 動作)表示。這既包括 servlet 又包括被編譯成 servlet 的 JSP 頁面

request是是代表與 Web 客戶機發出的一個請求相關的對象和屬性。一個請求可能跨越多個頁面,涉及多個 Web 元件(由于 forward 指令和 include 動作的關系)

session是是代表與用于某個 Web 客戶機的一個使用者體驗相關的對象和屬性。一個 Web 會話可以也經常會跨越多個客戶機請求

application是是代表與整個 Web 應用程式相關的對象和屬性。這實質上是跨越整個 Web 應用程式,包括多個頁面、請求和會話的一個全局作用域

43、根據JSP的生命周期完成下面表格

頁面首次編寫完成

請求#1

請求#2

伺服器重起

請求#3

請求#4

頁面被修改

請求#5

請求#6

JSP頁面轉換成servlet

Servlet編譯

建立servlet執行個體并載入伺服器的記憶體

Init(或類似的函數)被調用

DoGet(或類似的函數)被調用

本文轉自linzheng 51CTO部落格,原文連結:http://blog.51cto.com/linzheng/1080794