目錄
- 一、項目流程
- 1. 使用servle
- 2. 使用框架
- 二、了解java web項目構造
- 1. 項目目錄結構
- 2. 查看頁面訪問順序
- 3. 發起請求:jquery+ajax
- 4. 接受參數
- 5. JSON
- JSON 數組
- 三、get和post請求區別
一、項目流程
1. 使用servle
有客戶端和服務端,客戶端和服務端進行交互
- 客戶端的訴求傳給服務端,服務端實現訴求,實現的效果在返回給客戶端
- 客戶端使用
jquery+ajax
發起請求request
,請求內容:url
:請求路徑,明確使用那個servlet
type
:請求方式,有get
和post
兩種請求方式data
:參數域
- 請求傳到服務端,使用
Tomcat
web容器,servle
t操作:- 接受參數
- 邏輯處理
- 操作數據庫
- 邏輯處理
- 數據返回
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/value
,key
必須是字符串
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請求區別
get | post | |
---|---|---|
主要用途 | 用于獲取數據(查詢操作) 適合請求不會改變服務器狀態的資源 例如:搜索、分頁、查看詳情 | 用于提交數據(修改操作) 適合創建、更新、刪除數據 例如:登錄、注冊、文件上傳、下單 |
數據傳輸方式 | 數據通過 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=""
跳轉