javaWEB總結(1):第一個servlet程式
1.新建一個javaWeb工程,工程的目錄如下
2.在com.dao.chu的包下新建一個HelloServlet.java類
package com.dao.chu; import java.io.IOException; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; /** * * Title: HelloServlet * Description:實現Servlet介面的類 * </p> */ public class HelloServlet implements Servlet { @Override public void destroy() { System.out.println("destroy..."); } @Override public ServletConfig getServletConfig() { System.out.println("getServletConfig..."); return null; } @Override public String getServletInfo() { System.out.println("getServletInfo..."); return null; } @Override public void init(ServletConfig arg0) throws ServletException { System.out.println("init..."); } @Override public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { System.out.println("service..."); } public HelloServlet() { System.out.println("HelloServlet's constructor.."); } }
3.修改web.xml檔案
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <!-- 配置和對映servlet --> <servlet> <!-- servlet註冊的名字 --> <servlet-name>helloServlet</servlet-name> <!-- servlet的全類名 --> <servlet-class>com.dao.chu.HelloServlet</servlet-class> </servlet> <servlet-mapping> <!-- 需要和某一個servlet子節點的servlet-name 子節點的文字節點一致 --> <servlet-name>helloServlet</servlet-name> <!-- 對映的具體訪問路徑:/代表當前WEB應用的根目錄 --> <url-pattern>/hello</url-pattern> </servlet-mapping> </web-app>
4.執行tomcat後,並且訪問web.xml中所配的servlet訪問地址,控制檯列印結果:
5.每重新整理請求一次頁面,控制檯便多輸出一個“service...”,重新整理兩次,共輸出三次service:
6.當停掉tomcat之後,控制檯多輸出了一個“destroy..”
總結:
一.web應用的跟路徑
1.web.xml中的/hello,中的“/”是當前web應用的跟路徑,本次訪問的路徑為http://localhost:7001/javaWeb_01/hello,
而web.xml中的“/”就相當於“http://localhost:7001/javaWeb_01/”;
二.servlet中有關生命週期的四個方法
1.構造器:只被呼叫一次,只有第一次請求servlet時,建立servlet例項,呼叫構造器,這說明servlet是單例的;
2.init方法:只被呼叫一次,在建立好例項後立即被呼叫,用於初始化當前的servlet;
3.service方法:被呼叫多次,每次請求都會呼叫service,實際用於處理請求;
4.destroy方法:只被呼叫一次,在當前servlet所在的WEB應用被解除安裝前被呼叫,用於釋放當前servlet所佔用的資源;
三.以上四個方法都由servlet容器自動呼叫。
跳過一些坑:
1.建立工程後沒有web.xml的問題
新建一個動態web工程,不要點選finish,一直點選next,最後如圖勾選即可。
2.控制檯沒有列印destroy..的問題
(1)不要關閉控制檯的停止按鈕,而要關閉tomcat的stop按鈕,如果是控制檯的按鈕 那就相當於伺服器斷電,當然看不到列印資訊,關閉server中的按鈕才是呼叫 tomcat中的shutdown.
(2)不過還看不到列印資訊就就用debug模式,在輸出destroy的地方打斷點。
以上坑是本人測試時候遇到,定是不很全面。
為了尊重原作者,下面貼上佟剛老師視訊的地址: