標籤: javawebhtml
[TOC]java
開發步驟:git
API文檔github
生命週期相關方法(life-cycle methods)apache
Servlet的生命週期經過java.servlet.Servlet
接口中的init()
、service()
、和destroy()
方法表示。Servlet的生命週期有四個階段:加載並實例化、初始化、請求處理、銷燬。(見文末【參考連接】)api
1.在tomcat中新建一個web應用hello
,在web應用中新建一個WEB-INF/classes
目錄tomcat
2.在classes
目錄新建一個FirstServlet
安全
package org.iot; import java.io.*; import javax.servlet.*; public class FirstServlet extends GenericServlet{ public void service(ServletRequest req,ServletResponse res)throws ServletException,java.io.IOException{ OutputStream out = res.getOutputStream(); out.write("hello servlet!!!".getBytes()); } }
3.編譯,javac -cp %CATALINA_HOME%/lib/servlet-api.jar -d . FirstServlet.java
,命令行手動編譯參考這裏服務器
4.在WEB-INF
目錄中新建一個web.xml
文件,配置servlet的對外訪問路徑
5.啓動tomcat訪問
時序圖
<servlet>
包含<servlet-name>
和<servlet-class>
;<servlet-mapping>
包含<servlet-name>
和<url-pattern>
web.xml
中一個<servlet>
可對應多個<servlet-mapping>
<servlet-mapping>
的<url-pattern>
可使用通配符,兩種固定格式:*.擴展名
;以/
開頭,以/*
結尾request
和response
對象(它們的生命週期很短),傳給service
方法。init
方法的調用是在第一次請求時,而非服務器啓動時,除非在<servlet>
標籤配置<load-on-start-up>
,數字越小優先級越高/
,則爲當前web應用的缺省servlet,不匹配的都交給缺省SingleThreadModel
標記接口(已棄用)<servlet>
標籤配置<init-param>
,經過getServletConfig
方法得到配置。可配置輸出字符集,讀哪一個配置文件等等。ServletConfig.getServletContext
方法得到,在<context-param>
標籤配置。概念
一個web應用全部servlet共享同一個ServletContext對象,可實現數據共享。ServletContext被稱爲context域對象。
域:做用範圍;context域:整個應用程序範圍。
ServletContext域:
轉發:客戶機一次請求;重定向:客戶機兩次請求
做用
配置文件:properties文件和xml文件;數據有關係使用xml文件,沒有關係則使用properties文件。
1.經過ServletContext
的getResourceAsStream
方法,讀取properties文件
模板代碼(注意文件位置不一樣寫路徑會不一樣):
InputStream in = this.getServletContext().getResourceAsStream("/WEB-INF/classes/org/iot/servlet/db.properties"); Properties properties = new Properties();//map properties.load(in);
2.經過servletContext
的getRealPath
方法獲得資源的絕對路徑,再經過傳統方式(FileInputStream
)讀取
3.經過類裝載器去讀,ClassLoader
的getResourceAsStream
(若是讀取資源文件的程序不是servlet),文件不能太大。只裝載一次,因此如要讀到更新後的數據,經過類裝載的方式獲得資源文件的位置,再經過傳統方式讀取資源文件的數據(用getResource
獲得path,再用FileInputStream
)