Java Web學習3(Servlet技術1-基礎知識、項目搭建流程)

一、基礎知識

 1、Servlet簡介

Servlet是JavaWeb應用中最核心的組件,它是運行在Web服務器的Java應用程序,它是作爲來自 Web 瀏覽器或其他 HTTP 客戶端的請求和 HTTP 服務器上的數據庫或應用程序之間的中間層。

Servlet的運行需要Servlet容器支持,Servlet容器通過調用Servlet對象提供的標準API接口對請求進行處理。

狹義的Servlet是指Java語言實現的一個接口,廣義的Servlet指的是任何實現了Servlet接口的類,一般人們理解爲後者。

Servlet的主要功能如下:

  • 讀取客戶端(瀏覽器)發送的顯式的數據。這包括網頁上的 HTML 表單。
  • 讀取客戶端(瀏覽器)發送的隱式的 HTTP 請求數據。這包括 cookies、媒體類型和瀏覽器能理解的壓縮格式等等。
  • 處理數據並生成結果。
  • 發送顯式的數據(即文檔)到客戶端(瀏覽器)。
  • 發送隱式的 HTTP 響應到客戶端(瀏覽器)。

特點:

  • 運行在支持java的應用服務器上。
  • Servlet的實現遵循了服務器能夠識別的規則,即服務器會根據請求對應的servlet進行請求處理。
  • 簡單方便,可移植性強。 

2、Servlet結構體系

 

(1)Servlet接口

在Servlet開發中,任何一個Servlet對象都直接或間接實現javax.servlet.Servlet接口,該接口包括5個方法:

 (2)ServletConfig接口

ServletConfig接口位於javax.servlet包中,它封裝了Servlet的配置信息,在Servlet初始化期間被傳遞。該對象定義了4個方法:

 (3)GenericServlet類

該類是一個抽象類,創建Servlet對象時,可以簡化程序代碼。

 (4)HttpServlet類

HttpServlet類是一個抽象方法,可以很方便的對HTTP請求進行處理和響應。

 3、Servlet生命週期

  • 加載Servlet類,創建Servlet實例。
  • Servlet 通過調用 init () 方法進行初始化:可在web.xml文件中爲servlet指定初始化參數。
  • Servlet 調用 service() 方法來處理客戶端的請求:對於收到的每個Http請求,容器會調用service()方法處理請求。對於HttpServlet類,通常調用doGet()、doPost()等方法。
  • Servlet 通過調用 destroy() 方法終止。
  • 最後,Servlet 是由 JVM 的垃圾回收器進行垃圾回。

(1)init()方法

 init 方法被設計成只調用一次。它在第一次創建 Servlet 時被調用,在後續每次用戶請求時不再調用。Servlet 創建於用戶第一次調用對應於該 Servlet 的 URL 時,但是您也可以指定 Servlet 在服務器第一次啓動時被加載。

(2)service()方法

service() 方法是執行實際任務的主要方法。Servlet 容器(即 Web 服務器)調用 service() 方法來處理來自客戶端(瀏覽器)的請求,並把格式化的響應寫回給客戶端。每次服務器接收到一個 Servlet 請求時,服務器會產生一個新的線程並調用服務。service() 方法檢查 HTTP 請求類型(GET、POST、PUT、DELETE 等),並在適當的時候調用 doGet、doPost、doPut,doDelete 等方法。

(3)destroy()方法

destroy() 方法只會被調用一次,在 Servlet 生命週期結束時被調用。該方法可以關閉數據庫連接、停止後臺線程、把 Cookie 列表或點擊計數器寫入到磁盤,並執行其他類似的清理活動。

二、Servlet基本應用

 1、Servlet創建主要有兩種方式

  • 第一種爲創建一個普通的Java類,使這個類繼承HttpServlet類,再通過手動配置Web.xml文件註冊Servlet對象。
  • 第二種方法直接通過IDE集成開發工具進行創建。

 2、Servlet配置

