四個檔案構成簡易留言板:index.html(發表頁)、add_message.jsp(新增處理)、view_message.jsp(顯示列表)、資料表 message。
<form action="add_message.jsp" method="post">
姓名:<input name="name"><br>
E-mail:<input name="mail"><br>
主題:<input name="title"><br>
留言:<textarea name="content"></textarea><br>
<input type="submit" value="提交留言">
<a href="view_message.jsp">查看留言</a>
</form>
<%@ page import="java.sql.*" %>
<%
String name = request.getParameter("name");
String mail = request.getParameter("mail");
String title = request.getParameter("title");
String content = request.getParameter("content");
if (name == null || title == null || content == null || name.isEmpty() || title.isEmpty() || content.isEmpty()) {
out.println("必填欄位不能為空!");
} else {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:user_db", "insher", "insher");
PreparedStatement stm = con.prepareStatement("INSERT INTO message VALUES (?,?,?,?,?)");
stm.setString(1, title);
stm.setString(2, name);
stm.setString(3, mail.isEmpty() ? null : mail);
stm.setString(4, new Timestamp(System.currentTimeMillis()).toString());
stm.setString(5, content);
stm.executeUpdate();
con.close();
}
%>
<jsp:forward page="view_message.jsp" />
<%@ page import="java.sql.*" %>
<%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:user_db", "insher", "insher");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM message ORDER BY time DESC");
while (rs.next()) {
String title = rs.getString("title");
String name = rs.getString("name");
String mail = rs.getString("mail");
Timestamp time = rs.getTimestamp("time");
String content = rs.getString("content");
%>
<table><tr><td>主題:</td><td><%=title%></td></tr>
<tr><td>留言人:</td><td><%=name%></td><td>E-mail:</td><td><%=mail%></td></tr>
<tr><td>時間:</td><td><%=time%></td></tr>
<tr><td>內容:</td><td><%=content%></td></tr></table>
<hr>
<% } rs.close(); con.close(); %>
<a href="index.html">我要留言</a>
使用 ODBC 橋接器連接 SQL Server,展示完整 CRUD 流程。