java web項目入門了解

目錄

  • 一、項目流程
    • 1. 使用servle
    • 2. 使用框架
  • 二、了解java web項目構造
    • 1. 項目目錄結構
    • 2. 查看頁面訪問順序
    • 3. 發起請求:jquery+ajax
    • 4. 接受參數
    • 5. JSON
      • JSON 數組
  • 三、get和post請求區別

一、項目流程

1. 使用servle

客戶端服務端,客戶端和服務端進行交互

  • 客戶端的訴求傳給服務端,服務端實現訴求,實現的效果在返回給客戶端
  • 客戶端使用jquery+ajax發起請求request,請求內容:
    • url:請求路徑,明確使用那個servlet
    • type:請求方式,有getpost兩種請求方式
    • data:參數域
  • 請求傳到服務端,使用Tomcatweb容器,servlet操作:
    • 接受參數
    • 邏輯處理
    • 操作數據庫
    • 邏輯處理
    • 數據返回response
  • 服務端數據返回response給客戶端后,客戶端反饋請求是否成功
    • success:請求成功回調函數
    • error:請求失敗回調函數
      客戶端和服務端流程

問題: servle處理高并發,效率不好;可以使用框架。

2. 使用框架

框架分為三層:

  • 表現層Controller,作用:接受url請求,返回響應結果
  • 業務邏輯層Service,作用:對數據進行邏輯處理,例如:爬蟲,數據計算等
  • 持久層Dao,作用:負責與數據庫進行操作
  • 這三層也會進行數據交互,使用實體層Entity進行交互
    框架

二、了解java web項目構造

