首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

JSP 基本語法大全:三種 Java 代碼塊、三大指令、九大內置對象

     編輯:Java 綜合教學

一、JSP 頁面中的 Java 代碼三種形式

1. JSP 表達式 <%= ... %>

  • 用途:輸出值到頁面,相當於 out.print(...)。
  • 結尾不加分號。
<%= 2 + 2 %>
<%= user.getName() %>
<%= user.getName() + " Welcome" %>

編譯後:

out.print(2 + 2);
out.print(user.getName());
out.print(user.getName() + " Welcome");

2. JSP 腳本片段 <% ... %>

  • 用途:編寫任意 Java 語句(變量聲明、循環、判斷、方法調用)。
  • 代碼直接放入生成 Servlet 的 service() 方法中。
<table>
<%
    List<Student> list = (List<Student>) request.getAttribute("students");
    for (Student s : list) {
%>
    <tr><td><%= s.getId() %></td><td><%= s.getName() %></td></tr>
<%
    }
%>
</table>

3. JSP 聲明 <%! ... %>

  • 用途:為生成的 Servlet 類添加成員變量、方法(類級別)。
  • 不在 service() 內部。
<%!
    private String sharedVar = "init";
    public void helperMethod() { /* ... */ }
%>

編譯後:

public class XXX_jsp extends HttpJspBase {
    private String sharedVar = "init";
    public void helperMethod() { ... }
    public void _jspService(...) { ... }
}

二、JSP 指令

指令作用常用屬性
<%@ page ... %>頁面屬性設置、導包import、contentType、pageEncoding、errorPage、isELIgnored
<%@ include ... %>靜態包含其他文件(編譯期合併)file="header.jsp"
<%@ taglib ... %>引入標簽庫(JSTL、自定義標簽)uri、prefix

page 指令常用示例

<%@ page import="java.util.*, java.sql.*" %>
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ page pageEncoding="UTF-8" %>
<%@ page errorPage="/error.jsp" %>
<%@ page isELIgnored="false" %>
注意:page 指令建議放在頁面最頂部。

include 指令

<%@ include file="common/header.jsp" %>

taglib 指令(JSTL core)

<%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %>

三、九大內置對象

對象類型說明
requestHttpServletRequest請求對象,獲取參數、屬性、Header
responseHttpServletResponse響應對象,設置狀態、Header、Cookie、重定向
outJspWriter輸出流,out.print() 寫內容到頁面
sessionHttpSession會話,跨請求存儲用戶狀態
applicationServletContext全局上下文,整個 Web 應用共享
pageContextPageContext頁面上下文,訪問其他 8 大對象、作用域操作
pageObject當前頁面實例(this),極少直接用
configServletConfigServlet 初始化參數
exceptionThrowable錯誤頁面中可用,捕獲異常信息

四、作用域對比

作用域對象生命周期適用場景
pagepageContext單次請求頁面渲染期間頁面內臨時數據
requestrequest一次請求(含 forward)請求傳遞數據
sessionsession用戶會話(默認 30 分鐘無操作失效)用戶登錄狀態、購物車
applicationapplication整個 Web 應用生命周期全局配置、緩存、計數器

五、EL 表達式與 JSTL 簡介

  • EL:${user.name} 替代 <%= user.getName() %>,自動處理 null、支持巢狀屬性、隱式對象(param、header、cookie、initParam 等)。
  • JSTL:<c:forEach>、<c:if>、<fmt:formatDate> 等標簽替代腳本片段,頁面更純淨。

總結

掌握三種代碼塊區別(表達式輸出、腳本邏輯、聲明成員)、三大指令用途、九大內置對象類型與作用域,是 JSP 開發的基石。現代開發建議:盡量使用 EL + JSTL 替代腳本片段,業務邏輯下沉到 Controller/Service,JSP 僅負責展示。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved