java 基礎

1.   JSP有哪些內置對象?作用分別是什麼?
(1) HttpServletRequest類的Request對象
作用:代表請求對象,主要用於接受客戶端通過HTTP協議連接傳輸到服務器端的數據。
(2) HttpServletResponse類的Respone對象
作用:代表響應對象,主要用於向客戶端發送數據
(3) JspWriter類的out對象
作用:主要用於向客戶端輸出數據;
        Out的基類是JspWriter
(4) HttpSession類的session對象
作用:主要用於來分別保存每個用戶信息,與請求關聯的會話;
         會話狀態維持是Web應用開發者必須面對的問題。
(5) ServletContex類的application對象
作用:主要用於保存用戶信息,代碼片段的運行環境;
        它是一個共享的內置對象,即一個容器中的多個用戶共享一個application對象,故其保存的信息被所有用戶所共享.
(6) PageContext類的PageContext對象
作用:管理網頁屬性,爲JSP頁面包裝頁面的上下文,管理對屬於JSP中特殊可見部分中已命名對象的訪問,它的創建和初始化都是由容器來完成的。
(7) ServletConfig類的Config對象
作用:代碼片段配置對象,表示Servlet的配置。
(8) Object類的Page(相當於this)對象
作用:處理JSP網頁,是Object類的一個實例,指的是JSP實現類的實例,即它也是JSP本身,只有在JSP頁面範圍之內纔是合法的。
(9)Exception
作用:處理JSP文件執行時發生的錯誤和異常
--------------------------------------------------

2、描述一下servlet的生命週期和基本架構。

1, 在服務器啓動時,當servlet被客戶首次請求或被配置好,這時由服務器加載servlet.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

Servlet的加載可以通過合用一個自定義的Java類加載工具(可允許自動Servlet重載)從本地或遠程地址來實現。這一步等同於

  Class c = Class.forName(“com.sourceStream.MyServlet”);

這裏用的術語加載指同時加載和初始化servlet的過程。

 

2.服務器創建一個servlet類實例來爲所有請求服務。利用多線程,可以由單個servlet實例來服務於並行的請求。惟五的例外是,因爲實現SingleThreadModel接口的servlet,這樣,服務器會創建一個實例池並從中選擇一個來服務於每一新的請求。此步相當於以下java代碼:

Servlet s = (Servlet)c.newInstance();

3. 服務器調用Servletinit()方法。它用來保證完成在首次請求servlet處理以前的執行過程。如果servlet創建了多個servlet實例,則爲每個實例調用一次init()方法。

 

4.服務器從包括在客戶請求中的數據裏構造一個ServletRequestHttpServletRequest對象,還構造一個ServletResponseHttpServletResponse對象來返回響應提供方法。其參數類型依賴於servlet是否分別擴展GenericServletHttpServlet.(注意:如果服務器沒有收到對這一servlet的請求,此步驟與以下5---7步驟將不會發生。)

 

5.服務器調用servletservice()方法(對於Httpservletservice()將調用更爲具體的方法:如:doGet() doPost()),在此步驟中作爲參數傳遞結構化對象。當並行的請求到來時,多個service()方法能夠同時運行在獨立的線程中。(除非servlet實現了SingleThreadModel接口)

 

6通過分析ServletReuestHttpServletRequest對象。Service()方法處理客戶的請求.並調用ServletResponseHttpServletResponse對象來響應。

 

7.如果服務器收到另一胩對該servlet的請求,這個處理過程從5步驟重複。

 

8.一旦servlet容器檢測到一個servlet要被卸載,這可能是因爲要回收資源或因爲它正在被關閉,服務器會在所有servletservice()線程完成之後(或在服務器規定時間後)調用servletdestroy()方法。然後servlet就可以進行無用存儲單元收集清理。Servlet容器不需要爲保留一個servlet而指定時間。

 

以上8個步驟就是servlet的生命週期。

-------------------------------------------------------------

3、多線程有幾種實現方法,都是什麼?
   同步有幾種實現方法,都是什麼?

(1)通過繼承class Thread或實現Runnable接口,我們可以實現多線程
(2)通過synchronized實現資源同步
2.1 鎖標誌
  2.1.1 每個對象都有一個標誌鎖。當對象的一個線程訪問了對象的某個synchronized數據(包括函數)時,這個對象就將被“上鎖”,所以被聲明爲synchronized的數據(包括函數)都不能被調用(因爲當前線程取走了對象的“鎖標誌”)。只有當前線程訪問完它要訪問的synchronized數據,釋放“鎖標誌”後,同一個對象的其它線程才能訪問synchronized數據。

  2.1.2 每個class也有一個“鎖標誌”。對於synchronized static數據(包括函數)可以在整個class下進行鎖定,避免static數據的同時訪問。
2.2 non-static的synchronized數據只能在同一個對象的純種實現同步訪問,不同對象的線程仍可同時訪問。
2.3 對象的“鎖標誌”和class的“鎖標誌”是相互獨立的
(3)同步的優化

  1) synchronized block

  語法爲:synchronized(reference){ do this }

  reference用來指定“以某個對象的鎖標誌”對“大括號內的代碼”實施同步控制。
參考:http://www.yesky.com/SoftChannel/72342371961929728/20031122/1747065.shtml
--------------------------------------------------------------------------------------
4、public private protected以及不寫時的區別?
       privateprotectedpublic是類成員(成員變量、成員方法)的訪問權限修飾符

    訪問權限指本類中的成員可以被哪些類訪問

    比如,被private修飾的成員不允許被其他類訪問,只允許被本類訪問;而被public所修飾的成員允許則能被所有類訪問

7-1  類成員的訪問權限

 

被本類訪問

被子類訪問

被同一包中的其他類訪問

被所有類訪問

Private

允許

不允許

不允許

不允許

Protected

允許

允許

允許

允許

Public

允許

允許

允許

不允許

friendly

允許

不允許

允許

不允許


------------------------------------------------------------------
5、用JAVA實現數據庫查詢(寫一段完整的程序)。
class .forName(drive class);
Connection conn = DriverManger.getConnection(URL,username,password);
Statement stmt = conn.createStatement(sqk);
ResultSet rs = stmt.executeQuery();
while(rs.next)
{
rs.getString();
.......
}

呵~~~
我自己看的!


發佈了29 篇原創文章 · 獲贊 0 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章