實驗十一 Servlet(二)

實驗十一 Servlet(二)

【實驗目的】
1.了解Servlet運行原理
2.掌握Servlet實現方式

【實驗內容】
改造實驗10,引入數據庫,創建用戶表,包括用戶名和密碼:客戶端通過login.jsp發出登錄請求,請求提交到loginServlet處理。如果用戶名和密碼跟用戶表匹配則視為登錄成功,跳轉到loginSuccess.jsp頁面,顯示“歡迎你”+用戶名;否則跳轉到loginFail.jsp頁面,顯示“登錄失敗”,通過超鏈接返回login.jsp。
說明:把用戶名和密碼跟用戶表匹配的功能放到loginServlet并實現相應請求轉發或跳轉即可。可以暫時不考慮創建其它java類。
login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<form action="loginServlet" method="post"><label for="username">用戶名:</label><input type="text" id="username" name="username" required><br><label for="password">密碼:</label><input type="password" id="password" name="password" required><input type="submit" value="登陸">
</form>
</body>
</html>

loginServlet

package servlet;import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;import java.io.*;
import java.sql.*;
//使用@WebServlet注解
@WebServlet(name = "loginServlet" )
public class loginServlet extends HttpServlet {private static final String url = "jdbc:mysql://localhost:3306/test9";protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//從請求中獲取用戶名(stuId)和密碼(stuPwd)String stuId = request.getParameter("username");String stuPwd = request.getParameter("password");try {// 加載和注冊JDBC驅動Class.forName("com.mysql.jdbc.Driver");Connection conn = DriverManager.getConnection(url, "root", "123456");String sql = "select * from password where stuId = ? and stuPwd = ?";//創建PreparedStatement對象,這有助于防止SQL注入攻擊PreparedStatement stmt = conn.prepareStatement(sql);//使用setString方法設置SQL查詢中的參數值stmt.setString(1,stuId);stmt.setString(2,stuPwd);ResultSet rs = stmt.executeQuery();if (rs.next()) {//從結果集中獲取用戶名String stuname = rs.getString("stuId");//將用戶名保存到會話中HttpSession session = request.getSession();session.setAttribute("username",stuname);//重定向到loginSuccess.jsp頁面response.sendRedirect("loginSuccess.jsp");} else {//重定向到loginFail.jsp頁面response.sendRedirect("loginFail.jsp");}rs.close();stmt.close();conn.close();} catch (SQLException se) {se.printStackTrace();} catch (Exception e) {e.printStackTrace();}}
}

loginSuccess.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>登陸成功</title>
</head>
<body><h4>歡迎你,${sessionScope.username}</h4>
</body>
</html>

loginFail.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>登陸失敗</title>
</head>
<body><h4>登錄失敗</h4><a href="login.jsp">返回登陸頁面</a>
</body>
</html>

結果:
登錄成功:
在這里插入圖片描述
在這里插入圖片描述

登錄失敗:
在這里插入圖片描述
在這里插入圖片描述

[實驗心得]
通過本次Servlet實驗,理解了Servlet的運行原理。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/894558.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/894558.shtml
英文地址,請注明出處:http://en.pswp.cn/news/894558.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

服務SDK三方新版中央倉庫和私服發布詳解

預備信息Github倉庫發布Gradle版本匹配Gradle項目構建全局變量定義Gradle項目Nexus倉庫配置與發布過程Gradle項目發布至Sonatype中央倉庫配置過程總結當我們在實現一個項目技術總結、工具類封裝或SDK封裝,通常是為了方便開發者使用特定服務或平臺而提供的一組工具和API。您可能…

git 新項目

新項目git 新建的項目如何進行git 配置git git config --global user.name "cc" git config --global user.email ccexample.com配置遠程倉庫路徑 // 添加 git remote add origin http://gogs/cc/mc.git //如果配錯了&#xff0c;刪除 git remote remove origin初…

openmv的端口被拆分為兩個 導致電腦無法訪問openmv文件系統解決辦法 openmv USB功能改動 openmv驅動被更改如何修復

我之前誤打誤撞遇到一次&#xff0c;直接把openmv的全部端口刪除卸載然后重新插上就會自動重新裝上一個openmv端口修復成功&#xff0c;大家可以先試試不行再用下面的方法 全部卸載再重新插拔openmv 要解決OpenMV IDE中出現的兩個端口問題&#xff0c;可以嘗試以下步驟&#x…

利用Python高效處理大規模詞匯數據

在本篇博客中&#xff0c;我們將探討如何使用Python及其強大的庫來處理和分析大規模的詞匯數據。我們將介紹如何從多個.pkl文件中讀取數據&#xff0c;并應用一系列算法來篩選和擴展一個核心詞匯列表。這個過程涉及到使用Pandas、Polars以及tqdm等庫來實現高效的數據處理。 引…

LabVIEW雙光子成像系統:自主創新,精準成像,賦能科研

雙光子成像系統&#xff1a;自主創新&#xff0c;精準成像&#xff0c;賦能科研 第一部分&#xff1a;概述 雙光子成像利用兩個低能量光子同時激發熒光分子&#xff0c;具有深層穿透、高分辨率、低光損傷等優勢。它能實現活體深層組織的成像&#xff0c;支持實時動態觀察&…

Deepseek-R1 和 OpenAI o1 這樣的推理模型普遍存在“思考不足”的問題

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎&#xff1f;訂閱我們的簡報&#xff0c;深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同&#xff0c;從行業內部的深度分析和實用指南中受益。不要錯過這個機會&#xff0c;成為AI領…

Vue3學習筆記-Vue開發前準備-1

