當(dāng)編寫一個(gè)servlet時(shí),必須直接或間接實(shí)現(xiàn)servlet接口,最可能實(shí)現(xiàn)的方法就是擴(kuò)展javax.servlet.genericservlet或javax.servlet.http.httpservlet當(dāng)實(shí)現(xiàn)javax.servlet.servlet接口時(shí)必須實(shí)現(xiàn)5個(gè)方法
init(servletconfig config)
service(servletrequest req,servletresponse resp)
destroy()
getservletconfig()
getservletinfo()
service是執(zhí)行應(yīng)用邏輯的入口點(diǎn),包容器調(diào)用此方法來響應(yīng)進(jìn)來得請(qǐng)求,只是在servlet被成功初始化后才能調(diào)用它
其實(shí)servlet和applet差不多,當(dāng)一個(gè)servlet被實(shí)例化后,包容器自動(dòng)去調(diào)用固定的方法首先是init(),然后是service().....
genericservlet類提供了servlet接口的基本實(shí)現(xiàn),所以他的子類都必須實(shí)現(xiàn)service()方法
httpservlet類擴(kuò)展了genericservlet并且提供了servlet接口中具體于http的實(shí)現(xiàn),它更象一個(gè)其他所有的servlet都要擴(kuò)展的類,其中他定義了兩種形式的service方法:
service(servirequest req,servletresponse resp)
此方法是genericservlet的service()方法的實(shí)現(xiàn),他把resquest,response對(duì)象分別轉(zhuǎn)化為httpservletrequest和httpservletresponse并且調(diào)用下面重載的service()方法,所以不應(yīng)當(dāng)重載上面的service()方法:
protect void service(httpservirequest req,httpservletresponse resp)
他用http的request,response對(duì)象作為參數(shù),并且由上面的方法調(diào)用,httpservlet實(shí)現(xiàn)這個(gè)方法后就成為一個(gè)http請(qǐng)求的分發(fā)者,他把請(qǐng)求代理給doget(),dopost().....等doxxxx()方法
當(dāng)包容器為一個(gè)servlet收到一個(gè)請(qǐng)求時(shí),包容器調(diào)用公共的service方法在把參數(shù)轉(zhuǎn)換為httpservirequest,httpservletresponse 后,這個(gè)公共的方法調(diào)用保護(hù)的service根據(jù)http請(qǐng)求方法的類型,保護(hù)的service方法調(diào)用doxxxx()方法之一.
doget()方法是當(dāng)?shù)玫揭粋€(gè)get類型的請(qǐng)求時(shí)調(diào)用
dopost()方法是當(dāng)?shù)玫揭粋€(gè)post類型的請(qǐng)求時(shí)調(diào)用
httpservlet是從genericservlet繼承而來,因此httpservlet也有init和destroy這兩個(gè)生命周期函數(shù)以及service方法,只是httpservlet還有兩個(gè)重要的dopost方法和doget方法,并用他們來支持http的post和get方法,就是說如果要支持http的get方法,就要覆蓋doget方法,如果要支持http的post方法,就要覆蓋dopost方法。而get方法和post方法的主要區(qū)別在于:
post方法的數(shù)據(jù)傳遞方式比較安全,不會(huì)將傳遞的信息顯示在瀏覽器的網(wǎng)址后,而get方法則會(huì)將傳遞的信息顯示在瀏覽器的網(wǎng)址后,例如用get方法的瀏覽器網(wǎng)址:http://127.0.0.1:8080/response.jsp?name=myself;而用post方法則為:http://127.0.0.1:8080/response.jsp;這種區(qū)別當(dāng)用在密碼傳輸時(shí)就顯的更為重要。
聯(lián)系客服