Jsp技術入門指南【六】jsp腳本原理及隱式對象

Jsp技術入門指南【六】jsp腳本原理及隱式對象

  • 前言
  • 一、JSP 腳本元素
    • 1.1 聲明
    • 1.2 表達式
    • 1.3 腳本標簽
  • 二、JSP 的隱式對象是什么
  • 三、隱式對象詳解
    • out
    • request
    • session
    • application
    • config
    • exception


前言

  • 在之前的博客中,我們已經介紹了JSP的環境搭建、編譯文件查找以及生命周期等基礎知識。這些內容為理解JSP的工作原理奠定了基礎
  • 接下來,我們將深入剖析JSP頁面的核心結構,探索動態頁面開發的底層邏輯。
  • 掌握JSP頁面結構是高效開發動態Web應用的關鍵。
  • 本文將從基礎部件到核心指令逐步解析,幫助你夯實JSP開發基礎,為后續的實戰開發做好準備

我的個人主頁,歡迎來閱讀我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的JSP知識文章專欄
歡迎來閱讀指出不足
https://blog.csdn.net/2402_83322742/category_12950980.html?spm=1001.2014.3001.5482


一、JSP 腳本元素

1.1 聲明

  • 在 JSP 里,聲明用于定義變量與方法。這些聲明會被轉換為 Servlet 類的成員變量和方法。聲明的語法格式如下:
<%!// 變量聲明int count = 0;// 方法聲明public void incrementCount() {count++;}
%>

在上述示例中,count 是成員變量,incrementCount 是成員方法。

1.2 表達式

表達式用于在 JSP 頁面輸出值。它會被轉換為 Servlet 中 out.print() 方法的調用。表達式的語法格式如下:

<%= 表達式 %>

示例如下:

<%int num = 10;
%>
<p>數字是: <%= num %></p>

上述代碼會輸出 數字是: 10

1.3 腳本標簽

腳本標簽用于在 JSP 頁面中嵌入 Java 代碼。它會被轉換為 Servlet 中 _jspService 方法的一部分。腳本標簽的語法格式如下:

<%// Java 代碼int a = 5;int b = 3;int sum = a + b;out.print("兩數之和是: " + sum);
%>

二、JSP 的隱式對象是什么

  • JSP 隱式對象指的是在 JSP 頁面里無需顯式聲明就能夠使用的對象
  • 這些對象是由 JSP 容器自動創建并提供的,在 JSP 頁面中可以直接使用。常見的隱式對象有 outrequestresponsesessionapplicationconfigpagepageContextexception

三、隱式對象詳解

out

out 對象屬于 JspWriter 類的實例,用于向客戶端輸出內容。示例如下:

<%out.print("歡迎訪問本頁面!");
%>

request

request 對象是 HttpServletRequest 類的實例,用于獲取客戶端發送的請求信息,像請求參數、請求頭、請求方法等。示例如下:

<%String username = request.getParameter("username");out.print("你輸入的用戶名是: " + username);
%>

session

session 對象是 HttpSession 類的實例,用于在多個請求之間跟蹤用戶會話。在一個會話里,session 是唯一的。

<%--Created by IntelliJ IDEA.User: DELLDate: 2025/4/10Time: 19:09To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<%out.print("hello111");int a; // 這里聲明了變量 a,但未使用String username = request.getParameter("uesename");if (username != null && username.equals("admin")) {session.setAttribute("username", username);System.out.println("-----" + session.getId());response.sendRedirect("../body.jsp");}
%></body>
</html>

這段代碼的功能如下:

  1. 向客戶端輸出 hello111
  2. 從請求參數中獲取 username
  3. 檢查 username 是否為 admin,若為 admin,就將 username 存入 session 中,打印 session 的 ID,然后重定向到 ../body.jsp 頁面。

application

application 對象是 ServletContext 類的實例,用于在整個 Web 應用程序中共享數據。可以在 web.xml 里配置初始化參數,然后在 JSP 頁面中通過 application 對象獲取。

web.xml 配置示例

<context-param><param-name>appName</param-name><param-value>MyWebApp</param-value>
</context-param>

JSP 頁面獲取參數示例

<%String appName = application.getInitParameter("appName");out.print("應用程序名稱是: " + appName);
%>

config

config 對象是 ServletConfig 類的實例,用于獲取 Servlet 的配置信息。可以在 web.xml 里配置 Servlet 的初始化參數,然后在 JSP 頁面中通過 config 對象獲取。

exception

exception 對象是 Throwable 類的實例,用于處理 JSP 頁面中出現的異常。要使用 exception 對象,需要在 <%@ page %> 指令中設置 isErrorPage="true"

示例

