本文針對初學者介紹 JSP 搭配 JSTL 標籤庫進行資料庫查詢與資料呈現的完整流程,並對比 ASP.NET 模式說明差異。
<sql:query> 查詢、<c:forEach> 迴圈輸出,開發速度較快,適合中小型專案或原型開發。jstl.jar 與 standard.jar(或 javax.servlet.jsp.jstl-api + jstl-impl)lib 目錄或專案 WEB-INF/lib<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<%@ taglib uri="https://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="https://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<!DOCTYPE html>
<html>
<head><title>JSP Load Demo</title></head>
<body>
<!-- 設定資料來源 -->
<sql:setDataSource var="ProjectDataBase"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://120.25.172.21:3306/ProjectDataBase?useUnicode=true&characterEncoding=utf8"
user="root" password="123456"/>
<!-- 執行查詢 -->
<sql:query dataSource="${ProjectDataBase}" var="result">
SELECT * FROM infoSheet LIMIT 0,15;
</sql:query>
<!-- 表格呈現 -->
<table border="1" width="100%">
<tr>
<th>ID</th><th>標題</th><th>內容</th><th>發布時間</th>
</tr>
<c:forEach var="row" items="${result.rows}">
<tr>
<td><c:out value="${row.id}"/></td>
<td><c:out value="${row.infoTitle}"/></td>
<td><c:out value="${row.infoContent}"/></td>
<td><c:out value="${row.publishTimes}"/></td>
</tr>
</c:forEach>
</table>
</body>
</html>
| 標籤 | 用途 |
|---|---|
<sql:setDataSource> | 定義資料庫連線參數,產生 DataSource 變數 |
<sql:query> | 執行 SELECT 查詢,結果存入 var 指定的變數(型別為 javax.servlet.jsp.jstl.sql.Result) |
${result.rows} | 取得查詢結果的 List<Map<String, Object>>,每筆資料為一個 Map |
<c:forEach> | 迭代集合,var 代表當前行 Map |
<c:out> | 輸出值並自動進行 HTML 轉義,防止 XSS |
