servlet前后端交互

前后端交互目錄

  • servlet流程
  • servlet請求
  • JSON格式
  • 實現表格效果
    • 完整代碼

servlet流程

流程圖:
在這里插入圖片描述

  • 客戶端(瀏覽器):
    1. 技術棧:使用 jQuery + Ajax 發起異步請求。
    2. 請求配置: 請求路徑:指定目標Servlet的URL。 請求方法:GET:用于查詢數據,POST:用于增刪改操作。 參數傳遞:鍵值對形式(如{name: “Alice”, age: 25})。
    3. 回調處理: 請求成功:通過success回調接收服務端返回的數據,并更新DOM。 請求失敗:通過error回調處理異常(如網絡錯誤、服務器報錯)。
  • 服務端(Tomcat + Servlet):
    1. 請求接收: Tomcat作為Web容器解析HTTP請求,路由到對應的Servlet。 Servlet通過HttpServletRequest對象:
      獲取參數:request.getParameter(“name”),識別方法:重寫doGet()或doPost()處理對應請求。
    2. 業務邏輯: 執行核心業務(如數據驗證、計算)。 操作數據庫:通過JDBC/連接池執行SQL。
    3. 響應返回: 設置響應類型:response.setContentType(“application/json”)。 通過HttpServletResponse輸出數據:response.getWriter().print(“{“status”:“success”}”)。
  • 數據庫: 接收Servlet的SQL指令,執行增刪改查操作,返回結果集(如查詢數據)或影響行數(如增刪改)。

完整流程示例:

  1. 用戶點擊頁面按鈕觸發jQuery的Ajax POST請求,提交表單數據。
  2. Tomcat將請求轉發至DataServlet.doPost()。
  3. Servlet解析參數,調用Service層插入數據庫。
  4. 數據庫返回插入成功,Servlet生成JSON響應{“code”:200, “msg”:“新增成功”}。
  5. Ajax的success回調解析JSON,提示用戶“操作成功”。

servlet請求

有 url 和 type 就可以發起請求,如圖:

在這里插入圖片描述

url 請求路徑 對應的是后端的服務生,WebContent是項目的根目錄,根目錄下可以直接訪問對應的服務生
get 請求一般用于查找,post 請求一般用于增刪改

下面進行如下操作:

在這里插入圖片描述

參數域:data:{ }
請求當中所有的信息都在 request 中,后端接收參數用到的是 request.getParameter(),接收的參數都是String類型的數據,即使前端傳的是數值型數據也會被轉成String類型

此時可添加判斷賬戶密碼是否正確的操作(其中 equals 表示判斷兩個字符串是否相等,若相等為true):

	if(acc.equals("admin")&&pass.equals("123456")) {System.out.println("登陸成功");}else {System.out.println("登陸失敗");}

后端給前端的返回信息都在 response 中,返回信息用到的是 response.getWriter().write() 方法,返回的信息仍為字符串類型。
請求成功(無論返回時登陸成功還是登陸失敗,只要閉環的執行沒有報錯都是請求成功)的回調函數 success:function(value){ },返回的數據返回到形參value

    success:function(value){console.log(value)},error:function(){alert("出錯啦")}

那么我們來驗證一下:

在這里插入圖片描述

打印的是"ok",沒問題

但是當后端輸入:

response.getWriter().write("登陸成功");

此時輸出:
在這里插入圖片描述

中文不識別出現亂碼,返回信息 response.getWriter().write() 相當于其他程序的return功能,后面就不執行了,所以設置編碼格式需要在此代碼之前,設置返回與接收的編碼格式為 utf-8

        response.setCharacterEncoding("utf-8");request.setCharacterEncoding("utf-8");

JSON格式

再一個問題,當要返回大量信息時,此時該如何輸出呢,若人工分割字符串的話作量太大不現實
我們使用 JSON格式,JSON 是存儲和交換文本信息的語法

當有數據時我們將其寫成JSON格式:

