1. 生命周期:實(shí)現(xiàn)了servlet接口的實(shí)現(xiàn)類(lèi)不是有我們創(chuàng)建的,而是由web服務(wù)器(容器)創(chuàng)建的
- init():servlet初始化的時(shí)候會(huì)調(diào)用init方法,默認(rèn)情況下是第一次被訪問(wèn)的時(shí)候tomcat創(chuàng)建了實(shí)例對(duì)象,第二次就不會(huì)調(diào)用了,說(shuō)明servlet實(shí)例是單例的.
- service():每次請(qǐng)求來(lái)的時(shí)候都會(huì)被調(diào)用
- destroy():當(dāng)serclet實(shí)例被銷(xiāo)毀的時(shí)候調(diào)用,即web服務(wù)器停止的時(shí)候
2. 詳解HTTPSERVLET
- servlet接口
- genericServlet實(shí)現(xiàn)servlet接口,通用servlet類(lèi).service(servletRequest ,servletResponse b)
- HttpServlet繼承了genericServlet類(lèi)service(HttpservletRequest a,HttpservletResponse b),一個(gè)專(zhuān)門(mén)處理Http請(qǐng)求的servlet
3 設(shè)置服務(wù)器啟動(dòng)servlet就被實(shí)例化
在web.xml中修改配置 <load-on-startup>1(代表最先創(chuàng)建的,如果有多個(gè)servlet,這個(gè)配置設(shè)置的越小,則越先創(chuàng)建)</load-on-startup>
4. init(servletcConfig comfig)
config對(duì)象是配置對(duì)象,在xml文件中配置
<init-param>
<param-name>name</param-name>
<param-value>mengtailin</param-value>
</init-param>
通過(guò)servletcConfig 接口的getinitparameter()方法可以得到參數(shù)名和值,框架中常用這種配置
5.servlet路徑映射
- 完全路徑匹配 以/開(kāi)頭 例如/aaa
- 目錄匹配 以/開(kāi)頭 例如/*
- 拓展名匹配 不能以/開(kāi)頭 例如*.do
- 優(yōu)先級(jí):完全>目錄>拓展名
- 同是目錄訪問(wèn),地址更精確的被訪問(wèn)
6. servletContext(容器)
-
web容器啟動(dòng)時(shí),該對(duì)象就被創(chuàng)建,它代表了當(dāng)前的web應(yīng)用
- 因?yàn)閟ervletContext管理應(yīng)用中的servlet,所以servlet可以通過(guò)該對(duì)象傳遞參數(shù),進(jìn)行信息傳遞,通過(guò)API可以看出,該對(duì)象是由servletconfig.getservletContext()得到。我們可以在xml文件中通過(guò)
<context-parm>
<para-name>aaa</para-name>
<para-value>aaa</para-value>
</context-parm>
設(shè)置全局參數(shù) - 三大域?qū)ο?/a>
- getServletContext.getRealPath()里面的參數(shù)內(nèi)容不會(huì)被檢驗(yàn),只有真正用到這個(gè)路徑才知道對(duì)不對(duì),所以一般我們的做法都是:
String path= request.getServletContext().getRealPath("/upload/");
File floder=new File(path);
if(!floder.exists())
{
floder.mkdir();
}
7. 讀取classpath下的資源文件的方法
- InputStream in=this.getClass().getClassLoader().getResourceAsStream("資源文件名")
上述方式通過(guò)類(lèi)加載器的方式,不依賴(lài)于servlet,任何類(lèi)都可以獲得類(lèi)路徑下的資源文件
8. servlet是單例的,不是線程安全的.
9. servlet沒(méi)有內(nèi)置對(duì)象
JSP中out對(duì)象在Servlet中我們可以使用response.getWriter()方法獲取,雖然他們都可以用來(lái)在jsp輸出內(nèi)容,但是本質(zhì)類(lèi)型是不一致的,out對(duì)象是jsp.writer類(lèi)型的而response.getWriter()是print.writer類(lèi)型的。
JSP中request對(duì)象在Servlet中我們可以通過(guò)service方法中的request參數(shù)或者doGet()和doPost()方法中的參數(shù)獲取。
JSP中response對(duì)象在Servlet中我們同樣可以通過(guò)service方法中的response參數(shù)或者doGet()和doPost()方法中的參數(shù)獲取。
JSP中的session對(duì)象在Servlet中可以通過(guò)request.getSession()函數(shù)獲取。
SP中的application對(duì)象在Servlet中可以通過(guò)getServletContext()函數(shù)獲取。
JSP中的exception對(duì)象在Servlet中可以通過(guò)Throwable獲取。
JSP中的page對(duì)象對(duì)應(yīng)Servlet中的this關(guān)鍵字。
JSP中的pageContext對(duì)象對(duì)應(yīng)Servlet中的PageContext。
JSP中的Config對(duì)象在Servlet中可以通過(guò)getServletConfig()函數(shù)。
