一、servlet配置和對映的要點
二、servletconfig介面
1、servletconfig介面的作用
2、重寫servlet中幾個方法時需要注意的幾點
一、servlet配置和對映的要點
(1)/代表當前web應用程式的根目錄,而不是整個web站點的根目錄。(因為web.xml中只能配置當前web應用程式中的servlet所以這裡的/代表當前web應用程式的根目錄也是合情合理的,如果代表整個web站點的根目錄不僅不會起到什麼用處,還有可能由於不小心寫錯當前應用程式名稱而導致配置錯誤)
(2)servlet對映到的url中也可以使用*萬用字元,但是只能有兩種固定的格式:
一種是 *.副檔名 在*前面不能有目錄分隔符"/",例如,*.do 表示匹配以 .do 結尾的所有url;
另一種是以正斜槓/開頭並以/* 結尾,例如, /* 表示配置當前web應用程式下的所有url, /action/* 表示匹配當前web應用程式下的 /action 子路徑下的所有url
總結:
1、* 可以與任何字元匹配,即可以代表目錄分割符/,也可以代表路徑名action和檔名a.html或a
所以可以認為*本身代表著所有,所以*只能使用在url最後一級的匹配路徑中,因為如果將*放到前面的話,*後面配置的具體路徑將沒有任何意義。不過如果將*放置到不是最後一級匹配路徑的時候*就不代表萬用字元了而是代表*字元本身的含義了
2、如果url以/開頭的話,*就代表了所有不以/開頭的子目錄,例如:/yyy/* 中*可以代表 action或action/test 或 action/test/a.html或 action/test/abc/a.do 等;
3、如果url以*開頭的話,*就代表了所有已/開頭的副檔名符合配置的所有路徑,例如,*.do 中的* 可以代表
/abc/dd.do 或 /ddd.do 或 /action/test/aaa/bbb/ccc.do 中.do之前的所有內容
二、servletconfig介面
1、servletconfig介面的作用
(1)service方法
每當針對某個servlet的訪問請求到達時,servlet引擎就會呼叫該servlet例項物件的service方法來進行響應。httpservlet中實現的service會根據不同的請求方式進行**到對應方法處理。httpservlet類為每一種http
請求方式都定義了乙個對應的do***方法,例如:與get請求方式對應的是doget方法,與post請求方式對應的是dopost方法。 如果我們重寫了service方法,且沒有通過super.service()來呼叫父類方法的話,不管以什麼
方式訪問該servlet 都無法被**到doget或dopost等方法的
(2)doget和dopost等方法
一般我們都會重寫doget和dopost這兩個方法的,不過由於httpservlet中的doget和dopost等方法的實現有, resp.senderror(httpservletresponse.sc_method_not_allowed, msg);一旦呼叫了該方法就會向resp物件中放在錯誤提示資訊,servlet將不會繼續向web介面輸入內容,所以當重寫doget和dopost等方法的時候不能通過super.do***的方式來呼叫父類的同名方法,否者就會報
http method get is not supported by this url 錯誤
(3)init
init方法會在第一次執行servlet之前進行呼叫初始化servlet的一些資訊。init方法是在genericservlet類中定義的,並且定義了兩個init方法,init()和init(servletconfig config)兩個方法,其中init(servletconfig config)方法
中進行了對init()方法的呼叫;genericservlet提供這個無引數的init()方法就是提供我們開發人員進行初始化servlet進行重寫的。因為如果沒有這個無引數的init()方法的話,我們就只能對有引數的
ini(servletconfig config)進行重寫,可是在重寫的時候只有通過super.init(servletconfig config)呼叫父類的同名同參的方法才能達到genericservlet類預期的效果,因為genericservlet類在init(servletconfig config) 將
引數config儲存為自己類的乙個私有成員變數,並且實現的servletconfig介面的其他方法會訪問該私有變數,如果沒有通過super.init(servletconfig config)呼叫父類的同名同參方法的話將,將私有引數將為null,例如:
getservletcontext()將會包空指標異常錯誤。可是genericservlet卻不能確保所有的開發人員都不會忘記通過super.init(servletconfig config)來呼叫父 類的同名同參方法,所以就新增了乙個無引數的init()方法讓開發人
員來進行自己的初始化工作而不會對genericservlet的其它方法有任何影響。
Servlet程式設計基礎
重定向,外部跳 1.位址列發生變化 2.不能重定向到伺服器內部資源 3.重定向後請求物件銷毀 web inf a.html web inf b.html b.jsp 內部跳 1 位址列不發生變化 2.可以訪問伺服器內部資源 3.後請求物件不會被銷毀 web inf b.html forward re...
Servlet入門基礎
什麼是servlet?手動建立servlet程式。public class helloservlet implements servlet override public servletconfig getservletconfig override public void service serv...
Servlet開發與配置
servlet開發 init 初始化jsp servlet的方法。destroy 銷毀jsp servlet之前的方法。service 對使用者請求生成響應的方法。如果需要重寫init 方法重寫該方法的第一行呼叫super.init config 該方法將呼叫httpservlet的init方法。s...