筆記總結(jié)自網(wǎng)易云課堂Servlet系列課程
什么是Servlet
Servlet == Server + Applet
Applet是采用Java編寫的小應用程序,可以內(nèi)嵌在HTML中,由支持applet的瀏覽器在客戶端運行。
而Servlet指的是在服務器端運行的applet,Servlet類是一個獨特的Java類,它本身不包含main方法,不能獨立運行于JVM中,需要運行在特殊的容器中,由容器進行管理。編寫Servlet程序時,需要遵循Servlet規(guī)范。Servlet與HTTP關(guān)系緊密,能夠處理HTTP請求,并提供HTTP響應。用一句話來總結(jié),即:
一個Servlet是一個Java類,并且提供基于請求-響應模式的Web服務
Servlet容器
Servlet依靠容器運行,而又與容器分離,相互獨立發(fā)展。
Servlet容器提供Servlet的裝載和管理工作,包括Servlet的創(chuàng)建運行和銷毀。
而Servlet容器本質(zhì)上是一個服務器程序,負責將請求分配給對應的Servlet,然后將Servlet運行的結(jié)果回傳給服務器,服務器再將最后的結(jié)果返回給客戶端。
Servlet的創(chuàng)建
創(chuàng)建一個Servlet類,需要這個類繼承自HttpServlet類,我們可以在tomcat/lib文件目錄下找到servlet.jar文件,只要將這個文件添加進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進所有需要的庫文件,這樣,我們的hello world就寫好了,想要真實的看到語句的執(zhí)行結(jié)果,需要有服務器的基礎(chǔ)知識,即web.xml文件的配置路徑和配置方法。web.xml配置一般放在項目目錄下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,部署項目,進行訪問就可以了。
如果我們進行跟蹤的話,會發(fā)現(xiàn),Servlet在進行訪問時,會先調(diào)用service方法,再調(diào)用doGet方法。
在處理HTTP請求時,servlet容器會根據(jù)配置文件web.xml找到servlet地址,并將請求轉(zhuǎn)發(fā)給service方法,傳入兩個參數(shù),如果請求是GET方法,service就會將請求再次轉(zhuǎn)發(fā)給doGet方法進行后續(xù)的處理工作。最后,我們會使用HttpServletResponse對象將數(shù)據(jù)返回。這就是一個完整的Servlet處理流程。