淺談Java之AJAX

一、基本介紹

在Java開發中,AJAX(Asynchronous JavaScript and XML)是一種用于創建動態網頁的技術,它允許網頁在不重新加載整個頁面的情況下與服務器進行交互。

二、關鍵點和示例

1.?AJAX的基本原理

AJAX通過JavaScript的XMLHttpRequest對象或現代的fetch API與服務器進行異步通信。它允許網頁在后臺與服務器交換數據,并根據返回的數據更新頁面的局部內容。

2.?Java后端與AJAX的結合

在Java Web開發中,通常使用Servlet、Spring MVC或其他框架來處理AJAX請求。以下是兩種常見的實現方式:

2.1 使用Servlet處理AJAX請求

Servlet是Java Web開發的基礎,可以用來處理HTTP請求。

示例代碼:

1、前端HTML和JavaScript代碼:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>AJAX Example</title><script>function fetchData() {var xhr = new XMLHttpRequest();xhr.open("GET", "MyServlet", true); // 請求Servletxhr.onreadystatechange = function () {if (xhr.readyState == 4 && xhr.status == 200) {document.getElementById("result").innerHTML = xhr.responseText;}};xhr.send();}</script>
</head>
<body><button onclick="fetchData()">Fetch Data</button><div id="result"></div>
</body>
</html>

2、Java 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;@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html");response.getWriter().write("<h1>Hello from Servlet</h1>");}
}

2.2 使用Spring MVC處理AJAX請求

Spring MVC是更現代的Java Web開發框架,支持注解和更簡潔的開發方式。

示例代碼:

1、前端HTML和JavaScript代碼:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>AJAX Example</title><script>function fetchData() {fetch('/getData').then(response => response.text()).then(data => {document.getElementById("result").innerHTML = data;});}</script>
</head>
<body><button onclick="fetchData()">Fetch Data</button><div id="result"></div>
</body>
</html>

2、Spring MVC Controller代碼:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;@Controller
public class MyController {@GetMapping("/getData")public String getData() {return "<h1>Hello from Spring MVC</h1>";}
}

3.?處理JSON數據

在實際開發中,通常使用JSON作為數據交換格式。Java后端可以使用Jackson或Gson庫來處理JSON數據。

示例:

1、前端JavaScript代碼:

function fetchData() {fetch('/getData').then(response => response.json()).then(data => {document.getElementById("result").innerHTML = `Name: ${data.name}, Age: ${data.age}`;});
}

2、Spring MVC Controller代碼:

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class MyController {@GetMapping("/getData")public User getData() {return new User("John Doe", 30);}
}class User {private String name;private int age;public User(String name, int age) {this.name = name;this.age = age;}// Getters and Setters
}

4.?總結

  • 前端:使用JavaScript的XMLHttpRequestfetch API發起異步請求。

  • 后端:使用Servlet或Spring MVC等框架處理請求,并返回數據(可以是HTML、JSON等格式)。

  • 數據交換格式:JSON是常用的數據交換格式,因為它輕量且易于解析。

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

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

相關文章

AutoSar架構學習筆記

1.AUTOSAR&#xff08;Automotive Open System Architecture&#xff0c;汽車開放系統架構&#xff09;是一個針對汽車行業的軟件架構標準&#xff0c;旨在提升汽車電子系統的模塊化、可擴展性、可重用性和互操作性。AUTOSAR的目標是為汽車電子控制單元&#xff08;ECU&#xf…

算法競賽之差分進階——等差數列差分 python

目錄 前置知識進入正題實戰演練 前置知識 給定區間 [ l, r ]&#xff0c;讓我們把數組中的[ l, r ] 區間中的每一個數加上c,即 a[ l ] c , a[ l 1 ] c , a[ l 2] c , a[ r ] c; 怎么做&#xff1f;很簡單&#xff0c;差分一下即可 還不會的小伙伴點此進入學習 進入正題 …

TDengine 做 Apache SuperSet 數據源

?Apache Superset? 是一個現代的企業級商業智能&#xff08;BI&#xff09;Web 應用程序&#xff0c;主要用于數據探索和可視化。它由 Apache 軟件基金會支持&#xff0c;是一個開源項目&#xff0c;它擁有活躍的社區和豐富的生態系統。Apache Superset 提供了直觀的用戶界面…

金融場景 PB 級大規模日志平臺:中信銀行信用卡中心從 Elasticsearch 到 Apache Doris 的先進實踐

導讀&#xff1a;中信銀行信用卡中心每日新增日志數據 140 億條&#xff08;80TB&#xff09;&#xff0c;全量歸檔日志量超 40PB&#xff0c;早期基于 Elasticsearch 構建的日志云平臺&#xff0c;面臨存儲成本高、實時寫入性能差、文本檢索慢以及日志分析能力不足等問題。因此…

虛幻商城 Fab 免費資產自動化入庫

文章目錄 一、背景二、實現效果展示三、實現自動化入庫一、背景 上一次寫了個這篇文章 虛幻商城 Quixel 免費資產一鍵入庫,根據這個構想,便決定將范圍擴大,使 Fab 商城的所有的免費資產自動化入庫,是所有!所有! 上一篇文章是根據下圖這部分資產一鍵入庫: 而這篇文章則…

游戲為什么失敗?回顧某平庸游戲

1、上周玩了一個老鼠為主角的游戲&#xff0c;某平臺喜1送的&#xff0c; 下載了很久而一直沒空玩&#xff0c;大約1G&#xff0c;為了清硬盤空間而玩。 也是為了拔掉心中的一根刺&#xff0c;下載了而老是不玩總感覺不舒服。 2、老鼠造型比較寫實&#xff0c;看上去就有些討…

