1. 程式人生 > 實用技巧 >java Servlet類 寫一個訪問次數

java Servlet類 寫一個訪問次數

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

//Servlet類 可以給客戶端提供服務 實現後端的伺服器和前端的客戶端進行互動
//實時統計使用者訪問該web應用的次數
//請求資源對映 瀏覽器位址列中輸入的網址 localhost:8080/day13/queryOrder
@WebServlet("/queryOrder")
public class QueryOrderServlet extends HttpServlet {

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//請求方式 get請求 post請求
//預設的請求方式就是get請求 進入doGat方法中
/*
實現思路:域物件 全域性局域物件 ServletContext key-value 雙列資料結構
累加次數的值 在ServletContext域中儲存
1.獲取全域性域物件
2.進行次數累加
2.1 從域物件中獲取先前已經儲存的次數
2.2 直接在原來的次數基礎上進行累加 num++
3.輸出當前使用者訪問的次數

*/
//1.獲取全域性域物件 ①this.getServletContext() ②super.getServletContext() ③request.getServletContext
//執行方法的時候,如果該方法有結果值.var 快速生成該方法結果值對應的變數
ServletContext context = req.getServletContext();
//2.次數累加
//2.1從域物件中獲取先前儲存的次數 第一次的時候怎麼辦 key-value中的key值固定
Integer num = (Integer) context.getAttribute("num");// null
//隱含有問題 八種基本資料型別 byte share int long float double boolean char
//int --- Integer 基本資料型別對應的應用型別(包裝類)
//校驗當前的num是否為null
if (num == null) {
context.setAttribute("num", 1);
} else {
//表明 使用者不是第一次訪問該應用 在原來的基礎上累加1
context.setAttribute("num", ++num);
}
//展示當前使用者訪問該應用的次數
System.out.println("當前訪問次數為:" + context.getAttribute("num"));


}
}