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

Java 留言板教學(三):列表頁面開發——傳統 JSP Scriptlet 版

     編輯:Java 相關知識

為了對比 JSTL 的優勢,本篇使用傳統 JSP Scriptlet(<% ... %>)實現相同的留言列表分頁功能。雖然不推薦用於新專案,但理解其寫法有助於維護舊系統、排查問題。

Scriptlet 列表頁完整代碼

Scriptlet 列表頁面截圖

<%@ page contentType="text/html;charset=UTF-8" import="java.util.*,com.example.model.*" %>
<html><head><title>留言列表 (Scriptlet)</title></head><body>
<h2>留言板 - 主題列表</h2>

<% 
    PageBean<Message> page = (PageBean<Message>) request.getAttribute("page");
    List<Message> list = page.getList();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
%>

<table border="1" cellpadding="5" cellspacing="0" width="100%">
  <tr style="background:#f0f0f0">
    <th>標題</th><th>作者</th><th>發文時間</th><th>回覆數</th><th>操作</th>
  </tr>
  <% for (Message msg : list) { %>
  <tr>
    <td><%= msg.getTitle() %></td>
    <td><%= msg.getUser().getUsername() %></td>
    <td><%= sdf.format(msg.getPostTime()) %></td>
    <td><%= msg.getReplyCount() %></td>
    <td>
      <a href="detail?id=<%= msg.getId() %>">詳情</a> |
      <a href="replyForm?parentId=<%= msg.getId() %>">回覆</a> |
      <a href="delete?id=<%= msg.getId() %>" onclick="return confirm('確定刪除?')">刪除</a>
    </td>
  </tr>
  <% } %>
</table>

<!-- 分頁導航 -->
<div style="text-align:center; margin-top:10px">
  <% 
    int currentPage = page.getCurrentPage();
    int totalPage = page.getTotalPage();
    String ctx = request.getContextPath();
  %>
  <a href="<%= ctx %>/list?pageNo=1">首頁</a>
  <% if (currentPage > 1) { %>
    <a href="<%= ctx %>/list?pageNo=<%= currentPage-1 %>">上一頁</a>
  <% } %>
  <% for (int i = 1; i <= totalPage; i++) { %>
    <% if (i == currentPage) { %> [<%= i %>] <% } else { %>
      <a href="<%= ctx %>/list?pageNo=<%= i %>"><%= i %></a>
    <% } %>
  <% } %>
  <% if (currentPage < totalPage) { %>
    <a href="<%= ctx %>/list?pageNo=<%= currentPage+1 %>">下一頁</a>
  <% } %>
  <a href="<%= ctx %>/list?pageNo=<%= totalPage %>">尾頁</a>
</div>
</body></html>

痛點分析

  1. HTML 與 Java 混雜:閱讀困難,修改易破壞語法。
  2. 手動轉義:需自行呼叫 StringEscapeUtils.escapeHtml() 防 XSS,易遺漏。
  3. 日期格式化硬編碼:SimpleDateFormat 非線程安全,若宣告在類層級會有併發問題。
  4. URL 拼裝分散:request.getContextPath() 到處重複,維護成本高。
  5. 分頁邏輯耦合視圖:Controller 需傳遞更多輔助變數,或由 JSP 計算。

對比總結

維度JSTL 版Scriptlet 版
可讀性⭐⭐⭐⭐⭐⭐⭐
安全性自動轉義手動轉義
維護性前後端分離強耦合
效能標簽編譯優化即時編譯
學習曲線需學標簽庫純 Java 易上手

結論:新專案務必使用 JSTL(或 Thymeleaf、FreeMarker 等現代模板引擎);僅在維護十年以上遺留系統時接觸 Scriptlet。

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