午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

已分享過jsp常見面試題(4)

 WindySky 2011-06-18
已分享過
jsp常見面試題(4)

JSP企業(yè)面試題整理(1)
圖示三層架構,并說明其特點,如何實現(xiàn),每層實現(xiàn)什么功能?(企業(yè)筆試題)

       在兩層應用中,應用程序直接同數(shù)據(jù)庫進行對話。三層結構在用戶接口代碼和數(shù)據(jù)庫中間加入了一個附加的邏輯層,通常這個層叫做“商務邏輯層”。在“商務邏輯層”,如果第一層和第二層在不同的計算機上,通常該層利用的技術是EJB(Enterprise JavaBean)技術、CORBA(Common Object Request Broker Architecture)技術和DCOM技術(Distributed Component Object Model,分布式組件對象模型)。在Java企業(yè)應用領域中,表示邏輯層通??梢允荋TML、Applet和JSP,商務邏輯層一般利用EJB來實現(xiàn)

Java包含哪三個版本,每個版本有什么功能,各個版本的應用領域?

        SUN以J2EE為核心推出SUN-ONE(SUN Open Network Environment)戰(zhàn)略,該戰(zhàn)略包括三個部分:J2SE(Java 2 Standard Edition,Java 2標準版)、J2ME(Java 2 Micro Edition,Java 2微型版)和J2EE。

         J2SE主要:用于創(chuàng)建典型的桌面與工作站應用的Java平臺。從配置上來說,只要安裝JDK(Java Development Kit),就建立了一個J2SE開發(fā)和運行平臺。

        J2ME主要用于創(chuàng)建嵌入式應用程序(如PDA、儀表),J2ME開發(fā)平臺需要J2SE平臺的支持。開發(fā)領域包括:高端的信息家電,比如:電視機頂盒,網(wǎng)絡電視和網(wǎng)絡可視電話等,低端的信息家電,比如手機,尋呼機和PDA等。

        J2EE的任務是提供一個平臺獨立的、便攜式、多用戶、安全以及標準的企業(yè)級平臺,服務器端部署用Java技術來完成。J2EE主要用于創(chuàng)建可擴展的企業(yè)應用,包括13種核心技術規(guī)范

1-3 名詞解釋:EJB JNDI RMI。(企業(yè)筆試題)

        EJB(Enterprise Java Bean,企業(yè)級JavaBean)J2EE體系的最核心技術是EJB,提供了一個框架來開發(fā)分布式商務邏輯,顯著地簡化了具有可伸縮性和高度復雜的企業(yè)級應用的開發(fā)

        JNDI(Java Naming and Directory Interface,Java命名和目錄接口)JNDI用于名字和目錄服務,提供了一致的接口來存取和操作企業(yè)級的資源,如DNS(Domain Name Service)和本地文件系統(tǒng)等

     RMI(Remote Method Invocation,遠程方法調用)RMI是在遠程對象上調用一些方法,使用了連續(xù)的方式在客戶端和服務器端傳遞數(shù)據(jù),RMI是EJB技術基礎

JSP企業(yè)面試題整理(2)
2-1 簡述Java語言的核心機制。

Java語言包含三種核心機制:Java 虛擬機、垃圾收集機制和代碼安全檢測。

1、Java 虛擬機(Java Virtual Machine,JVM)

在一臺計算機上由軟件或硬件模擬的計算機。Java虛擬機讀取并處理經(jīng)編譯過的平臺無關的字節(jié)碼class文件。

2、垃圾收集機制(Garbage collection)

在C/C++ 等語言中,由程序員負責回收無用內存。Java語言解除了程序員回收無用內存空間的責任。它提供一種系統(tǒng)級線程跟蹤存儲空間的分配情況。并在JVM的空閑時,檢查并釋放那些可被釋放的存儲器空間。垃圾收集在Java程序運行過程中自動進行,程序員無法精確控制和干預。

3、代碼安全性檢測(Code Security)

Java執(zhí)行代碼的時候,由JVM對運行的代碼進行安全性檢測,當進行一些非法操作的時候,比如修改一些系統(tǒng)設置的時候,JVM會發(fā)出警告。

 

2-2 比較基本數(shù)據(jù)類型和引用數(shù)據(jù)類型的區(qū)別。