在這里插入圖片描述

但是此時打印出的是字符串
在這里插入圖片描述

那么我們加一行代碼:

response.setContentType("text/json;charset=utf-8");

這樣就會將其按照 JSON 格式解析,打印結果如下:

在這里插入圖片描述

后續可以直接對其進行操作

實現表格效果

代碼截圖如下(后面附有完整代碼):

在這里插入圖片描述

效果:

在這里插入圖片描述

完整代碼

前端完整代碼:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="js/jquery.js"></script>
<script>$(function(){$.ajax({url:"IndexServlet",  //請求路徑type:"get",   //請求方式 get postdata:{account:"admin",password:"123456"},  //參數域success:function(value){console.log(value)for(var i=0;i<value.length;i++){$("tbody").append("<tr>"+"<td>"+value[i].id+"</td>"+"<td>"+value[i].name+"</td>"+"<td>"+value[i].sex+"</td>"+"<td>"+value[i].age+"</td>"+"</tr>")}},  //請求成功的回調函數error:function(){alert("出錯啦")}  //請求失敗的回調函數})})
</script>
</head>
<body><table border="1"><thead><tr><td>id</td><td>name</td><td>sex</td><td>age</td></tr></thead><tbody><!--<tr><td>id</td><td>name</td><td>sex</td><td>age</td></tr> --></tbody></table>
</body>
</html>

后端完整代碼:

package com.qcby.servlet;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** Servlet implementation class IndexServlet*/
@WebServlet("/IndexServlet")
public class IndexServlet extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public IndexServlet() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("get請求收到了");String acc = request.getParameter("account");String pass = request.getParameter("password");if(acc.equals("admin")&&pass.equals("123456")) {System.out.println("登陸成功");}else {System.out.println("登陸失敗");}response.setCharacterEncoding("utf-8");request.setCharacterEncoding("utf-8");response.setContentType("text/json;charset=utf-8");response.getWriter().write("[\r\n" + "    {\r\n" + "        \"id\": 1,\r\n" + "        \"name\": \"李華\",\r\n" + "        \"sex\": \"男\",\r\n" + "        \"age\": 21\r\n" + "    },\r\n" + "    {\r\n" + "        \"id\": 2,\r\n" + "        \"name\": \"小美\",\r\n" + "        \"sex\": \"女\",\r\n" + "        \"age\": 20\r\n" + "    },\r\n" + "    {\r\n" + "        \"id\": 3,\r\n" + "        \"name\": \"小帥\",\r\n" + "        \"sex\": \"男\",\r\n" + "        \"age\": 22\r\n" + "    },\r\n" + "    {\r\n" + "        \"id\": 4,\r\n" + "        \"name\": \"張大\",\r\n" + "        \"sex\": \"男\",\r\n" + "        \"age\": 24\r\n" + "    }\r\n" + "]");}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("post請求收到了");}
}

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

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

相關文章

4. 時間序列預測的自回歸和自動方法(2)

ar_model.AutoReg 模型通過應用以下元素來估計參數 條件最大似然&#xff08;CML&#xff09;估計量&#xff1a;這是一種涉及條件對數似然函數最大化的方法&#xff0c;據此認為已知的參數要么由理論假設固定&#xff0c;要么更常見地由估計值代替&#xff08;LewiseBeck&…

MySQL(84)如何配置MySQL防火墻?

MySQL防火墻&#xff08;MySQL Enterprise Firewall&#xff09;是一種MySQL企業版特性&#xff0c;用于保護數據庫免受SQL注入和其他惡意活動的攻擊。它通過學習和監控合法SQL語句&#xff0c;創建一個允許列表&#xff0c;從而阻止未在列表中的SQL語句。 1. 啟用MySQL防火墻…

優化 Python 爬蟲性能:異步爬取新浪財經大數據

一、同步爬蟲的瓶頸 傳統的同步爬蟲&#xff08;如requestsBeautifulSoup&#xff09;在請求網頁時&#xff0c;必須等待服務器返回響應后才能繼續下一個請求。這種阻塞式I/O操作在面對大量數據時存在以下問題&#xff1a; 速度慢&#xff1a;每個請求必須串行執行&#xff0…

Visual Studio Code (VSCode) Python 開發環境配置完整指南

一、安裝準備 1. 安裝 VSCode 官網下載: Visual Studio Code - Code Editing. Redefined安裝時建議勾選: "添加到PATH" (方便終端調用)"注冊為受支持的文件類型編輯器"2. 安裝 Python 官網下載: Download Python | Python.org安裝時勾選: "Add Pytho…

智能數據標簽引擎:企業級分類分級與動態管控實踐

在數字化轉型浪潮中&#xff0c;企業數據量呈爆發式增長&#xff0c;數據的多樣性和復雜性也不斷提升。如何對海量數據進行高效分類分級&#xff0c;并實施動態管控&#xff0c;成為企業釋放數據價值、保障數據安全的關鍵挑戰。智能數據標簽引擎應運而生&#xff0c;它通過引入…

Redis(1)——RDB持久化

在追求極致性能的 Redis 世界里&#xff0c;數據安全是永恒的主題。作為內存數據庫&#xff0c;Redis 重啟或宕機意味著數據丟失的風險。RDB (Redis Database) 持久化&#xff0c;又稱快照持久化&#xff0c;是 Redis 提供的最經典、最高效的數據落地方案之一。它通過生成某個時…

深度剖析無感刷新Token:領碼SPARK平臺賦能微服務認證的智能實踐

摘要 在現代微服務架構與數字化轉型大潮中&#xff0c;用戶身份認證的連續性與安全性尤為關鍵。無感刷新Token技術通過智能的雙Token機制&#xff0c;確保用戶訪問憑證在不打擾用戶的前提下自動續期&#xff0c;避免因Token過期導致的頻繁登錄中斷。本文結合領碼SPARK融合平臺的…

聲網對話式 AI:開啟我的編程進階之旅

轉行學習編程時&#xff0c;復雜的代碼邏輯常讓我無從下手&#xff0c;直到遇見聲網對話式AI。它像一位耐心的導師&#xff0c;不僅用通俗易懂的語言幫我理解Python循環嵌套等難點&#xff0c;還提供實際代碼示例。當我開發學生成績管理系統時&#xff0c;它甚至直接生成框架代…

精準護理,點亮進行性核上性麻痹患者生活希望

進行性核上性麻痹&#xff08;PSP&#xff09;是一種罕見的神經系統變性疾病&#xff0c;主要表現為姿勢平衡障礙、眼球運動障礙、吞咽困難等癥狀。科學的健康護理能有效延緩病情進展&#xff0c;提升患者生活質量&#xff0c;可從以下方面著手。 ?在飲食護理上&#xff0c;因…

記錄一次 Oracle 表空間不足問題的解決過程

記錄一次 Oracle 表空間不足問題的解決過程 6月14日&#xff0c;某醫院信息科用戶反映無法提交門診病例&#xff0c;門診處方也無法開立。其他功能是正常的。考慮可能是與門診病例有關的表空間用完了。 Oracle表空間的數據文件默認是可以自動增長的&#xff0c;但是單個文件的…

2024 年 11 月公鏈行業研報:比特幣創歷史新高引領市場全面上漲

比特幣屢創歷史新高&#xff0c;主導市場全面上漲&#xff0c;同時 Layer 1 表現強勁&#xff0c;而 Layer 2 格局持續演變。 2024 年 11 月公鏈研報 作者&#xff1a;Stella L (stellafootprint.network) 數據來源&#xff1a;Footprint Analytics 公鏈研究頁面 2024 年 11…

MAX4622ESE+T雙5Ω模擬開關在低失真音頻路由中的實測:0.5Ω匹配度如何改善THD性能

一、產品概述&#xff1a;精密信號切換的硬件基石 MAX4622ESET是一款雙通道SPDT&#xff08;單刀雙擲&#xff09;模擬開關&#xff0c;采用5Ω超低導通電阻設計&#xff08;典型值3Ω&#xff09;&#xff0c;專為高精度信號路由場景優化。其核心價值在于通過單片CMOS架構實現…

高并發秒殺系統(Redis分布式鎖優化與庫存防超賣實戰)

本文通過日活百萬級的電商秒殺案例&#xff0c;深度剖析分庫分表路由算法在高并發場景下的落地實踐。結合Redis分布式鎖的優化方案解決庫存超賣問題&#xff0c;包含完整架構設計、代碼實現及壓測數據對比。全文包含12個核心代碼片段和8類技術圖表&#xff0c;來自線上生產環境…

從loader和plugin開始了解webpack

目錄 一、webpack中loader和plugin的區別1. Loader&#xff08;每個 Loader 是一個函數或對象&#xff09;2.plugin&#xff08;每個 Plugin 是一個實例&#xff09;3.自定義loader和plugin 二、Babel的功能三、Plugin中的compiler和compilation對象1. compiler對象2. compilat…

36-Oracle Statistics Gathering(統計信息收集)

小伙伴們&#xff0c;有沒有因為統計信息不準&#xff0c;導致了業務卡頓&#xff0c;各種狀況頻出&#xff0c;這幾天在實踐和實操的過程中&#xff0c;時不時就需要進行統計信息的收集。同時統計信息收集的動作也是OCM必考內容。 數據庫中的數據是地圖&#xff0c;統計信息是…

Linux驅動程序(PWM接口)與超聲波測距

一、利用阿里云服務器實現樹莓派外網訪問&#xff08;SSH 反向代理&#xff09; 1. 樹莓派端配置 步驟 1&#xff1a;安裝 SSH 服務&#xff08;若未安裝&#xff09; sudo apt-get install openssh-server 步驟 2&#xff1a;創建反向代理連接 -p 22&#xff1a;指定阿里…

Web攻防-XSS跨站文件類型功能邏輯SVGPDFSWFHTMLXMLPMessageLocalStorage

知識點&#xff1a; 1、Web攻防-XSS跨站-文件類型-html&pdf&swf&svg&xml 2、Web攻防-XSS跨站-功能邏輯-postMessage&localStorage 一、演示案例-WEB攻防-XSS跨站-文件類型觸發XSS-SVG&PDF&SWF&HTML&XML等 1、SVG-XSS SVG(Scalable Vect…

強大模型通過自我和解進步——Unsupervised Elicitation of Language Models——論文閱讀筆記

本周關注的工作是&#xff1a;Unsupervised Elicitation of Language Models 這篇文章通篇體現了這樣一件事——香蕉皮大需要香蕉大&#xff01; 一句話總結 首先注意&#xff1a;這個工作不是面向對齊的&#xff0c;而是寫【如何準備】對齊任務的Reward Model需要的數據集的…

Qt—(Qt初識,槽,信號,事件)

一 Qt初識 暫時不寫了 我的理解是類似于c#&#xff0c;是一個組件庫&#xff0c;不局限是一個組件框架。 二 Qt Core Qt Core 是 Qt 框架的基礎模塊&#xff0c;提供非 GUI 的核心功能&#xff1a; 核心類&#xff1a;QObject&#xff08;信號槽機制&#xff09;、QEvent&…

深度學習——基于卷積神經網絡實現食物圖像分類【2】(數據增強)

文章目錄 引言一、項目概述二、環境準備三、數據預處理3.1 數據增強與標準化3.2 數據集準備 四、自定義數據集類五、構建CNN模型六、訓練與評估6.1 訓練函數6.2 評估函數6.3 訓練流程 七、關鍵技術與優化八、常見問題與解決九、完整代碼十、總結 引言 本文將詳細介紹如何使用P…