1. 程式人生 > >javaWEB總結(1):第一個servlet程式

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的地方打斷點。

以上坑是本人測試時候遇到,定是不很全面。

為了尊重原作者,下面貼上佟剛老師視訊的地址: