【Java面試】JSP常見面試題!

六星_研鑫發表於2020-07-29

點選免費獲取最新BAT面試題,2020最新面試技巧和簡歷模板!


1:什麼是Jsp?

Java Server Page 結合 java和html在服務端動態生成web頁面的技術

2:描述Jsp頁面的執行過程?

第一步:

請求進入Web容器,將JSP頁面翻譯成Servlet程式碼

第二步:

編譯Servlet程式碼,並將編譯過的類檔案裝入Web容器(JVM)環境

第三步:

Web容器為JSP頁面建立一個Servlet類例項,並執行jspInit方法

第四步:

Web容器為該JSP頁面呼叫Servlet例項的_jspService方法;將結果傳送給使用者

3:描述Jsp頁面的五類指令碼元素的功能、寫法、並示例

註釋  <%--    --%>:
 
<HTML>
 
      <%-- scripting element --%>
 
</HTML>
 
 
 指令標記  <%@   %> 指令標記影響JSP頁面的翻譯階段:
 
       <%@ page session=”false” %>
 
 
宣告標記  <%!   %> 宣告標記允許JSP頁面開發人員包含類級宣告:
 
<%! public static final String DEFAULT_NAME = “World”; %>
 
 
指令碼標記  <%    %> 指令碼標記允許JSP頁面開發人員在_jspService方法中包含任意的Java程式碼:
 
<% int i = 0; %>
 
 
表示式標記 <%= %>  表示式標記封裝Java執行時的表示式,其值被送至HTTP響應流:  <B>Ten is <%= (2 * 5) %></B>


4:描述Jsp頁面中的註釋種類和寫法

HTML註釋

<!-- HTML註釋顯示在響應中 -->

 

JSP頁面註釋

<%-- JSP註釋只在JSP程式碼中可見,不顯示在servlet程式碼或響應中。--%>

Java註釋

<%

/* Java註釋顯示在servlet程式碼中,不顯示在響應中

*/

%>

 

5:描述Jsp頁面的指令標記的功能、寫法、並示例

指令標記影響JSP頁面的翻譯階段

<%@ page session=”false” %>

<%@ include file=”incl/copyright.html” %>

<%@ taglib  %>

6:描述Jsp頁面的宣告標記的功能、寫法、並示例

宣告標記允許JSP頁面開發人員包含類級宣告

寫法:

<%!  JavaClassDeclaration %>

例:
 
<%! public static final String DEFAULT_NAME = “World”; %>
 
<%! public String getName(HttpServletRequest request) {
 
                return request.getParameter(“name”);
 
    }
 
%>
 
<%! int counter = 0; %>



7:描述Jsp頁面翻譯成Servlet的規則

jsp中的註釋標記被翻譯成Servlet類中的註釋

jsp中的指令標記被翻譯成Servlet類中的import語句等

jsp中的宣告標記被翻譯成Servlet類中的屬性

jsp中的指令碼標記被轉移到Servlet類中service方法中的程式碼

jsp中的表示式標記被翻譯成Serlvet類中的write()或者print()方法括號中的程式碼

8:描述Jsp頁面的九個預定義變數的功能、用法、並示例

request       與請求相關的HttpServletRequest物件

response      與送回瀏覽器的響應相關的HttpServletResponse物件

out          與響應的輸出流相關的JspWriter物件

session       與給定使用者請求會話相關的HttpSession物件,該變數只在JSP頁面參與一個HTTP會話時有意義

Applicationn    用於Web應用的ServletContext物件

config        與該JSP頁面的servlet相關的ServletConfig物件

pageContext   該物件封裝了一個JSP頁面請求的環境

page         該變數與Java程式語言中的this變數等價

exception     由其它JSP頁面丟擲的Throwable物件,該變數只在"JSP錯誤頁面"中可用

9:page指令的功能,寫法、並示例,並描述它的如下屬性的功能和用法:import、session、buffer、errorPage、isErrorPage、ContentType、pageEncoding

import :      import 定義了一組servlet類定義必須匯入的類和包,值是一個由逗號分隔的完全類名或包的列表。

session  :    session 定義JSP頁面是否參與HTTP會話,值可以為true(預設)或false。

buffer  :     buffer 定義用於輸出流(JspWriter物件)的緩衝區大小,值可以為none或Nkb,預設為8KB或更大。

errorPage:     用來指定由另一個jsp頁面來處理所有該頁面丟擲的異常

isErrorPage :  定義JSP頁面為其它JSP頁面errorPage屬性的目標,值為true或false(預設)。

ContentType  : 定義輸出流的MIME型別,預設為text/html。

pageEncoding  :定義輸出流的字元編碼,預設為ISO-8859-1

10:描述MVC各部分的功能?

Model

   封裝應用狀態

   響應狀態查詢

   暴露應用的功能

 

    Controller

   驗證HTTP請求的資料

   將使用者資料與模型的更新相對映

   選擇用於響應的檢視

 

    View

   產生HTML響應

   請求模型的更新

   提供HTML form用於使用者請求