1. 項目目錄結構

  • WebContent放置前端內容
  • Java Resources·下的src`放置后端內容
  • 項目運行后,目錄上會多一個servers文件夾,這是放置Tomcat的配置文件地方

2. 查看頁面訪問順序

WebContent下的WEB-INF下的web.xml配置文件,可以查看頁面訪問先后順序,有兩種查看方式:

  • 方式一:Design
    方式一
  • 方式二:Source
    方式二

首頁起名一般使用的是index,index是默認訪問頁面

3. 發起請求:jquery+ajax

  • 從官網下載jquery-3.7.1.min.js,在 WebContent 下新建一個 js 文件夾,將jquery文件放置文件夾 js 下
  • 在 WebContent 下新建一個 html 文件
  • ajax基礎內容包括:
    • url:請求路徑,對應@WebServlet(“/index”)中的路徑
    • type:請求方式,get和post兩種請求方式,分別對應doGet方法和doPost方法
    • data:參數域,可有可無
    • success:請求反饋 value:后端給前端反饋響應的信息
    • error:初學者可加,有助于判斷是否有問題
      <!DOCTYPE html>
      <html>
      <head>
      <meta charset="UTF-8">
      <title>Insert title here</title>
      <script src="js/jquery.js"></script>
      <script>$.ajax({url:"index",type:"get",data:{user:"admin",password:"123456"},success:function(value){console.log("請求成功")},error:function(){console.log("出錯啦")}})
      </script>
      </head>
      <body>
      hello
      </body>
      </html>
      
      結果:
      運行結果

擴展:Uncaught ReferenceError: $ is not defined ,說明jquery沒有引進成功。

4. 接受參數

  • 在 Java Resources 下的 src ,創建包,在包中創建 servlet 的java文件
    名字是否需要一致
  • request:請求
    • getParameter()方法:獲取參數
  • equals()方法:相等
  • response:返回,把響應返回到value
    • getWriter().write("")方法:返回內容
    • setContentType()方法:返回格式
  • setCharacterEncoding()方法:設置編碼
    /*** Servlet implementation class IndexServlet*/
    @WebServlet("/index")//這個名字與下面的名字可以不一致,不能重名
    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("user");String bcc = request.getParameter("password");String res = "";//判斷用戶名是否等于adminif(acc.equals("admin")) {System.out.println("登錄成功");res = "ok";}else {System.out.println("登錄失敗");res = "no";}//設置編碼response.setCharacterEncoding("UTF-8");//返回response.getWriter().write(res);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("post請求接受到了");}
    }
    

5. JSON

  • 是javascript對象表示法
  • 是存儲和交換文本信息的語法
  • json對象使用大括號{}書寫
  • 對象中可包含多個鍵值對key/valuekey必須是字符串

JSON 數組

  • 數組值為:字符串、數字、對象、數組、布爾值、null,也可以是JavaScript的表達式,包括函數、日期、undefined
  • 語法:{屬性1:屬性值1, 屬性2:屬性值2},例如:{"name":"zhangsna", "site":null }

?面對大量數據,使用json格式

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("get請求接受到了");//接受參數String acc = request.getParameter("user");String bcc = request.getParameter("password");String res = "";//判斷用戶名是否等于adminif(acc.equals("admin")) {System.out.println("登錄成功");res = "{\"name\":\"zhangsna\", \"site\":null }";}else {System.out.println("登錄失敗");res = "no";}//設置后端給前端返回的信息為json格式response.setContentType("text/json;charset=utf-8");//設置編碼response.setCharacterEncoding("UTF-8");//返回response.getWriter().write(res);
}

注意: 設置response.setContentType("text/json;charset=utf-8");這句話,必須設置json格式,否則報錯。

三、get和post請求區別

getpost
主要用途用于獲取數據(查詢操作)
適合請求不會改變服務器狀態的資源
例如:搜索、分頁、查看詳情
用于提交數據(修改操作)
適合創建、更新、刪除數據
例如:登錄、注冊、文件上傳、下單
數據傳輸方式數據通過 URL的查詢字符串(Query String) 傳遞,例如:/user?id=123&name=zhang
數據可見
受URL長度限制
數據通過 請求體(Request Body) 會暴露在URL中
數據不可見
沒有嚴格長度限制,適合大數據
安全性不安全:數據在URL中明文傳輸
多次請求結果相同(無副作用)
相對安全:數據在請求體中,適合傳輸敏感信息
多次提交肯產生不同結果(如重復下單)
緩存適合靜態資源請求(如圖片、CSS)不適合緩存動態數據
后端接受方式(以Java Serevlet 為例)String id = request.getParameter("id"); // 從 URL 提取參數// 需要設置字符編碼(防止中文亂碼)request.setCharacterEncoding("UTF-8");String username = request.getParameter("username"); // 從請求體提取參數
使用場景獲取數據:頁面加載、搜索等
數據量小且不敏感
提交表單,如登錄、注冊
上傳文件或大數據,如照片
修改服務器狀態,如刪除資源

擴展知識location.href=""跳轉

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

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

相關文章

網絡資源模板--基于Android Studio 實現的日記本App

目錄 一、測試環境說明 二、項目簡介 三、項目演示 四、部設計詳情&#xff08;部分) 創建修改頁面 五、項目源碼 一、測試環境說明 電腦環境 Windows 11 編寫語言 JAVA 開發軟件 Android Studio (2020) 開發軟件只要大于等于測試版本即可(近幾年官網直接下載也可…

GO的啟動流程(GMP模型/內存)

目錄第一部分&#xff1a;程序編譯第二部分&#xff1a;函數解讀1&#xff09;Golang 核心初始化過程2&#xff09;創建第一個協程3&#xff09;啟動系統調度4&#xff09;跳轉main函數5&#xff09;總結第三部分&#xff1a;GMP模型Goroutine流程解讀第四部分&#xff1a;內存…

OLTP與OLAP:實時處理與深度分析的較量

OLTP&#xff08;Online Transaction Processing&#xff09;定義&#xff1a;OLTP 系統主要用于管理事務性應用程序的數據。這類系統需要支持大量的短時、快速的交互式事務&#xff0c;比如銀行交易、在線購物訂單等。特點&#xff1a;實時處理&#xff1a;OLTP 系統要求對數據…

數據安全與隱私保護:企業級防護策略與技術實現

引言&#xff1a;數據安全的新時代挑戰在數字化轉型加速的今天&#xff0c;數據已成為企業最核心的資產。然而&#xff0c;數據泄露事件頻發&#xff0c;據 IBM《2024 年數據泄露成本報告》顯示&#xff0c;全球數據泄露平均成本已達445 萬美元&#xff0c;較 2020 年增長了 15…

AI_RAG

一.為什么需要RAG&#xff08;AI幻覺&#xff09;大模型LLM在某些情況下給出的回答很可能錯誤的&#xff0c;涉及虛構甚至是故意欺騙的信息。二.什么是RAGRAG是一種結合“信息檢索”和“文本生成”的技術&#xff0c;旨在提升生成式AI模型的準確性和可靠性。它通過以下兩個核心…

LeetCode111~130題解

LeetCode111.二叉樹的最小深度&#xff1a; 題目描述&#xff1a; 給定一個二叉樹&#xff0c;找出其最小深度。 最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。 說明&#xff1a;葉子節點是指沒有子節點的節點。 示例 1&#xff1a; 輸入&#xff1a;root …

n8n飛書webhook配置(飛書機器人、飛書bot、feishu bot)Crypto節點、js timestamp代碼、Crypto node

自定義機器人使用指南 利用 n8n 打造飛書 RSS 推送機器人 文章目錄自定義機器人使用指南注意事項功能介紹在群組中添加自定義機器人操作步驟邀請自定義機器人進群。- 進入目標群組&#xff0c;在群組右上角點擊更多按鈕&#xff0c;并點擊 設置。- 在右側 設置 界面&#xff0…

nhdeep檔案管理工具軟件官網

歡迎訪問nhdeep官網&#xff1a; www.nhdeep.com NHDEEP提供一系列專業的單機版檔案管理工具&#xff0c;滿足不同場景下的檔案管理需求&#xff0c;無需網絡連接&#xff0c;數據安全可靠。所有工具均提供免費試用版下載。 檔案綜合管理系統單機版:全面的檔案管理解決方案&a…

RocketMQ節點部署計算方案

節點計算公式 業務場景 預期峰值TPS&#xff1a;200,000 單組容量&#xff1a;40K TPS 容災要求&#xff1a;同城雙機房 nameServer節點數max(3, (15/50) 1) max(3, 0.3 1) max(3, 1.3) 3 Broker節點數ceil(200,000 / 40,000) 5組 總節點數 NameServer節點Broker組數(Mas…

MyBatis聯合查詢 - XML篇

文章目錄數據庫設計MyBatis 配置MyBatis 映射文件Mapper 接口總結數據庫設計 建表 SQL CREATE TABLE user (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50) NOT NULL );CREATE TABLE order (id INT PRIMARY KEY AUTO_INCREMENT,user_id INT NOT NULL,order_no VARCHAR(…

Kubelet 探針如何選擇 IP:status.PodIP 溯源與“同 Pod 兩個 IP“現象解析

背景與現象同一個 Pod 的 readiness 和 liveness 探針日志顯示連接的 IP 不一致&#xff08;例如 10.10.6.10:9999 與 10.10.6.32:9999&#xff09;。本文從 kubelet 源碼入手&#xff0c;解釋探針目標 IP 的來源、為何會出現兩個不同 IP&#xff0c;并給出建議與驗證方法。在如…

Arm Development Studio 安全通告:CVE-2025-7427

安全之安全(security)博客目錄導讀 目錄 一、概述 二、CVE 詳情 三、受影響產品 四、建議 五、致謝 六、版本歷史 一、概述 ARM已知悉一個影響 Arm Development Studio 的安全漏洞&#xff0c;該漏洞可能允許攻擊者執行 DLL 劫持攻擊&#xff08;DLL hijacking attack&…

C#異步編程雙利器:異步Lambda與BackgroundWorker實戰解析

**摘要&#xff1a;**深入剖析兩種異步編程范式&#xff0c;解決GUI線程阻塞難題 一、異步Lambda表達式&#xff1a;事件處理的輕量化利器 核心價值&#xff1a;簡化事件響應中的異步操作&#xff0c;避免UI線程阻塞 ? 典型應用場景&#xff08;WPF示例&#xff09;&#xff1…

yolo world (1): 論文解讀

YOLO 系列檢測器以其高效性和實用性而聞名。然而,它們依賴于預定義和訓練的目標類別,這限制了其在開放場景中的適用性。為了解決這一限制,我們提出了 YOLO-World,這是一種創新的方法,通過視覺-語言建模和大規模數據集預訓練,增強了 YOLO 的開放詞匯檢測能力。具體來說,我…

【JVM】深入解析Java虛擬機

目錄 1. 區分JDK&#xff0c;JRE 和 JVM 1.1 JVM 1.2 JRE 1.3 JDK 1.4 關系總結 2. 跨平臺性 3. JVM中的內存劃分 4. JVM的類加載機制 5. 雙親委派模型 6. 垃圾回收機制&#xff08;GC&#xff09; 6.1 識別垃圾 6.1.1 單個引用 6.1.2 多個引用 6.2 釋放垃圾 6.…

98-基于Python的網上廚房美食推薦系統

基于Python的網上廚房美食推薦系統 - 技術分享博客 &#x1f4cb; 目錄 項目概述技術棧系統架構核心功能實現數據庫設計推薦算法數據可視化部署與優化項目特色總結與展望 &#x1f3af; 項目概述 項目背景 隨著生活節奏的加快&#xff0c;越來越多的人開始關注美食制作&…

創建MyBatis-Plus版的后端查詢項目

記得編碼和maven庫的檢測&#xff01;&#xff01;&#xff01; 1、maven庫導入包<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupI…

開發板RK3568和stm32的異同:

RK3568 和 STM32 是兩類不同定位的處理器 / 微控制器&#xff0c;在架構、性能、應用場景等方面差異顯著&#xff0c;但也存在部分共性。以下從核心特性、異同點及典型場景進行對比&#xff1a;一、核心差異維度RK3568&#xff08;瑞芯微&#xff09;STM32&#xff08;意法半導…

C# 使用iText獲取PDF的trailer數據

文章目錄C# 使用iText獲取PDF的trailer數據iText 核心概念C# 代碼示例步驟 1: 確保已安裝 iText步驟 2: C# 代碼程序運行效果解讀 Trailer 的輸出總結C# 使用iText獲取PDF的trailer數據 開發程序debug的時候&#xff0c;看到了PDF有個trailer數據&#xff0c;挺有意思&#xf…

京東流量資產基于湖倉架構的落地實踐

在當今數字化商業浪潮中&#xff0c;數據無疑是企業的核心資產&#xff0c;而流量數據更是電商巨頭京東業務運轉的關鍵驅動力。它廣泛應用于搜索推薦、廣告投放等多個核心業務場景&#xff0c;直接影響著用戶體驗和商業效益。但隨著業務規模的不斷膨脹&#xff0c;傳統架構在處…