Java 語言共有八種基本數(shù)據(jù)類型:四種整數(shù)類型(byte、short、int、long),兩種浮點數(shù)類型(float、double),一種字符類型(char),一種布爾類型(boolean)。

Java語言中除8種基本數(shù)據(jù)類型以外的數(shù)據(jù)類型稱為引用類型,也叫做復合數(shù)據(jù)類型。在程序中聲明的引用類型變量只是為該對象起的一個名字,或者說是對該對象的引用,變量的值是對象在內存空間中的存儲地址而不是對象本身,這就是稱之為引用類型的原因

2-4 構造函數(shù)有什么作用?簡述重載構造函數(shù)的好處。

構造函數(shù)也叫構造方法,是Java類中的一種特殊方法,其功能是創(chuàng)建其所屬類型的一個新的對象。聲明構造方法的語法規(guī)則如下:

< modifiers> <class_name>([< argu_list>]) {

[< statements>]

}

從中可以看到,構造方法與普通方法在聲明上的區(qū)別是,構造方法沒有返回值類型、構造方法必須取和所屬類相同的名字。

在定義Java類時可以根據(jù)需要定義一個或多個構造方法,通常在構造方法中進行一些初始化工作。

 

2-5 簡述super、static和final的功能和作用。

如果子類中發(fā)生了方法重寫,那么子類對象能調用父類中重寫前的方法,Java語言允許在子類中使用關鍵字super來引用父類的方法。

在Java類中聲明屬性和方法時,可使用關鍵字static做為修飾符。static標記的變量或方法由整個類共享,如訪問控制權限允許,可不必創(chuàng)建該類對象而直接用類名加‘.’調用。

在Java中聲明類、屬性和方法時,可使用關鍵字final來修飾。final所標記的成分具有“終態(tài)”的特征,其具體規(guī)定如下:

l         final標記的類不能被繼承。

l         final標記的方法不能被子類重寫。

l         final標記的變量(成員變量或局部變量)即成為常量,只能賦值一次。

 

2-6 集合元素:集合、散列表和枚舉的特點和作用。

常用的集合元素有:向量(Vector)、枚舉(Enumeration)、散列表(Hashtable)和屬性(Properties)等

向量(Vector)不要求每個元素的類型相同,向量中可以混合多種數(shù)據(jù)類型。向量可以在增加元素時動態(tài)增大。

向量提供了集合內容的順序訪問,散列表可以對集合內容進行隨機訪問,散列表提供的主要方法及其說明為。

l         用put(Object key,Object value)加進關鍵字/數(shù)值對

l         用get(Object key)取得一個關鍵字的值

枚舉也可以存放許多元素。一般用來存儲其他集合的返回值。

 

2-7 關鍵字throw和throws的區(qū)別?(企業(yè)筆試題)

可以利用throw關鍵字自己拋出異常。

Throws一般在定義函數(shù)的時候使用,表明函數(shù)被調用的時候要拋出異常。

 

2-8 Java實現(xiàn)線程有幾種方式,各有什么優(yōu)點?

創(chuàng)建線程有兩種方式:使用Runnable接口和繼承Thread類。使用Runnable接口的實現(xiàn)類來提供線程體,這是創(chuàng)建線程的基本方式。還可以采用直接繼承Thread類、重寫其中的run()方法并以之作為線程體的方式創(chuàng)建線程,

兩種創(chuàng)建線程方式的有兩方面的區(qū)別。

l         使用Runnable接口創(chuàng)建線程時可以將CPU,代碼和數(shù)據(jù)分開,形成清晰的模型。線程體run()方法所在的類還可以從其他類繼承一些有用的屬性或方法,并有利于保持程序風格的一致性。

l         直接繼承Thread類創(chuàng)建線程時,Thread子類無法再從其他類繼承。但這種情況編寫簡單,run()方法的當前對象就是線程對象,可直接操縱。

JSP企業(yè)面試題整理(3)

4-1. 有幾種方法實現(xiàn)頁面的跳轉,如何實現(xiàn)?

jsp:forward操作指令用于把當前的JSP頁面轉發(fā)到另一個頁面上?;菊Z法為:“<jsp:forward page="test2.jsp"/>”,使用該功能時,瀏覽器的地址欄中地址不會發(fā)生任何變化。

