筆記總結(jié)自網(wǎng)易云課堂Servlet系列課程
什么是Servlet
Servlet == Server + Applet
Applet是采用Java編寫的小應(yīng)用程序,可以內(nèi)嵌在HTML中垂寥,由支持applet的瀏覽器在客戶端運(yùn)行。
而Servlet指的是在服務(wù)器端運(yùn)行的applet荐捻,Servlet類是一個獨(dú)特的Java類痰哨,它本身不包含main方法虽另,不能獨(dú)立運(yùn)行于JVM中蚌铜,需要運(yùn)行在特殊的容器中锨侯,由容器進(jìn)行管理。編寫Servlet程序時冬殃,需要遵循Servlet規(guī)范囚痴。Servlet與HTTP關(guān)系緊密,能夠處理HTTP請求造壮,并提供HTTP響應(yīng)。用一句話來總結(jié)骂束,即:
一個Servlet是一個Java類耳璧,并且提供基于請求-響應(yīng)模式的Web服務(wù)
Servlet容器
Servlet依靠容器運(yùn)行,而又與容器分離展箱,相互獨(dú)立發(fā)展旨枯。
Servlet容器提供Servlet的裝載和管理工作,包括Servlet的創(chuàng)建運(yùn)行和銷毀混驰。
而Servlet容器本質(zhì)上是一個服務(wù)器程序攀隔,負(fù)責(zé)將請求分配給對應(yīng)的Servlet,然后將Servlet運(yùn)行的結(jié)果回傳給服務(wù)器栖榨,服務(wù)器再將最后的結(jié)果返回給客戶端昆汹。
Servlet的創(chuàng)建
創(chuàng)建一個Servlet類,需要這個類繼承自HttpServlet類婴栽,我們可以在tomcat/lib文件目錄下找到servlet.jar文件满粗,只要將這個文件添加進(jìn)IDE的lib中,就可以了愚争,或者我們也可以直接安裝Eclipse IDE for Java EE版本鏈接在此映皆。
創(chuàng)建完成之后挤聘,重寫doGet和service方法。
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
super.doGet(req, resp);
PrintWriter pw = resp.getWriter();
pw.print("hello world");
pw.close();
}
之后import進(jìn)所有需要的庫文件捅彻,這樣组去,我們的hello world就寫好了,想要真實(shí)的看到語句的執(zhí)行結(jié)果步淹,需要有服務(wù)器的基礎(chǔ)知識从隆,即web.xml文件的配置路徑和配置方法。web.xml配置一般放在項(xiàng)目目錄下WEB-INF文件目錄下贤旷。這里僅介紹Servlet的配置广料。
<servlet>
<servlet-name>Servlet的名字</servlet-name>
<servlet-class>Servlet類的路徑以包的形式來寫,比如com.java.helloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Servlet的名字幼驶,與上相同</servlet-name>
<url-pattern>Servlet對外路徑艾杏,如/hello</url-pattern>
</servlet-mapping>
接下來,只需要啟動Tomcat盅藻,部署項(xiàng)目购桑,進(jìn)行訪問就可以了。
如果我們進(jìn)行跟蹤的話氏淑,會發(fā)現(xiàn)勃蜘,Servlet在進(jìn)行訪問時,會先調(diào)用service方法假残,再調(diào)用doGet方法缭贡。
在處理HTTP請求時,servlet容器會根據(jù)配置文件web.xml找到servlet地址辉懒,并將請求轉(zhuǎn)發(fā)給service方法阳惹,傳入兩個參數(shù),如果請求是GET方法眶俩,service就會將請求再次轉(zhuǎn)發(fā)給doGet方法進(jìn)行后續(xù)的處理工作莹汤。最后,我們會使用HttpServletResponse對象將數(shù)據(jù)返回颠印。這就是一個完整的Servlet處理流程纲岭。