11:什麼是Model 1結構,以及結構中各部分的功能

Model1中使用jsp來處理web應用中的檢視控制部分

    jsp+javabean

12:什麼是JavaBean?

使用者可以使用JavaBean將功能、處理、值、資料庫訪問和其他任何可以用java程式碼

創造的物件進行打包,並且其他的開發者可以透過內部的JSP頁面、Servlet、其

他JavaBean、applet程式或者應用來使用這些物件。

13:JavaBean的規則?

使用get和set方法定義屬性

一個無參構造方法

無public例項變數

14:什麼是jsp標準動作?包含那些?分別都是什麼功能?如何使用?

JSP頁面中使用類似於XML的標記表示執行時的動作

jsp:userBean

jsp:setProperty

jsp:getProperty

jsp:parameter

jsp:include

jsp:forward

15:用程式碼示例如下標準動作的使用:useBean、getProperty、setProperty

<jsp:useBean
 
id="myForms" 
 
class="com.base.mystruts.forms.MyActionForm" scope="session" />
 
<jsp:setProperty name="MyForms" property="name" />
 
<jsp:getProperty name="MyForms" property="id" />


16:描述說明Bean的四種scope

Request

Session

Application

Page


17:描述說明頁面上的欄位和Bean中屬性的對應規則

id 指javabean的變數名

class指javabean類的全路徑

scope指javabean的應用範圍

name指所用到的javabean的變數名

property指javabean中的屬性


18:描述useBean動作的處理過程

使用id宣告變數

試圖在指定的範圍內查詢物件

如果沒找到

   建立一個類的例項

   執行useBean標記體初始化物件 

如果找到

   將物件轉換為類指定的型別


19:描述forward動作的功能

使用指令碼程式碼處理請求時,可用jsp:forward 動作產生一個不同的檢視,

使用同一個request:


20:什麼是Model 2結構,以及結構中各部分的功能

jsp+javabean+servlet

Model 2架構使用MVC模式,JSP頁面充當檢視,Servlet充當控制器

Servlet控制器:

驗證HTML form資料

呼叫模型中的業務服務

儲存請求(或會話)範圍內的域物件

選擇下一個使用者的檢視

JSP頁面檢視:

使用使用者介面(在HTML中)

訪問域物件


21:如何獲得分發器?分發器的功能?

上下文物件中的分發器:

ServletContext context = getServletContext();
RequestDispatcher servlet = context.getNamedDispatcher("MyServlet");
servlet.forward(request, response);

 

請求物件中的分發器:

RequestDispatcher view = request.getRequestDispatcher("tools/nails.jsp");
view.forward(request, response);

 

可以將請求轉發到另一個jsp頁面

當從客戶端發出請求到a 是request(1),a再請求b是request(2)就變成兩個不同的請求,用RequestDispatcher來保持原來的請求(在不同的servlet之間保持同一個請求時用RequestDispatcher)

RequestDispatcher   rd  =  request.getRequestDispatcher(“string”);
rd.forword(request);//前往下一個請求 到下一個servlet

22:描述Jsp中引入另外頁面的兩種方法?

<%@ include%>

<jsp:include>


23:比較上述兩種方法的特點

<%@ include%> 再編譯期間把另一個頁面完全嵌入這個頁面,可以說是一個頁面

                  在這裡可以共享變數

<jsp:include>    動態的再執行期間把另一個頁面加入這個頁面,可以說是兩個頁面,不可以共享變數


24:什麼是自定義標記

自定義標記庫是一個Web元件,

包括:

一個標記庫描述符檔案

所有相關的標記處理器類


25:描述使用自定義標記的步驟,以及每步詳細的工作

1.自定義標記遵循XML標記規則

    自定義標記使用XML規則;

    標記名屬性,以及字首都是大小寫敏感;

    標記巢狀規則;  

 

2.需要在JSP頁面和Web應用程式的部署描述符中宣告標記庫:

      taglib

      在部署描述符中使用taglib元素宣告web應用程式使用一個標記庫;

      在jsp頁面中使用taglib指令表明要使用哪個標記庫及相應的自定義標記所使用的字首; 

      使用自定義的空標記 

      使用自定義的條件標記 

      使用自定義的迭代標記 

   3.在JSP頁面中可使用自定義的空標記

      getPepParam()標記:將命名的請求標誌插入的輸出中;

   4.在JSP頁面中使用自定義標記,可有條件地執行HTML響應的某部分

    heading標記:生成一個隱藏的Html table建立一個彩色且格式化過的頁表頭

   5.在JSP頁面中使用自定義標記,可迭代執行HTML響應中的某部分:

     IterateOverErrors標記:對stutas中的所有異常現象進行迭代;

     taglib

     1.把類烤過去

     2.把Taglib的描述檔案(*.tld)放在web-inf根目錄下

     3.在web.xml裡配置

     4.回到頁面去,定義Taglib使用的字首

     5.直接使用,一定要結尾;


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69977571/viewspace-2707928/,如需轉載,請註明出處,否則將追究法律責任。

相關文章