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

JSP 開發入門(二):核心語法元素全解析

     編輯:關於JSP

JSP 五大語法元素

元素語法用途生成位置
指令<%@ directive ... %>頁面級配置:編碼、導入、錯誤頁、標籤庫、緩存等類級別 / 頁面屬性
聲明<%! declaration %>定義類成員:字段、方法、內部類Servlet 類成員區域
表達式<%= expression %>輸出值到響應流 (自動 toString())out.print() 調用內
腳本片段<% scriptlet %>任意 Java 語句:流程控制、業務邏輯、變量定義_jspService() 方法體內
註釋<%-- comment --%>服務端註釋,**不輸出到客戶端**編譯時剔除

指令詳解

page 指令 (最常用)

<%@ page
    language="java"
    contentType="text/html;charset=UTF-8"
    pageEncoding="UTF-8"
    import="java.util.*,java.sql.*"
    session="true"
    buffer="8kb"
    autoFlush="true"
    errorPage="error.jsp"
    isErrorPage="false"
    extends="com.base.BaseJsp"
    info="Author: Zhang"
    isThreadSafe="true"
    deferredSyntaxAllowedAsLiteral="false"
    trimDirectiveWhitespaces="false"
%>

關鍵屬性:contentType/pageEncoding 解決亂碼;import 減少完整類名;errorPage/isErrorPage 異常處理;session="false" 禁用 Session 節省資源。

include 指令 (靜態包含)

<%@ include file="header.jsp" %>
  • 編譯階段合併文件,**單一 Servlet 類**,共享變量作用域。
  • 適合靜態片段 (頁頭/頁尾/導航欄)。
  • 被包含文件修改需主動觸發主頁重編譯 (Tomcat 開發模式自動)。

taglib 指令

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

引入標籤庫,prefix 為標籤前綴,uri 為 TLD 定義的 URI 或標準庫 URI。

聲明陷阱 (重申)

<%! 
    private int counter = 0; // 實例變量,線程不安全!
    public void initData() { ... } // 成員方法
%>

禁用於可變狀態,僅用於定義輔助方法、常量、靜態工具類引用。

表達式與腳本片段配合

<% for (int i = 1; i <= 4; i++) { %>
    <h<%= i %>>Hello</h<%= i %>>
<% } %>
<!-- 輸出 h1~h4 標題 -->
  • 腳本片段可穿插模板文本,構建動態結構。
  • 變量在腳本片段間共享 (同一方法內局部變量)。

註釋對比

JSP 1.1 XML 語法 (了解)

<jsp:directive.page import="java.util.Date" />
<jsp:declaration>int x = 0;</jsp:declaration>
<jsp:expression>x</jsp:expression>
<jsp:scriptlet>x++;</jsp:scriptlet>
<jsp:comment>XML 風格註釋</jsp:comment>
<jsp:text>純文本內容</jsp:text>

現代項目極少使用,僅為工具解析兼容保留。

最佳實踐:告別 Scriptlet

  1. 業務邏輯移入 Servlet / Service / Controller。
  2. JSP 僅保留:<%@ page ... %>、<%@ taglib ... %>、EL (${...})、JSTL (c:forEach, c:if)、標準動作 (jsp:include, jsp:useBean)。
  3. 在 web.xml 全局禁用 Scriptlet:
<jsp-config>
  <jsp-property-group>
    <url-pattern>*.jsp</url-pattern>
    <scripting-invalid>true</scripting-invalid>
  </jsp-property-group>
</jsp-config>

總結

掌握五大語法元素的生成位置、作用域、線程安全特性,是編寫正確、高性能 JSP 的前提。現代開發應「零 Scriptlet」,拥抱 EL + JSTL + 標籤文件的純模板風格。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
類型語法客戶端可見用途
JSP 註釋<%-- 服務端邏輯 --%>否隱藏業務邏輯、調試代碼、TODO
HTML 註釋<!-- 客戶端提示 -->是 (查看源碼)前端開發說明、條件註釋 IE Hack
Java 註釋<% // 單行 %> / <%/* 多行 */%>否腳本片段/聲明內部代碼註釋