1.........servlet特點(diǎn)
1) servlet是個(gè)普通java類 ? 主要繼承httpservlet類,繼承httpservlet類是為了創(chuàng)建一個(gè)http協(xié)議的servlet程序
2)servlet程序交給tomcat運(yùn)行的
2..........servlet開(kāi)發(fā)過(guò)程
1)把servlet的class字節(jié)碼拷貝到WEB-INF/classes文件下
2)在web.xml中配置
3.........servlet的執(zhí)行過(guò)程
前提: ? ? ? ? tomcat服務(wù)器啟動(dòng)時(shí),會(huì)加載conf/web.xml文件,再加載站點(diǎn)下每個(gè)應(yīng)用web.xml文件
例:站點(diǎn)下的web應(yīng)用名稱 ? ? /day10
? ? ? ? 資源名稱 ? ? ? ?/hello
1)在day10應(yīng)用下的web.xml文件中找是否匹配得<url-pattern>/hello</url-pattern>
2)使用servlet的內(nèi)部名稱在web.xml文件中查找是否相同名稱的servlet配置
3)得到對(duì)應(yīng)的servlet-class內(nèi)容? ? ? ? 字符串:cdqf.a_servlet.HelloServlet
4.......servlet的生命周期
1.servlet程序的生命周期是由tomcat控制的 ?
2.servlet的四個(gè)生命周期
? ? 1)構(gòu)造函數(shù)? ? 只調(diào)用1次? 正面servelt對(duì)象在tomcat中是單實(shí)例的
? ? ? 2)init()方法? ? 初始化 ?創(chuàng)建完servlet對(duì)象后調(diào)用 ? ?只調(diào)用1次
? ? ? ? 3)service方法 ? ? 每次請(qǐng)求servlet時(shí)調(diào)用 ? 調(diào)用n次
? ? ? ?4)destroyy方法:servlet對(duì)線銷毀時(shí)調(diào)用 ?,只調(diào)用1次,tomcat停止時(shí) ? 或者web項(xiàng)目重新部署時(shí)
5......servlet的四個(gè)對(duì)象
? ? ?1)httpservletrequest對(duì)象域 ? ? ? 封裝請(qǐng)求信息
? 2)httpservletresponse對(duì)象 ? ? ? 封裝響應(yīng)信息
3) servletconfig對(duì)象 ? ? ? ? ?封裝一個(gè)servlet配置參數(shù)信息
4 ?servletcontext對(duì)象域 ? ? ?封裝web應(yīng)用環(huán)境信息
6...........wervletcontext對(duì)象域
?1.介紹
servletContext叫servlet的上下文對(duì)象,表示該web應(yīng)用下的環(huán)境,一個(gè)web項(xiàng)目只有一個(gè)serveltContext對(duì)象
2創(chuàng)建時(shí)機(jī)
servletContext是tomcat加載完當(dāng)前項(xiàng)目 ,作為servletConfig對(duì)象的成員變量傳入servlet中,通過(guò)servletConfig的getservletContext得到的servletCotext對(duì)象
3得到全局的參數(shù)
方法? ? ? java.lang.StringgetInitParameter(java.lang.String name)
java.util.EnumerationgetInitParameterNames()
域相關(guān)的方法 ?
void setAttribute(java.lang.String name,
java.lang.Object object)保存數(shù)據(jù)
java.lang.Object getAttribute(java.lang.Stringname)得到數(shù)據(jù)
void removeAttribute(java.lang.Stringname)清除數(shù)據(jù)
7 ?轉(zhuǎn)發(fā)相關(guān)的
RequestDispatchergetRequestDispatcher(java.lang.String path)
在servlet中實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)
請(qǐng)求重定向:response.sendRedirect(路徑);
請(qǐng)求轉(zhuǎn)發(fā):request.getRequestDispacher(路徑).forward(request,respone);
/=======請(qǐng)求重定向vs請(qǐng)求轉(zhuǎn)發(fā)區(qū)別====
請(qǐng)求重定向:
1)地址欄改變,改變?yōu)橹囟ㄏ虻降刂?/p>
2)可以重定向到當(dāng)前web應(yīng)用,其他web應(yīng)用,甚至是其他站點(diǎn)資源。
3)處于兩次不同的請(qǐng)求。不可以使用request域?qū)ο髞?lái)共享數(shù)據(jù)。
請(qǐng)求轉(zhuǎn)發(fā):
1)地址欄不會(huì)改變。
2)只能轉(zhuǎn)發(fā)到當(dāng)前web應(yīng)用內(nèi)部資源。
3)處于同一次請(qǐng)求。可以使用request域?qū)ο髞?lái)共享數(shù)據(jù)
不同類型資源:
1)web應(yīng)用內(nèi)部資源。在當(dāng)前web應(yīng)用中的資源
2)其他web應(yīng)用資源。在同一個(gè)站點(diǎn)下的其他web應(yīng)用的資源。
3)站點(diǎn)外的資源。其他站點(diǎn)下的資源。
D%?????X