日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

JavaWeb 入门篇(2)Hello Servlet!!!

發布時間:2025/3/19 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaWeb 入门篇(2)Hello Servlet!!! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Servlet 概述

  • serlvet sun公司 開發動態web 的一門技術。

  • Servlet(Server Applet)是Java Servlet的簡稱,稱為小服務程序或服務連接器,用Java編寫的服務器端程序,具有獨立于平臺和協議的特性,主要功能在于交互式地瀏覽和生成數據,生成動態Web內容。

  • 廣義的Servlet是指任何實現了這個Servlet接口的類,。Servlet運行于支持Java的應用服務器中。從原理上講,Servlet可以響應任何類型的請求,但絕大多數情況下Servlet只用來擴展基于HTTP協議的Web服務器。

  • sun公司在api 中提供了一個接口 如果我們想要開發一個servlet程序 我們只需要做到兩點

    1、寫一個普通類實現servlet 這個接口

    2、把寫好的servlet 放進服務器。

    sun公司給出了兩個默認的實現類 HttpServlet 和 GenericServlet

Hello Servlet

工程結構

1、創建一個maven 項目 添加web框架(將web.xml 換成最新的4.0 后面有完整配置文件) 配置tomcat

2、導入依賴

<dependencies><!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jsp-api</artifactId><version>2.0</version></dependency></dependencies>

3、編寫一個Servlet程序 編寫一個普通類實現HttpServlet接口

import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter;/*** @author crush* idea 提示快捷鍵 alt + enter* 重寫快捷鍵 是 ctrl + o*/ public class HelloServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {PrintWriter writer = resp.getWriter();writer.print("hello Servlet");System.out.println("");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

4、編寫Servlet 的映射

為什么需要映射?我們是不是需要通過瀏覽器去訪問,而瀏覽器需要連接web服務器,需要在web 服務器注冊我們寫的servlet,還需要給它一個瀏覽器能夠訪問的路徑。

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><servlet><servlet-name>hello</servlet-name><servlet-class>com.crush.servlet.HelloServlet</servlet-class></servlet><servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/hello</url-pattern></servlet-mapping> </web-app>

測試:

Servlet的運行過程

Servlet程序是由Web服務器調用的,Web服務器收到客戶端的Servlet訪問請求后:

  • ①Web服務器首先檢查是否已經裝載并創建了該Servlet的實例對象。如果是,則直接執行第④步,否則,執行第②步;
  • ②裝載并創建該Servlet的一個實例對象;
  • ③調用Servlet實例對象的init()方法;
  • ④創建一個用于封裝HTTP請求消息的HttpServletRequest對象和一個代表HTTP響應消息的HttpServletResponse對象,然后調用Servlet的service()方法并將請求和響應對象作為參數傳遞進去;
  • ⑤Web應用程序被停止或重新啟動之前,Servlet引擎將卸載Servlet,并在卸載之前調用Servlet的destroy()方法。

動圖來源于:https://www.cnblogs.com/yunlongn/p/10756573.html

5、Mapping 問題:

1、一個Servlet 可以指定一個映射路徑

<servlet><servlet-name>hello</servlet-name><servlet-class>com.crush.servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/hello</url-pattern> </servlet-mapping>

2、一個Servlet 可以指定多個映射路徑

<servlet><servlet-name>hello</servlet-name><servlet-class>com.crush.servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/hello</url-pattern> </servlet-mapping> <servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/hello2</url-pattern> </servlet-mapping>

3、一個Servlet 可以指定通用映射路徑

<servlet><servlet-name>hello</servlet-name><servlet-class>com.crush.servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/hello.*</url-pattern> </servlet-mapping>

4、默認請求路徑

<servlet><servlet-name>helloServlet</servlet-name><servlet-class>com.crush.servlet.HelloServletDays</servlet-class> </servlet> <servlet-mapping><servlet-name>helloServlet</servlet-name><url-pattern>/*</url-pattern> </servlet-mapping>

5、可以指定一些前綴或者后綴

<servlet><servlet-name>helloServlet</servlet-name><servlet-class>com.crush.servlet.HelloServletDays</servlet-class> </servlet> <servlet-mapping><servlet-name>helloServlet</servlet-name><url-pattern>*.crush</url-pattern> </servlet-mapping>

6、優先級問題
指定固定的映射路徑優先級最高,如果找不到就會走默認的處理請求。

模擬指定error 頁面

1、寫一個ErrorServlet 類

import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter;/*** @Author: crush* @Date: 2021-05-07 23:03* version 1.0*/ public class ErrorServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {PrintWriter writer = resp.getWriter();writer.print("404");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

2、配置映射路徑

<servlet><servlet-name>error</servlet-name><servlet-class>com.crush.servlet.ErrorServlet</servlet-class> </servlet> <servlet-mapping><servlet-name>error</servlet-name><url-pattern>/*</url-pattern> </servlet-mapping>

測試:訪問不存在的路徑 會直接到訪問我們自己寫的ErrorServlet 訪問其他的具體的路徑仍然不變

自言自語

把自己掌握的知識,傳授給另外一個人,這個度真的很難把握,太簡單了,沒有意義,太難了,聽著乏味。
🚹 我🤦?♂?

總結

以上是生活随笔為你收集整理的JavaWeb 入门篇(2)Hello Servlet!!!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。