一、安裝15.0或更高版本的Node.js node -v npm -v 二、創建Vue項目 npm init vuelatest 三、Vue項目結構 node_modules: Vue項目運行的依賴文件public&#xff1a;資源文件夾package.json&#xff1a;信息描述文件

Denavit-Hartenberg DH MDH坐標系

Denavit-Hartenberg坐標系及其規則詳解 6軸協作機器人的MDH模型詳細圖_6軸mdh-CSDN博客 N軸機械臂的MDH正向建模&#xff0c;及python算法_mdh建模-CSDN博客 運動學3-----正向運動學 | 魚香ROS 機器人學&#xff1a;MDH建模 - 哆啦美 - 博客園 機械臂學習——標準DH法和改進MDH…

自然語言生成(NLG)算法模型評估方案的硬件配置、系統架構設計、軟件技術棧、實現流程和關鍵代碼

智能化對話中的自然語言生成&#xff08;NLG&#xff09;算法模型評估是一個復雜而多維的過程&#xff0c;它涉及多個評估指標和策略&#xff0c;以確保生成的文本質量、準確性和流暢性。 智能化對話中的NLG算法模型評估是一個涉及多個評估指標和策略的過程。通過選擇合適的評估…

排序算法--基數排序

核心思想是按位排序&#xff08;低位到高位&#xff09;。適用于定長的整數或字符串&#xff0c;如例如&#xff1a;手機號、身份證號排序。按數據的每一位從低位到高位&#xff08;或相反&#xff09;依次排序&#xff0c;每次排序使用穩定的算法&#xff08;如計數排序&#…

數據結構:時間復雜度

文章目錄 為什么需要時間復雜度分析&#xff1f;一、大O表示法&#xff1a;復雜度的語言1.1 什么是大O&#xff1f;1.2 常見復雜度速查表 二、實戰分析&#xff1a;解剖C語言代碼2.1 循環結構的三重境界單層循環&#xff1a;線性時間雙重循環&#xff1a;平方時間動態邊界循環&…

S4 HANA明確稅金匯差科目(OBYY)

本文主要介紹在S4 HANA OP中明確稅金匯差科目(OBYY)相關設置。具體請參照如下內容&#xff1a; 1. 明確稅金匯差科目(OBYY) 以上配置點定義了在外幣掛賬時&#xff0c;當憑證抬頭匯率和稅金行項目匯率不一致時&#xff0c;造成的差異金額進入哪個科目。此類情況只發生在FB60/F…

hypermesh中用tcl腳本生成多個線段

hypermesh中原本有利用多個節點生成線段的功能&#xff0c;但實際應用中不太好用&#xff0c;因為hypermesh會自動對線段進行擬合。如果手動生成多個線段&#xff0c;又太繁瑣&#xff0c;這里寫了一段腳本來自動生成&#xff08;#為注釋符號&#xff09;。 set alist {} for …

87.(3)攻防世界 web simple_php

之前做過&#xff0c;回顧 12&#xff0c;攻防世界simple_php-CSDN博客 進入靶場 <?php // 顯示當前 PHP 文件的源代碼&#xff0c;方便調試或查看代碼結構 // __FILE__ 是 PHP 的一個魔術常量&#xff0c;代表當前文件的完整路徑和文件名 show_source(__FILE__);// 包含…

pycharm 中的 Mark Directory As 的作用是什么?

文章目錄 Mark Directory As 的作用PYTHONPATH 是什么PYTHONPATH 作用注意事項 Mark Directory As 的作用 可以查看官網&#xff1a;https://www.jetbrains.com/help/pycharm/project-structure-dialog.html#-9p9rve_3 我們這里以 Mark Directory As Sources 為例進行介紹。 這…

一個類有一個全局變量 m,多線程對它進行增加操作,如何保證線程安全?

一個類有一個全局變量 m&#xff0c;多線程對它進行增加操作&#xff0c;如何保證線程安全&#xff1f; 在多線程環境下對共享變量進行修改時&#xff0c;確保線程安全的關鍵是保證操作的原子性、可見性和有序性。以下是針對全局變量 m 的多線程自增操作的線程安全解決方案&am…

CSS關系選擇器詳解

CSS關系選擇器詳解 學習前提什么是關系選擇器&#xff1f;后代選擇器&#xff08;Descendant Combinator&#xff09;語法示例注意事項 子代選擇器&#xff08;Child Combinator&#xff09;語法示例注意事項 鄰接兄弟選擇器&#xff08;Adjacent Sibling Combinator&#xff0…

【基于SprintBoot+Mybatis+Mysql】電腦商城項目之用戶注冊

&#x1f9f8;安清h&#xff1a;個人主頁 &#x1f3a5;個人專欄&#xff1a;【計算機網絡】【Mybatis篇】 &#x1f6a6;作者簡介&#xff1a;一個有趣愛睡覺的intp&#xff0c;期待和更多人分享自己所學知識的真誠大學生。 目錄 &#x1f3af;項目基本介紹 &#x1f6a6;項…

Microsoft Power BI:融合 AI 的文本分析

Microsoft Power BI 是微軟推出的一款功能強大的商業智能工具&#xff0c;旨在幫助用戶從各種數據源中提取、分析和可視化數據&#xff0c;以支持業務決策和洞察。以下是關于 Power BI 的深度介紹&#xff1a; 1. 核心功能與特點 Power BI 提供了全面的數據分析和可視化功能&…

電控三周速成計劃參考

第1周&#xff1a;基礎搭建與GPIO控制 學習目標&#xff1a;建立開發環境&#xff0c;掌握最基礎的硬件控制能力 每日學習&#xff08;2-3小時&#xff09;&#xff1a; 環境搭建&#xff08;2天&#xff09; 安裝Keil MDK-ARM STM32CubeMX使用CubeMX創建第一個工程&#xf…