<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<html>
<head><title>錯誤頁面</title>
</head>
<body><h1>發生錯誤</h1><p>錯誤信息: <%= exception.getMessage() %></p>
</body>
</html>

綜上所述,JSP 隱式對象為開發人員提供了便捷的方式來處理請求、管理會話、共享數據和處理異常等。通過合理運用這些隱式對象,能夠開發出功能強大的 Web 應用程序。


以上就是這篇博客的全部內容,下一篇我們將繼續探索JSP的更多精彩內容。

我的個人主頁,歡迎來閱讀我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的JSP知識文章專欄
歡迎來閱讀指出不足
https://blog.csdn.net/2402_83322742/category_12950980.html?spm=1001.2014.3001.5482

非常感謝您的閱讀,喜歡的話記得三連哦

在這里插入圖片描述

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

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

相關文章

vue3推薦的移動table庫

vxe-table https://gitee.com/js-class/vxe-table#https://gitee.com/link?targethttps%3A%2F%2Fvxetable.cn 文檔api https://vxetable.cn/#/component/table/other/bookkeepingVoucher 引入步驟 安裝 npm install xe-utils vxe-tablenext 在項目main.js引入 import …

HOOPS Exchange 與HOOPS Communicator集成:打造工業3D可視化新標桿!

一、概述 在工業3D開發、BIM建筑、數字孿生和仿真分析等高端應用場景中&#xff0c;數據格式復雜、模型體量龐大、實時交互體驗要求高&#xff0c;一直是困擾開發者的難題。Tech Soft 3D旗下的HOOPS Exchange和HOOPS Communicator&#xff0c;正是解決這類問題的黃金搭檔。二者…

《軟件設計師》復習筆記(14.3)——設計模式

目錄 一、設計模式分類 1. 創建型模式&#xff08;Creational Patterns&#xff09; 2. 結構型模式&#xff08;Structural Patterns&#xff09; 3. 行為型模式&#xff08;Behavioral Patterns&#xff09; 真題示例&#xff1a; 一、設計模式分類 架構模式 高層設計決…

HarmonyOS:使用Refresh組件實現頁面下拉刷新上拉加載更多

一、前言 可以進行頁面下拉操作并顯示刷新動效的容器組件。 說明 該組件從API Version 8開始支持。后續版本如有新增內容&#xff0c;則采用上角標單獨標記該內容的起始版本。該組件從API Version 12開始支持與垂直滾動的Swiper和Web的聯動。當Swiper設置loop屬性為true時&…

55、?屏加載?屏怎么進?優化

答&#xff1a; &#xff08;1&#xff09;使?CDN 減?代碼體積&#xff0c;加快請求速度&#xff1b; (2)SSR通過服務端把所有數據全部渲染完成再返回給客?端&#xff1b; (3) 路由懶加載&#xff0c;當??訪問的時候&#xff0c;再加載相應模塊&#xff1b; (4) 使?外…

什么是Python單例模式

什么是Python單例模式 Python單例模式是一種創建型設計模式,目的是確保一個類僅有一個實例,并提供一個全局訪問點來獲取該實例。以下從作用和示例進行介紹: 作用 控制資源使用:避免對系統資源的重復消耗,像數據庫連接、文件句柄等稀缺資源,只創建一個實例來管理使用,防…

Java 2025:解鎖未來5大技術趨勢,Kotlin融合AI新篇

各位Java開發者們好&#xff01;&#x1f680; 2025年的Java世界正在經歷一場前所未有的技術變革。作為深耕Java領域多年的技術博主&#xff0c;今天我將帶大家深入探索Java生態即將迎來的5大技術趨勢&#xff0c;特別是Kotlin的深度融合和AI技術的新篇章。準備好了嗎&#xff…

計算機視覺cv2入門之車牌號碼識別

前邊我們已經講解了使用cv2進行圖像預處理與邊緣檢測等方面的知識&#xff0c;這里我們以車牌號碼識別這一案例來實操一下。 大致思路 車牌號碼識別的大致流程可以分為這三步&#xff1a;圖像預處理-尋找車牌輪廓-車牌OCR識別 接下來我們按照這三步來進行講解。 圖像預處理 …

CExercise_13_1排序算法_3快速排序算法,包括單向分區以及雙向分區

題目&#xff1a; 請手動實現快速排序算法&#xff0c;包括單向分區以及雙向分區&#xff1a; // 單向分區快速排序算法 void quick_sort_one_way(int arr[], int len); //雙向分區快速排序算法 void quick_sort_two_way(int arr[], int len); 關鍵點 分析&#xff1a; &#x…

FPGA-VGA

目錄 前言 一、VGA是什么&#xff1f; 二、物理接口 三、VGA顯示原理 四、VGA時序標準 五、VGA顯示參數 六、模塊設計 七、波形圖設計 八、彩條波形數據 前言 VGA的FPGA驅動 一、VGA是什么&#xff1f; VGA&#xff08;Video Graphics Array&#xff09;是IBM于1987年推出的…

Linux和Ubuntu的驅動適配情況

舊 一、Linux Yocto3.0 二、Ubuntu 1.驅動 1.rtc正常 2.led正常 3.加密芯片正常 4.硬件看門狗不行&#xff0c;驅動已經適配好&#xff0c;等硬件修復后&#xff0c;直接使用腳本就可以 5.千兆網口可以&#xff0c;兩個百兆網口不行 6.USB上面和下面都可以&#xff08;插u盤…

Python 文本和字節序列(處理文本文件)

本章將討論下述話題&#xff1a; 字符、碼位和字節表述 bytes、bytearray 和 memoryview 等二進制序列的獨特特性 全部 Unicode 和陳舊字符集的編解碼器 避免和處理編碼錯誤 處理文本文件的最佳實踐 默認編碼的陷阱和標準 I/O 的問題 規范化 Unicode 文本&#xff0c;進行安全的…

【Android學習記錄】工具使用

文章目錄 一. 精準找視圖資源ID1. 準備工作2. 使用 uiautomator 工具2.1. 獲取設備的窗口內容2.2. Pull XML 文件2.3. 查看 XML 文件 3. 直接使用 ADB 命令4. 使用 Android Studio 的 Layout Inspector總結 二. adb shell dumpsys activity1. 如何使用 ADB 命令2. 輸出內容解析…

Kafka系列之:計算kafka集群topic占的存儲大小

Kafka系列之:計算kafka集群topic占的存儲大小 topic存儲數據格式統計topic存儲大小定時統計topic存儲大小topic存儲數據格式 單位是字節大小 size_bytes{directory="/data/datum/kafka/optics-all" } 782336計算topic存儲大小腳本邏輯是: 計算指定目錄或文件的大小…

C# 高級編程:Lambda 表達式

在 C# 的高級編程中,Lambda 表達式是一個強大而靈活的工具,廣泛應用于 LINQ 查詢、委托、事件處理以及函數式編程等多個領域。它不僅使代碼更簡潔、表達更直接,而且在某些場景中能極大提高代碼的可讀性與可維護性。本文將從 Lambda 表達式的基本語法入手,深入探討其原理、常…

《軟件設計師》復習筆記(11.5)——測試原則、階段、測試用例設計、調試

目錄 1. 測試基礎概念 2. 測試方法分類 3. 測試階段 真題示例&#xff1a; 題目1 題目2 題目3 4. 測試策略 5. 測試用例設計 真題示例&#xff1a; 6. 調試與度量 真題示例&#xff1a; 1. 測試基礎概念 定義&#xff1a;系統測試是為發現錯誤而執行程序的過程&…

方案解讀:虛擬電廠標桿項目整體建設方案【附全文閱讀】

在電力市場背景下,傳統電力現貨市場存在電能定價不合理、分布式電源并網困難等問題。本虛擬電廠標桿項目旨在研究全時間尺度虛擬電廠智能管控關鍵技術,通過研制虛擬電廠控制器樣機、開發運行管理平臺,實現對分布式能源的合理優化配置。項目內容涵蓋虛擬調控、建設目標、建設…

PyTorch 深度學習實戰(37):分布式訓練(DP/DDP/Deepspeed)實戰

在上一篇文章中&#xff0c;我們探討了混合精度訓練與梯度縮放技術。本文將深入介紹分布式訓練的三種主流方法&#xff1a;Data Parallel (DP)、Distributed Data Parallel (DDP) 和 DeepSpeed&#xff0c;幫助您掌握大規模模型訓練的關鍵技術。我們將使用PyTorch在CIFAR-10分類…

OpenAI重返巔峰:o3與o4-mini引領AI推理新時代

引言 2025年4月16日&#xff0c;OpenAI發布了全新的o系列推理模型&#xff1a;o3和o4-mini&#xff0c;這兩款模型被官方稱為“迎今為止最智能、最強大的大語言模型&#xff08;LLM&#xff09;”。它們不僅在AI推理能力上實現了質的飛躍&#xff0c;更首次具備了全面的工具使…

【AI插件開發】Notepad++ AI插件開發實踐:支持配置界面

一、引用 此前的系列文章已基本完成了Notepad的AI插件的功能開發&#xff0c;但是此前使用的配置為JSON配置文件&#xff0c;不支持界面配置。 本章在此基礎上集成支持配置界面&#xff0c;這樣不需要手工修改配置文件&#xff0c;直接在界面上操作&#xff0c;方便快捷。 注…