如何開發一個servlet
步驟:
- 編寫java類,繼承HttpServlet
- 重寫doGet和doPost方法
- Servlet程序交給服務器運行
3.1servlet程序的class碼拷貝到WEB-INF/classes目錄
3.2在web.xml文件中進行配置
注意:在eclipse neon2.0中,servlet直接生成已經不再需要配置web.xml文件,但是如果不使用2.0的功能,使用web.xml配置的servlet依然可以運行。
配置web.xml文件的寫法:
1 <!-- 配置一個servlet --> 2 <!-- servlet的配置 --> 3 <servlet> 4 <!-- servlet的內部名稱,自定義。盡量有意義 --> 5 <servlet-name>FirstServlet</servlet-name> 6 <!-- servlet的類全名:包名+類名 --> 7 <servlet-class>com.maodoer.test.FirstServlet</servlet-class> 8 </servlet> 9 10 <!-- servlet的映射配置--> 11 <servlet-mapping> 12 <!-- servlet的內部名稱,一定要和上面的內部名稱一致 --> 13 <servlet-name>FirstServlet</servlet-name> 14 <!-- servlet的映射路徑(訪問servlet的路徑) --> 15 <url-pattern>/first</url-pattern> 16 </servlet-mapping>
問題:訪問URL http://localhost:8080/day10_web/first
前提:tomcat服務器啟動時,首先加載webapps中的每隔web應用的web.xml配置文件。
http://:http協議
localhost:到本地的hosts文件中查找是否存在該域名對應的ip地址
8080:找到tomcat服務器
/day10_web:在tomcat的webapps目錄下找到day10的目錄
/first:資源名稱
1)在day10的web.xml中查找是否有匹配的url-pattern的內容(/first)
2)如果找到匹配的url-pattern,則使用當前的servlet-name的名稱到web.xml文件職工查詢是否有相同名稱的servlet配置
3)如果找到,則取出對應的servlet配置信息中的servlet-class內容,字符串:com.maodoer.test.FirstServlet
通過反射:
a)構造FirstServlet的對象
b)然后調用FirstServlet里面的方法
Servlet的映射路徑:
url 瀏覽器輸入
精確匹配: /first http://localhost:8080/day10_web/first
/maodoer/first http://localhost:8080/day10_web/maodoer/first
模糊匹配: /* http://localhost:8080/day10_web/任意字符
/itcast/* http://localhost:8080/day10_web/itcast/任意字符
*.后綴名 http://localhost:8080/day10_web/任意路徑.后綴名
*.html(偽靜態) http://http://localhost:8080/day10_web/ergrep.html
注意:
1)url-pattern一定以/開頭或者以*開頭。
2)不能同時使用兩種模糊匹配,例如/itcast/*.do
3)當輸入的url有多個servlet同時被匹配的情況下:
3.1精確匹配優先(長的最像優先被匹配)
3.2以后綴名結尾的模糊匹配級優先級最低
Servlet缺省路徑
servlet的缺省路徑是在tomcat服務器內置的一個路徑。該路徑對應的是一個DefaultServlet(缺省Servlet)。這個缺省的Servlet的作用適用於解析web應用的靜態資源文件。
tomcat--》config--》web.xml文件
問題:URL輸入http://localhost:8080/day10_web/index.html如何讀取文件?
1)到day10_web應用下的web.xml文件查找是否有匹配的url-pattern。
2)如果沒有匹配的url-pattern,則交給tomcat內置的DefalutServlet進行處理。
3)DefalutServlet程序到day10_web項目的根目錄下查找是否存在一個名稱為index.html的靜態文件。
4)如果找到該文件,則讀取該文件的內容,返回瀏覽器。
5)如果找不到該文件,則返回404錯誤。
