JSP 相關試題(四)


簡答

1、有人說:servlet和 JavaBean都是java類,可以互換使用,請您回答,在MVC中,控制器部分是否可以使用JavaBean完成?為什么?

不能。因為javabean是普通的java類,MVC中的servlet要完成從客戶端接收數據,采用的servlet是HTTP協議,而普通的javabean不能完成該功能。

2、有人說:JSP是Servlet的高級實現,在MVC中,控制器部分應該用JSP實現,請您回答JSP和servlet的異同。

相似:

(1)兩者都是基於Java的技術,所以都繼承了Java的所有特性(跨平台、多線程等 ),都可以使用Java強大的API。

(2)兩者工作方式相似:JSP代碼先被JSP容器轉換為Servlet代碼再編譯為類。

(3)兩者在J2EE體系結構中的工作層次相同,都負責與客戶端的連接。

不同:

1編程方式不同。Servlets是一些運行於Web服務器端的Java小程序;而JSP是腳本,編寫起來更簡單容易。

2應用目的不同。Servlet主要用於從客戶端接收請求信息,而JSP主要負責將服務器端信息傳送到客戶端

3、采用上文描述的MVC設計模式,有什么優點和缺點?

優點:1、提高了代碼復用    2、減少了開發時間  3、更高的可維護性

     缺點:1、系統結構變得復雜   2、view對模型數據的訪問效率低

4、簡單回答Servlet的工作過程。

(1)    客戶機將請求發送到服務器。

(2)    服務器上的Web容器實例化Servlet,並為Servlet進程創建線程。Servlet是在出現第一個請求時裝入的,在服務器關閉之前不會卸載它。

(3)    Web容器將請求信息發送到Servlet。

(4)    Servlet創建一個響應,並將其返回到Web容器。Servlet使用客戶端請求中的信息及服務器可以訪問的其他信息資源如資源文件和數據庫等來動態構造響應。

(5)    Web容器將響應發回給客戶機。

(6)    服務器關閉或Servlet空閑時間超過一定限度時,調用destroy方法退出。

5、詳述MVC 中M、V、C的作用及其相互關系。(P241)

6如果Browser已關閉了cookies,在JSP中我如何打開session來跟蹤,舉例說明。

使用URL重寫即可,如下:

session1.jsp

<%@ page session="true" %>

<%

Integer num = new Integer(100);

session.putValue("num",num);

String url =response.encodeURL("session2.jsp");

%>

<a href=<%=url%>>session2.jsp</a>

session2.jsp

<%@ page session="true" %>

<%

Integer i= (Integer )session.getValue("num");

out.println("Num value in session is "+i.intValue());

%>

7JSPServletHTML中的請求轉派發分別如何實現。

JSP實現轉派發

   (1) 在java腳本代碼中使用 response.sendRedirect("favorite.jsp") 實現轉派發

   (2) JSP標准動作: <jsp:forward> 例如: <jsp:forward  page="forward2.jsp" />

   Servlet實現轉派發

   (1) 代碼 response.sendRedirect("/abc.html"); 遇到該行代碼,會轉到abc.html頁面。

   (2) ServletContext的getRequestDispatcher(String path)方法返回與path相聯系的RequestDispatcher對象

     RequestDispatcher對象調用forward(ServletRequest request, ServletResponse response) 轉向 path

    HTML實現轉派發

   (1) 使用 href 超鏈接  實現轉派發   

例如:<a href="forward2.jsp">返回!</a>

   (2) 使用 form 表單提交  實現轉派發

   (3) 使用 meta  例如:

<metahttp-equiv=refresh ontent='<%=aForwardInfo.getSecond()%>;url=<%=aForwardInfo.getUrl()%>'>

  (4) 使用 "history.back()" 

例如:<input type="button" name="Submit2" value="返回" onClick="history.back();">

  (5) 使用 "javascript:history.go(-1);"  

例如:<a href="javascript:history.go(-1);">返回!</a>