通過Servlet配置,告訴web容器哪個請求調用哪一個Servlet對象處理,對Servlet起到一個註冊作用。

 Servlet配置包含在web.xml文件中,主要通過以下兩步:

(1)聲明Servlet對象

通過<servlet>標籤聲明一個Servlet對象,該標籤包括兩個子元素,<servlet-name>和<servlet-class>。

<servlet>
        <servlet-name>添加Servlet的名稱</servlet-name>
        <servlet-class>添加Servlet的全類名</servlet-class>
</servlet>

 (2)映射Servlet

<servlet-mapping>
        <servlet-name>添加Servlet的名稱</servlet-name>
        <url-pattern>映射具體訪問URL</url-pattern>
</servlet-mapping>

 3、創建一個簡單的Servlet web 項目

(1)打開eclipse創建Dynamic Web Project項目

File-New-Dynamic Web Project

填寫項目名稱

 點擊Next-Next-勾選Generate web.xml...-點擊Finish

可能出現以下問題:

 將本機的網絡連接禁用,該工程此時即可創建完成,接着再啓用網絡連接。

參考鏈接:https://blog.csdn.net/sadu001/article/details/78851347?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1

 (2)Java Resources src下添加java包

New-Package

填寫包名

 (3)在新建的包下創建Java類

New-Class

在對話框中填寫類名,並繼承HttpServlet類

 最後點擊Finish。

(4)編輯Java類

覆寫service(注意使用"Alt+/")

 添加以下內容:

通過實行javax.servlet.http.HttpServlet抽象類來處理Http請求。

package com.herry.bean;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyServlet extends HttpServlet {
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		resp.getWriter().write("this is my servlet test(test)");
    	System.out.println("this is my servlet test");
	}
}

(5)在web.xml中創建serlvet鏈接器。

web.xml在WEB-INF目錄下,雙擊打開web.xml,進入source模式。

 配置servlet如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
	<!-- 配置servlet -->
	<!-- 配置servlel類路徑 -->
	<servlet>
		<servlet-name>myServlet</servlet-name> <!-- servlet名字自定義 -->
		<servlet-class>com.herry.bean.MyServlet</servlet-class> <!-- servlet類的路徑-->
	</servlet>
	<!-- 配置servlel訪問方式 -->
	<servlet-mapping>
		<servlet-name>myServlet</servlet-name>
		<url-pattern>/myServlet</url-pattern>
	</servlet-mapping>
</web-app>

 

 (6)保存(Ctrl+S)後,查看java文件是否編譯成class文件

查看class文件位置WEB-INF文件下:

 

如果沒有要對eclipse進行如下設置。

             1)查看eclipse 下Project-Bulid Automatically是否勾選,沒有則勾選

              勾選之後,eclipse編輯下沒保存一下自動編譯

             2)如果還是沒有class文件,進行路徑設置

Project-Clean  清除已經編譯的結果

 項目右鍵-Properties-Java Build Path-Source 
將Default output folder設置爲MyServlet/WebContent/WEB-INF/classes,

 之後發現eclipse工作空間下有了class文件

 

 以上參考連接:https://blog.csdn.net/qq_34801169/article/details/80466092

(7)將創建好的web工程的WebContent複製到Tomcat的Webapps

1)進入MyServlet的工作路徑

選擇MyServlet-File-Properties

2)將MyServlet項目的WebContent的所有內容複製到Tomcat的下webapps

選擇以下三個文件:

 在tomcat的安裝路徑下D:\apache-tomcat-9.0.31\webapps新建projecct文件夾,並將以上三個文件複製到該文件夾下

 (9)啓動tomcat

點擊startup.bat

 

(10)測試結果

瀏覽器輸入http://localhost:8080/project/myServlet

 

 

參考:https://www.bilibili.com/video/BV1bb411b7Cq?p=6

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章