對于response對象,最常用到的是sendRedirect()方法,可以使用這個方法將當前客戶端的請求轉到其它頁面去。相應的代碼格式為:“response.sendRedirect("URL地址");

4-2 synchronized關鍵字有什么功能?

,一般會在函數(shù)前面加上synchronized關鍵字,功能是當前一個用戶在執(zhí)行該方法的時候,其他的用戶必須等待,直到該用戶完成操作

 

4-3. out對象有什么功能,out.printdocument.write有什么區(qū)別?

out對象是javax.servlet.jsp.JspWriter類的一個子類的對象,它的作用是把信息回送到客戶端的瀏覽器中。在out對象中,最常用的方法就是print()println()。在使用print()println()方法時,由于客戶端是瀏覽器,因此向客戶端輸出時,可以使用HTML中的一些標記,例如:“out.println("<h1>Hello,JSP</h1>");

out.printJSP代碼, 被服務器解釋執(zhí)行。

Document.writeJavaScript代碼,被客戶端瀏覽器解釋執(zhí)行。

4-4. 如何獲得獲得客戶端的IP地址?

利用request對象可以獲得客戶提交的信息,比如:JSP文件目錄、客戶端的地址、以及服務器的端口等、

<BR>獲取客戶的IP地址:

       <% String IP=request.getRemoteAddr();

      out.println(IP);%>

 

4-5. application對象有什么特點?和session對象有什么聯(lián)系和區(qū)別?

站點所有的用戶公用一個application對象,當站點服務器開啟的時候,application就被創(chuàng)建,直到網(wǎng)站關閉。

可以使用Session 對象存儲用戶登錄網(wǎng)站時候的信息。當用戶在頁面之間跳轉時,存儲在Session對象中的變量不會被清除

聯(lián)系是:數(shù)據(jù)都存儲在服務器端,而且都可以保留一段時間。

區(qū)別是:每個用戶有一個session,但是application是共有的。

4-6. 程序如何向瀏覽器寫入Cookie集合,如何從瀏覽器端讀取Cookie集合。

Cookie對象是由Web服務器端產生后被保存到瀏覽器中的信息。Cookie對象可以用來保存一些小量的信息在瀏覽器中。目前主流的瀏覽器(Internet ExplorerNetscape Navigator)都支持Cookie。

案例名稱:寫入Cookie

程序名稱:4-25.jsp

 

<%@ page contentType="text/html;charset=GBK" %>

<%

   String strName = "Zhourunfa";

   Cookie c = new Cookie("Name1", strName);

   response.addCookie(c);

%>

 

案例名稱:讀出Cookie

程序名稱:4-26.jsp

 

<%@ page contentType="text/html;charset=GBK" %>

<HTML><BODY>

<%

       Cookie cookies[] = request.getCookies();

   for(int i=0; i<cookies.length; i++) {

       if(cookies[i].getName().equals("Name1"))

                          out.print(cookies[i].getValue());

   }

%>

JSP企業(yè)面試題整理(4)
5-1. 簡述Servlet和JSP的關系。

JSP是以另外一種方式實現(xiàn)的Servlet,Servlet是JSP的早期版本,在JSP中,更加注重頁面的表現(xiàn),而在Servlet中則更注重業(yè)務邏輯的實現(xiàn)。

因此,當編寫的頁面顯示效果比較復雜時,首選是JSP?;蛘咴陂_發(fā)過程中,HTML代碼經(jīng)常發(fā)生變化,而Java代碼則相對比較固定時,可以選擇JSP。而我們在處理業(yè)務邏輯時,首選則是Servlet。

同時,JSP只能處理瀏覽器的請求,而Servlet則可以處理一個客戶端的應用程序請求。因此,Servlet加強了Web服務器的功能。

 

5-2. 簡述Servlet的生命周期。(企業(yè)筆試題)

Servlet運行機制和Applet類似,Servlet是載服務器端運行的,但是Applet是在客戶端運行的。Servlet是javax.servlet包中HttpServlet類的子類,由服務器完成該子類的創(chuàng)建和初始化。

Servlet的生命周期主要由3個過程組成。

1、init()方法:服務器初始化Servlet。

2、service()方法:初始化完畢,Servlet對象調用該方法相應客戶的請求。

3、destroy()方法:調用該方法消滅Servlet對象。

其中,init()方法只在Servlet第一次被請求加載的時候被調用一次,當有客戶再請求Servlet服務時,Web服務器將啟動一個新的線程,在該線程中,調用service方法相應客戶的請求。

 

5-3. 簡述HttpSession接口的功能和使用方法。(企業(yè)筆試題)

這是一個java.servelt.http包中的接口,它封裝了會話的概念。定義為:“public interface HttpSession”,可以使用HttpServletRequest對象的getSession()方法來得到這種類型的對象,語法為:“HttpSession session = request.getSession();”。

 

5-5. 編寫一個HTML文件,利用Servelt的doPost方法實現(xiàn)Form表單內容的讀取。(上機完成)(企業(yè)筆試題)

案例名稱:使用doGet和doPost方法

程序名稱:j5_02.htm

 

<HTML>

       <BODY>

       <FORM ACTION="/doget" METHOD="get">

       請輸入姓名:

       <INPUT TYPE="TEXT" NAME="myname"><br>

       您的興趣:

       <SELECT NAME="love">

       <OPTION value="Sleep">Sleep</OPTION>

       <OPTION value="Dance">Dance</OPTION>

       <OPTION value="Travel">Travel</OPTION>

       </SELECT><br>

       <INPUT TYPE="SUBMIT" NAME="mysubmit"><br>

       <INPUT TYPE="RESET" VALUE="重新來過"><br>

       </FORM>

       </BODY>

</HTML>

 

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class j5_03 extends HttpServlet

{

       //重寫doPost方法

       public void doPost(HttpServletRequest req, HttpServletResponse res)

             throws ServletException, IOException

       {

                //首先設置頭信息

                res.setContentType("text/html");

                //用 writer方法返回響應數(shù)據(jù)

                PrintWriter out = res.getWriter();

                out.println("<html><head></head><body>");

                out.println("name: " + req.getParameter("myname"));

                out.println("<br>");

                out.println("love: " + req.getParameter("love"));

                out.println("</body></html>");

                out.close();

       }

       public void doGet(HttpServletRequest req, HttpServletResponse res)

                throws ServletException,IOException{

                doPost(req,res);

       }

}

6-1 什么是組件?使用組件有什么優(yōu)點?

現(xiàn)在軟件開發(fā)都已經(jīng)轉向了基于組件的開發(fā),目前具備代表性的組件技術有微軟的COM、COM+,有Sun的JavaBean和EJB(Enterprise Java Bean),另外還有CORBA(Common Object Request Broker Architecture,公共對象請求代理結構)

JavaBean規(guī)范將“軟件組件”的概念引入到Java編程的領域。組件是自包含的、可重用的軟件單元;而JavaBean組件,則可以使用可視的應用程序開發(fā)工具,可視地將它們編寫到Java程序中。JavaBean規(guī)范為Java開發(fā)人員提供了一種“組件化”其Java類的方法

 

6-2 編寫JavaBean的時候,要注意哪些?

1、如果類的成員變量的名字是xxx,那么為了更改或獲取成員變量的值,在類中使用兩個方法:

getXxx(),用來獲取屬性xxx。

setXxx(),用來修改屬性xxx。

2、對于boolean類型的成員變量,允許使用is代替get和set。

3、類中方法的訪問屬性必須是public的。

4、類中如果有構造方法,那么這個構造方法也是public的,并且是無參數(shù)的。

6-3 簡述JSP的設計模式。(企業(yè)筆試題)

JSP設計模式包括兩個:(1)Model1,JSP+JavaBean設計模式。(2)Model2,MVC設計模式。

在這種模式中,JSP頁面獨自響應請求并將處理結果返回客戶,所有的數(shù)據(jù)庫操作通過JavaBean來實現(xiàn)。大量地使用這種模式,常會導致在JSP頁面中嵌入大量的Java代碼,當需要處理的商業(yè)邏輯非常復雜時,這種情況就會變得很糟糕。大量的Java代碼使得JSP頁面變得非常臃腫。前端的頁面設計人員稍有不慎,就有可能破壞關系到商業(yè)邏輯的代碼。

“MVC”模式即是:“Model-View-Controller”模式。在這種模式中,通過JSP技術來表現(xiàn)頁面,通過Servlet技術來完成大量的事務處理工作,實現(xiàn)用戶的商業(yè)邏輯。

在這種模式中,Servlet用來處理請求的事務,充當了控制器(Controller即“C”)的角色,Servlet負責響應客戶對業(yè)務邏輯的請求并根據(jù)用戶的請求行為,決定將哪個JSP頁面發(fā)送給客戶。JSP頁面處于表現(xiàn)層,也就是視圖(View即“V”)的角色。JavaBean則負責數(shù)據(jù)的處理,也就是模型(Model即“M”)的角色。

JSP企業(yè)面試題整理(5)
7-2 圖示JDBC的工作原理,并列舉常用的對象。(企業(yè)筆試題)


建立是建立與數(shù)據(jù)庫之間的連接,也就是創(chuàng)建一個Connection的實例。DriverManager類的getConnection()方法將建立數(shù)據(jù)庫的連接:

Statement對象用于將SQL語句發(fā)送到數(shù)據(jù)庫中。存在3種Statement對象:(1)Statement;(2)PreparedStatement(從Statement繼承而來);(3)CallableStatement(從PreparedStatement繼承而來)。

ResultSet包含符合SQL語句執(zhí)行結果所有行,并且它通過一套get方法提供了對這些行中數(shù)據(jù)的訪問

7-3 如圖7-16,要求:查找 “張三”選擇所有課程的名稱,寫出SQL語句。(企業(yè)筆試題)

SELECT c.cname FROM sc a, student b, course c

WHERE a.cno=c.cno

AND a.sno=b.sno and b.sname ='張三'

 

7-4 下面的代碼段是否正確?請說明。(企業(yè)筆試題)

       pst = conn.prepareStatement("INSERT INTO grade(學號) VALUES (?)");

       for (int i = 101; i < 111; i++) {

                pst.setInt(1, i);

                pst.addBatch();

}

pst.execute ();

}

 

錯,pst.executeBatch();

7-5 簡述事務的基本概念,如何在JDBC中實現(xiàn)事務?

事務是一些事件的集合,執(zhí)行一條SQL語句可以理解成一個事件。事務中包含多個事件,如果每一個事件都能執(zhí)行成功的時候,事務才執(zhí)行,如果有任何一個事件不能成功執(zhí)行,事務的其他事件也不被執(zhí)行

boolean defaultCommit = conn.getAutoCommit();

conn.setAutoCommit(false);

try {

       stmt.executeUpdate(strSQL1);

       stmt.executeUpdate(strSQL2);

       conn.commit();

}

catch (Exception e) {

       conn.rollback();

       e.printStackTrace();

}

finally {

       if (stmt != null) {

                stmt.close();

       }

       if (conn != null) {

                conn.close();

       }

}

conn.setAutoCommit(defaultCommit);

7-6 結果集類型和結果集并發(fā)性各有幾種情況,有什么作用。

決定這個Statement對象創(chuàng)建的ResultSet對象是否可以滾動,還可以指定結果集是否對數(shù)據(jù)庫中的修改敏感。使用ResultSet類中的int常量來表示結果集類型,結果集類型有3種:

l         ResultSet.TYPE_FORWORD_ONLY:指定ResultSet對象是不可滾動,這是默認值。

l         ResultSet.TYPE_SCOLL_INSENSITIVE:指定ResultSet對象是可滾動的,但是對數(shù)據(jù)庫中修改不敏感。

l         ResultSet.TYPE_SCOLL_SENSITIVE:指定ResultSet對象是可滾動的,而且對數(shù)據(jù)庫的修改敏感。

結果集的并發(fā)性(Concurrency)決定ResultSet對象是否可以修改數(shù)據(jù)庫中的行。可以使用ResultSet類中定義的int常量來指定結果集的并發(fā)性。

l         ResultSet.CONCUR_READ_ONLY,指定ResultSet對象不能修改數(shù)據(jù)庫,默認值。

ResultSet.CONCUR_UPDATABLE,指定ResultSet對象可以修改數(shù)據(jù)庫。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多