8. Servlets 與JSP四種會話跟蹤技術

答:會話作用域Servlets JSP 頁面描述  

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

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

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

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

9. Java servlet API中forward() 與redirect()的區別?

答:前者僅是容器中控制權的轉向,在客戶端瀏覽器地址欄中不會顯示出轉向后的地址;后者則是完全的跳轉,瀏覽器將會得到跳轉的地址,並重新發送請求鏈接。這樣,從瀏覽器的地址欄中可以看到跳轉后的鏈接地址。所以,前者更加高效,在前者可以滿足需要時,盡量使用forward()方法,並且,這樣也有助於隱藏實際的鏈接。在有些情況下,比如,需要跳轉到一個其它服務器上的資源,則必須使用sendRedirect()方法。

10.JSP中動態include與靜態include的區別?

答:動態include用jsp:include動作實現

<jsp:include page="included.jsp" flush="true" />它總是會檢查所含文件中的變化,適合用於包含動態頁面,並且可以帶參數

靜態include用include偽碼實現,不會檢查所含文件的變化,適用於包含靜態頁面

<%@ include file="included.htm" %>

 

問答題

1.jsp有哪些內置對象?作用分別是什么?

application對象代表應用程序上下文,它允許JSP頁面與包括在同一應用程序中的任何Web組件共享信息。

Config對象允許將初始化數據傳遞給一個JSP頁面

Exception對象含有只能由指定的JSP“錯誤處理頁面”訪問的異常數據。

Out對象代表提供輸出流的訪問

Page對象代表JSP頁面對應的Servlet類實例

PageContext對象是Jsp頁面本身的上下文,它提供唯一一組方法來管理具有不同作用域的屬性

Request對象提供對Http請求數據的訪問,同時還提供用於加入特定請求數據的上下文

 Response對象允許直接訪問HttpServletResponse對象

Session對象可能是狀態管理上下文中使用最多的對話
2.jsp有哪些動作?作用分別是什么?

<jsp:param>操作被用來以“名—值”隊的形式為其他標簽提供附加信息

<jsp:include>操作允許在請求是在現成的JSP頁面里包含靜態或者動態資源

<jsp:forward>操作允許將請求轉發到另一個JSP、servlet或靜態資源文件

<jsp:useBean>標簽用來在JSP頁面中創建一個JavaBean實例並指定他的名字以及作用范圍

<jsp:setProperty>此操作和setBean一起協作,用來設置JavaBean的屬性

<jsp:getProperty>操作是對<jsp:setProperty>操作的補充,用來訪問一個Bean的屬性

<jsp:plugin>用來產生客戶端瀏覽器的特別標簽,可以使用它來插入Applet和JavaBean
<jsp:fallback>

3.JSP中動態INCLUDE與靜態INCLUDE的區別?

如果文件僅僅是靜態文件,那么這種包含僅僅是把包含文件的內容加到JSP文件中去,但這個被包含文件不會被JSP編譯器執行。相反,如果這個被包含文件是動態的文件,那么他將被JSP編譯器執行。如果是動態文件還可以用<jsp:param>傳遞參數。

 

4.兩種跳轉方式分別是什么?有什么區別? <jsp:include page="included.jsp" flush="true">
  <jsp:forward page= "nextpage.jsp"/>

<jsp:include>操作允許在請求是在現成的JSP頁面里包含靜態或者動態資源

<jsp:forward>操作允許將請求轉發到另一個JSP、servlet或靜態資源文件

5.servlet運行的生命周期圖.

裝載ServletServlet類  Servlet初始化(調用init方法)實例對象被回收                                     

提供服務(調用Service方法) 銷毀Servlet實例(調用destroy方法)

8.在程序里怎樣注冊servlet.

 

    <servlet>

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

<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>

</servlet>

 

<servlet-mapping>

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

<url-pattern>/displayChart</url-pattern>

</servlet-mapping>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM