day13-Servlet03

来源:https://www.cnblogs.com/liyuelian/archive/2022/11/08/16871376.html
-Advertisement-
Play Games

Servlet03 11.練習 快捷鍵-可以快速地在訪問的文件件切換 ctrl+alt+向左箭頭:回到上次訪問的位置 ctrl+alt+向右箭頭:回到下一步訪問的位置 11.1CatServlet 首先創建項目servlet,配置好Tomcat,添加web應用支持。在web目錄下麵的WEB-INF目 ...


Servlet03

11.練習

快捷鍵-可以快速地在訪問的文件件切換

ctrl+alt+向左箭頭:回到上次訪問的位置

ctrl+alt+向右箭頭:回到下一步訪問的位置

11.1CatServlet

image-20221108190559392

首先創建項目servlet,配置好Tomcat,添加web應用支持。在web目錄下麵的WEB-INF目錄下創建lib目錄,在Tomcat安裝包的lib目錄中找到servlet-api,並添加到idea的web目錄下麵的WEB-INF/lib目錄,選擇引用為庫文件

image-20221108192728344

在src目錄下創建目錄,編寫CatServlet類:

package servlet;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;

public class CatServlet implements Servlet {
    public int count = 0;

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        count++;//每次訪問service方法,count累加
        System.out.println("該servlet訪問次數=" + count);
        //獲取請求的方式
        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
        String method = httpServletRequest.getMethod();
        if (method.equals("GET")) {
            doGet();
        } else if (method.equals("POST")) {
            doPost();
        }
    }

    public void doGet() {
        System.out.println("CatServlet doGet()...");
    }

    public void doPost() {
        System.out.println("CatServlet doPost()...");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

在web.xml文件中進行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>CatServlet</servlet-name>
        <servlet-class>servlet.CatServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>CatServlet</servlet-name>
        <url-pattern>/cat</url-pattern>
    </servlet-mapping>
</web-app>

在WEB-INF目錄下編寫一個html,用於測試

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login</title>
</head>
<body>
<form action="http://localhost:8080/servlet/cat" method="get">
    name: <input type="text"/><br/><br/>
    <input type="submit" value="login"/>
</form>
</body>
</html>

點擊啟動Tomcat,在瀏覽器中輸入地址:http://localhost:8080/servlet/login.html

點擊login按鈕,成功跳轉到CatServlet中:

image-20221108194726469 image-20221108194829360

後臺輸出:(如果表單方式改變了,仍然調用的是舊的訪問方法,點擊保存html,並刷新瀏覽器頁面即可解決)

image-20221108194942684

11.2DogServlet

image-20221108213658244

在11.1的項目框架上進行編程

首先在src目錄下創建DogServlet類

package servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class DogServlet extends HttpServlet {
    private int getCount = 0;
    private int postCount = 0;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        getCount++;
        System.out.println("getCount=" + getCount);
        System.out.println("DogServlet-訪問doGet()");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        postCount++;
        System.out.println("postCount=" + postCount);
        System.out.println("DogServlet-訪問doPost()");
    }
}

註意:這裡沒有重寫service方法,因此當瀏覽器請求DogServlet時,會去父類HttpServlet類中去找調用的service方法,在HttpServlet類中的service方法會根據請求類型如get、post去調用當前運行類型(即DogServlet)的doPost、doGet方法,因此在自己創建的Servlet中不用判斷請求方式

在web.xml文件中配置該Servlet:

<servlet>
    <servlet-name>DogServlet</servlet-name>
    <servlet-class>servlet.DogServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>DogServlet</servlet-name>
    <url-pattern>/dog</url-pattern>
</servlet-mapping>

修改之前的login.html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login</title>
</head>
<body>
<form action="http://localhost:8080/servlet/dog" method="post">
    name: <input type="text"/><br/><br/>
    <input type="submit" value="login"/>
</form>
</body>
</html>

點擊redeploy Tomcat,在瀏覽器輸入地址http://localhost:8080/servlet/login.html,點擊login按鈕,成功跳轉到DogServlet

image-20221108201510215 image-20221108201533054

將login.html文件中表單提交方式反覆該為post或者get,多次訪問,後臺輸出如下:

(如果表單方式改變了,仍然調用的是舊的訪問方法,點擊保存html,並刷新瀏覽器頁面即可解決)

image-20221108202231558

11.3PigServlet

image-20221108214752042

在11.1的項目框架上進行編程

在src目錄下編寫PigServlet

package servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(urlPatterns = {"/pig1", "/pig2"},loadOnStartup = 1)
public class PigServlet extends HttpServlet {
    private int getCount = 0;
    private int postCount = 0;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        getCount++;
        System.out.println("PigServlet-訪問doGet()-get訪問次數=" + getCount);
        System.out.println("客戶端地址="+req.getRemoteAddr());
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        postCount++;
        System.out.println("PigServlet-訪問doPost()-post訪問次數=" + postCount);
        System.out.println("客戶端地址="+req.getRemoteAddr());
    }
}

修改login.html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login</title>
</head>
<body>
<form action="http://localhost:8080/servlet/pig1" method="get">
    name: <input type="text"/><br/><br/>
    <input type="submit" value="login"/>
</form>
</body>
</html>

點擊redeploy Tomcat,在瀏覽器輸入地址http://localhost:8080/servlet/login.html,點擊login按鈕,成功跳轉到PigServlet

將login.html文件中表單提交方式反覆改為post或者get,多次訪問,後臺輸出如下:

(如果表單方式改變了,仍然調用的是舊的訪問方法,點擊保存html,並刷新瀏覽器頁面即可解決)

image-20221108204256119

11.4瀏覽器訪問過程

image-20221108191355809 image-20221108210447036
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文主要記錄 Vue.js 中的 router 管理,涉及如何使用路由實現單頁面應用(SPA)的組件切換,以及路由的一些 API 操作。 ...
  • 1、表單語法 method: 規定如何發送表單數據常用值:get post 在實際網頁開發中通常採用post方式提交表單數據 action: 表示向何處發送表單數據 <form method="post" action="result.html"> <p>名字:<input name="name" ...
  • 1、列表 無序列表和定義列表在網頁製作中應用非常廣泛 什麼是列表: 列表就是信息資源的一種展示形式。它可以使信息結構化和條理化,並以列表的樣式顯示出來,以便瀏覽者能更快捷地獲得相應的信息。 無序列表 <!--ul 聲明無序列表--> <ul> <!--li 聲明列表項--> <li>語文</li> ...
  • 面向對象之魔法方法 一、魔法方法的概念 ​ 定義在類中的雙下方法都可以稱為魔法方法 ​ 不需要人為調用,在特定的條件下會自動觸發,並運行 ​ 類似於__ init__, 當我在使用類產生對象時,會自動觸發 class Foo: # 雙下init就是魔法方法的一種 def __init__(self, ...
  • 職責鏈模式是一種與策略模式類似的設計模式,都是使用多個對象去處理同一個請求。不同的是,職責鏈模式針對的一條鏈路上的所有對象,而不是“非此即彼”的關係。 ...
  • 派生方法實戰 ​ 以上我們學習了通過super()的方法可以重寫父類、額外添加父類中的數據,下麵將通過實戰案例來講述super()方法來重寫、添加父類中的功能代碼 需求: 1、使用json格式,序列化字典d d = { 't1': datetime.date.today(), 't2': datet ...
  • 簡介: 代理模式,是結構型的設計模式。用於為其它對象提供一種代理以控制對這個對象的訪問。 目標對象可以是遠程的對象、創建開銷大的對象或需要安全控制的對象,並且可以在不改變目標對象的情況下添加一些額外的功能。 適用場景: 調用端不想或不能直接調用的對象。 服務端不想讓調用端看到核心實現。 優點: 服務 ...
  • 前言 大家早好、午好、晚好吖~ 最近,又爆出了許多例,身在長沙得我前段時間不是在做核酸就是在做核酸得路上 雖然現在還是隔一天一捅(小聲嗶嗶:我真的遭不住)希望疫情早日過去 疫情尚未結束,我們需要做好自己,時刻防範,不給別人添麻煩。 今天我們來嘗試用Python抓取世界疫情,實現可視化地圖展示。 採集 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...