親測有效!如何快速實現 PostgreSQL 數據遷移到 時序數據庫TDengine

小T導讀&#xff1a;本篇文章是“2024&#xff0c;我想和 TDengine 談談”征文活動的優秀投稿之一&#xff0c;作者從數據庫運維的角度出發&#xff0c;分享了利用 TDengine Cloud 提供的遷移工具&#xff0c;從 PostgreSQL 數據庫到 TDengine 進行數據遷移的完整實踐過程。文章…

C#,入門教程(01)—— Visual Studio 2022 免費安裝的詳細圖文與動畫教程

通過本課程的學習&#xff0c;你可以掌握C#編程的重點&#xff0c;享受編程的樂趣。 在本課程之前&#xff0c;你無需具備任何C#的基礎知識&#xff0c;只要能操作電腦即可。 不過&#xff0c;希望你的數學不是體育老師教的。好的程序是數理化的實現與模擬。沒有較好的數學基礎…

Linux探秘坊-------3.開發工具詳解(2)

1.動靜態庫和動靜態鏈接&#xff08;操作&#xff09; 靜態庫是指編譯鏈接時,把庫?件的代碼全部加?到可執??件中,因此?成的?件 ?較?,但在運?時也就不再需要庫?件了。其后綴名?般為“.a” 動態庫與之相反,在編譯鏈接時并 沒有把庫?件的代碼加?到可執??件中 ,?…

電腦開機出現Bitlock怎么辦

目錄 1.前言 2.產生原因&#xff1a; 1.系統異常關機 2.系統更新錯誤 3.硬件更換 4.CMOS電池問題 5.出廠設置 6.意外情況 3.解鎖步驟&#xff1a; 3.1&#xff1a;記住密鑰ID&#xff08;前6位&#xff09; 3.2&#xff1a;打開aka.ms/myrecoverykey網址 3.3&#…

C# 的 NLog 庫高級進階

一、引言 在 C# 開發的廣袤天地中&#xff0c;日志記錄宛如開發者的 “千里眼” 與 “順風耳”&#xff0c;助力我們洞察應用程序的運行狀態&#xff0c;快速定位并解決問題。而 NLog 庫&#xff0c;無疑是日志記錄領域中的璀璨明星&#xff0c;以其強大的功能、靈活的配置和出…

Avalonia系列文章之小試牛刀

最近有朋友反饋&#xff0c;能否分享一下Avalonia相關的文章&#xff0c;于是就抽空學習了一下&#xff0c;發現Avalonia真的是一款非常不錯的UI框架&#xff0c;值得花時間認真學習一下&#xff0c;于是邊學習邊記錄&#xff0c;整理成文&#xff0c;分享給大家&#xff0c;希…

10 為什么系統需要引入分布式、微服務架構

java技術的發展 在java開始流行起來之后&#xff0c;主要服務于企業家應用&#xff0c;例如ERP,CRM等等&#xff0c;這些項目是為企業內部員工使用&#xff0c;我們的思維是怎么用設計模式&#xff0c;如何封裝代碼。讓開發人員關注到業務上去&#xff0c;系統也就那么幾十幾百…

第6章:Python TDD實例變量私有化探索

寫在前面 這本書是我們老板推薦過的&#xff0c;我在《價值心法》的推薦書單里也看到了它。用了一段時間 Cursor 軟件后&#xff0c;我突然思考&#xff0c;對于測試開發工程師來說&#xff0c;什么才更有價值呢&#xff1f;如何讓 AI 工具更好地輔助自己寫代碼&#xff0c;或許…

JDK 23 和 JDK 21 的區別

JDK 23 和 JDK 21 的區別主要在于支持周期和功能特性&#xff1a; 支持周期&#xff1a; JDK 23&#xff1a;此版本是一個常規發布版本&#xff0c;支持時間較短&#xff0c;通常是六個月。這種版本適合希望使用最新特性和改進的用戶。JDK 21&#xff1a;這是一個長期支持&…

springboot自動配置原理(高低版本比較)spring.factories文件的作用

SpringBootApplication public class SpringSecurityApplication {public static void main(String[] args) {SpringApplication.run(SpringSecurityApplication.class, args);}}注解SpringBootApplication Target({ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Doc…

使用Websocket進行前后端實時通信

1、引入jar&#xff0c;spring-websocket-starter <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dependency> 2、配置websocket config import org.springframe…

vue2 - Day05 - VueX

Vuex 是 Vue.js 官方的狀態管理庫。它是一個讓你能在應用中集中管理共享狀態的工具。當應用的規模逐漸增大&#xff0c;組件之間的數據傳遞變得越來越復雜時&#xff0c;Vuex 就成為了救星&#xff0c;提供了一個集中式的存儲來管理所有的組件狀態&#xff0c;并且保證狀態以一…

中型項目中 HTTP 的挑戰與解決方案

一、引言 在當今數字化時代&#xff0c;HTTP&#xff08;超文本傳輸協議&#xff09;作為Web應用程序的基礎通信協議&#xff0c;在中型項目的開發中扮演著至關重要的角色。它為客戶端和服務器之間的數據傳輸提供了標準規范&#xff0c;使得各種類型的應用&#xff0c;從簡單的…

IDEA導入Maven工程不識別pom.xml

0 現象 把阿里 sentinel 項目下載本地后&#xff0c;IDEA 中卻沒顯示 maven 工具欄。 1 右鍵Maven Projects 點擊IDEA右側邊欄的Maven Projects&#xff0c;再點擊&#xff1a; 在出現的選擇框中選擇指定的未被識別的pom.xml即可&#xff1a; 2 Add as maven project 右鍵p…