理解 Servlet:
1.?????? doGet() 和 doPost() 的區別:
參考資料 1 : http://bbs.blueidea.com/viewthread.php?tid=891513&page=
l?????????
servlet
它有一個
方法
默認
被執行
在接到
用戶請求時
,
這個方法
就是
service()
它會
根據
用戶端
具體的
請求類型
自動選擇
使用哪種方法
反應
.
l?????????
可以理解為針對
form
的
get ,post
來執行相應的
doGet,doPost
方法
l?????????
form
的
get
和
post
有什么區別...這個是重點..嘿~~謝了..
l?????????
get
是地址欄參數傳遞
,
并且沒有正文體內容
,
它僅僅由一個方法語句和不同的請求標題域
組成
.
例如
:
GET /login.html?userName=Iori&passWord=12345 HTTP/1.0
User-Agent:Mozilla/4.51[en](WinNT;1)
Accept:image/gif,image/jpeg.image/pjpeg,*/*
上面是表單
選擇方法為
get
時
點擊提交事件
自動添加到
地欄的
,
當然
你也可以這自己寫
這樣的東東
.
post
的不同
在于
參數信息
保存在
正文體中
對用戶
是不可見的
.
不像
get
方法
,
不能通過改寫瀏覽器地址
來發送一個
post
請求
而前者可以
.
這樣不安全的
一個
post
請求的
例子
如下
:
POST /login.html HTTP/1.0
User-Agent:Mozilla/4.51 [en] (WinNT;1)
Accept:image/gif,image/jpeg,image/pjpeg,*/*
Content-Length:34
Content-Type:application/x-www-form-urlencoded
userName=Iori&passWord=12345
看到了吧
數據被存到
正文體中了
這就是它們之間
最大的區別
.
參考資料
2
:
http://book.77169.org/data/web5409/20050328/20050328__3854464.html
問題:
1,? servlet 中處理的方法,有 doPost () doGet () 中的方法,它們都有共同的參數,那就是 HttpServletRequest HttpservletResponse 對象,可是我不知道這兩個方法有什么區別,什么該用 doPost() 什么時候該用 doGet() 呢??
2,? servlet 中的 service ()方法又是干什么的呢??它和 doPost() doGet() 又有什么關系呢?
回答:
l???????? get 、 post 等那些是指瀏覽器傳給 Servlet 的方法,可以在 form 的 action 中指定,如 action="post",action="get" 之類的,默認使用 get ,如在瀏覽器直接輸入 xxx?param1=xx¶m2=xx ,這種方式是 get 。
l???????? service() 和 doGet(),doPost() 的關系是: servlet 先調用默認執行的 service() 方法,由它決定調用哪個處理方法。
l????????
我來解釋一下什么是Get、Post吧:
1.Post方式就是通過表單的submit()方法提交到服務器的,當然servlet調用的是doPost();
2.Get方式就是自定義路徑傳參數,比如:../servlets/XX.jsp?parameterName=parameterValue&...
這種形式提交到服務器的,對應的是doGet()方法。這種方式一般有長度限制,打的參數多了提交不上去。
一般在servlet里面是不用管以哪知形式提交的,可以定義一個公共方法,在doPost()和doGet()方法里面都去調用,或者:doPost(){ doGet() }
l????????
get
方法我們可以在地址欄中直接輸入參數也可以的
但
post
方法在地址欄中直接輸入就不可以了
,
顯示不出頁面的
問題:
1. servlet 是一個接口嗎?是不是接口就必須對其所有方法實例化,也就是說,一一實例化 init(),service(),doGet(),doPost() 和 destroy() 方法?
2. doGet() 和 doPost() 方法什么時候可以統一調用?比如 doPost(){ doGet();}. 既然使用 doPost() 方法不能從地址欄里輸入參數訪問,那么為什么 doPost() 可以直接使用 doGet() 方法呢?反過來, doGet() 可是使用 doPost() 方法嗎?
3. servlet 的方法有哪些?除了 init(),service(),doGet(),doPost() 和 destroy() 方法之外還有別的嗎?如果只有這五個方法,那么是不是說,寫一個 servlet ,就是要實現 doGet() 和 doPost() 方法?(因為 service 方法是默認一定啟動的)
4. java 中接口和 c++ 中虛函數的區別是什么?
參考資料 1 : http://www.51dibs.com/html/2006/article/info4/a_11af20782d07b7b7.htm
什么是接口?
在
Java中,接口是不相關的對象相互交互的設備。Java接口與
協議很相似。實際上,其它面向對象語言也有Java的接口的
功能,但是它們稱為協議。
Java接口定義了一套方法,但沒有實現它們。一個實現接口的
類可以實現定義在這個接口中的所有方法,因此可以實現一定
的行為。
定義:接口是方法定義(而不實現)的被命名的集合。接口也
可以包括常量定義。
參考資料 2 : http://www.umlchina.com/best/g30/u1144079.htm#1144178
l???????
Java中的接口和抽象類的區別,在于接口中沒有屬性,而且所有的方法都是抽象的,而抽象類可以有屬性,而且可以有抽象方法,也可以有實現的方法。但兩者都不能被實例化。
使用的時候,一個類可以繼承多個接口,但只能繼承一個抽象類。
l???????
抽象類與接口的重大區別就在于它能提供一部分實現,包括方法和屬性。在某些情況下這是非常有用的,比如在
template method模式中。
你說“有了單純的接口,就不應該使用抽象類了”,這種說法未免過于絕對了。
在邏輯上,抽象類表示了抽象的概念,它們的一部分行為需要在具體的子類中定義,但同時又定義了子類的一部分分共性的行為和屬性。
l???????
我認為抽象類基本就是個“實現機制”。
我們在分析的時候會去管一個類是不是抽象類嗎?不會吧?
它的意義在于提供了一個安全的機制,把一些類的共同行為抽象到一個“半成品”類中,又組織人們使用這個“半成品”類。
自己的理解:(結合例子來理解)
理解接口:
接口中沒有屬性,而且所有的方法都是抽象的;
比如說Servlet都是通過實例化接口實現的,servlet接口定義了init(),service(),doGet(),doPost(),destroy()方法,但是只是定義,沒有去實現它們,實現一個servlet類時一一實現servlet接口定義的方法。
理解抽象類:
l????????
抽象類可以有屬性,而且可以有抽象方法,也可以有實現的方法。
l???????
邏輯上,抽象類表示了抽象的概念,它們的一部分行為需要在具體的子類中定義,但同時又定義了子類的一部分分共性的行為和屬性。
l???????
感覺是,接口沒有屬性也沒有已經實現的方法,適合與servlet這種類型的類似的協議的機制;而抽象類提供了一個抽象和半成品的概念,定義了所有子類的共有屬性,并實現了所有子類的共有方法,子類只需要在此基礎上實現自己的特有屬性和方法,更安全,更方便。比如一個典型的例子,關于“車”類,定義成一個抽象類,并把所有車的共有屬性和方法都定義并實現了,子類(比如car)就可以在此基礎上繼承并定義和實現自己特有的屬性和方法就可以了。沒必要定義為接口,把共有的屬性和方法也要依次各自實現。
5. java 中為什么沒有多繼承?你是如何理解的?
6.extends
與
implent
的區別?