JSP基礎知識

太陽以西.S發表於2020-10-06

什麼是JSP?

JavaServerPages伺服器端頁面,根本是一個簡化的Servlet設計,本質就是在HTML中插入java程式碼。

為什麼學習JSP?

克服servlet的一些缺點,補強servlet的不足,簡化動態網頁開發:

  • servlet需要配置,不方便維護;
  • servlet很難向網頁中輸出html頁面內容。

JSP執行原理

在這裡插入圖片描述

  • JSP需要釋出到伺服器中才可以執行。
  • JSP檔案被伺服器翻譯成java檔案,再由伺服器編譯生成class檔案,最後執行,jsp就是一個servlet。

JSP的指令碼元素

jsp= html+java程式碼+jsp自身東西:jsp的指令碼元素就是在jsp中嵌入java程式碼

  • JSP指令碼元素的分類
    • 宣告標籤(不常用,以保證執行緒安全)
      語法:<%! 變數或方法宣告 %>,寫在這個指令碼中的程式碼,翻譯成servlet內部的成員變數或成員方法。
    • 表示式標籤
      語法:<%= 表示式 %>,寫在這個指令碼中的程式碼,翻譯成方法內部的out.print()當中的內容——輸出。
    • 程式程式碼標籤
      語法:<% 程式程式碼 %>,寫在這個指令碼中的程式碼,翻譯成方法內部的區域性變數或方法內部程式碼片段。

JSP的開發模式之MVC開發模式

在這裡插入圖片描述

請求轉發和響應重定向

  • 請求轉發
    • 請求轉發通過request物件呼叫,把請求物件和響應物件與要跳轉的地址共享:
request.getRequestDispatcher("showIP.jsp").forward(request, response);
  • 響應重定向
    • 響應重定向通過response物件呼叫,讓瀏覽器向重定向的地址重新傳送一次請求:
response.sendRedirect("error.jsp");
  • 兩者區別
    在這裡插入圖片描述在這裡插入圖片描述

開發中的路徑問題

  • 什麼時候會遇到路徑問題
    展示頁面提供連結或者表單,當點選連結或者表單的時候需要進行提交,提交到servlet中,從頁面向servlet傳送請求的地址(路徑)應該如何編寫。

  • 路徑分類

    • 相對路徑(少用)
      在這裡插入圖片描述
      demo1訪問servletdemo1:
// 需返回上一級目錄情況,../代表返回上一級 
<a href="../ServletDemo1">相對路徑</a>
//若在同一級目錄,直接寫檔名或者./
<a href="./ServletDemo1">相對路徑</a>
<a href="ServletDemo1">相對路徑</a>
  • 絕對路徑(常用)
//絕對路徑通常以 / 開頭
//絕對路徑可以省略ip和埠號,從/工程名開始
<a href="http://localhost:8080/web02_heima/ServletDemo1">絕對路徑</a>
<a href="/web02_heima/ServletDemo1">絕對路徑</a>

絕對路徑不需要關心當前檔案與要請求檔案的相對位置關係!
絕對路徑分為伺服器端路徑和客戶端路徑:

	 - 客戶端路徑  需要帶工程名
	 - 伺服器端路徑   不需要帶工程名