• 沒有找到結果。

JSP 之 JDBC 实例二 留言簿

在文檔中 JDBC API 数据库编程实作教程 (頁 175-183)

Connection cn=DriverManager.getConnection("jdbc:odbc:bookDSN");

String str="INSERT INTO booked VALUES('"+name+"','"+email+"','"+instr+"')";

Statement st=cn.createStatement();

st.executeUpdate(str);

out.print("<P><center><h1>已经成功存入数据<h1></center>");

} %>

<p></p>

<center><a href="bookstore.jsp" title="返回主页">返回主页</a></center>

</body>

</html>

7.3.9 实例小结

网上书店为我们模拟了一个简单的JDBC 电子商务应用的雏形 因为 JSP 是使用 Java 编写程序 JSP 代码同样具有 Java 代码的特点和优势 从网上书店实现的过程中 可以看 出使用JSP 作为 JDBC Web 应用的实现手段 大大地扩展了 Java 在 Internet 方面的应用 为系统开发人员提供了一种新的选择

图7-24 留言簿

7.4

JSP 之 JDBC 实例二 留言簿

留言簿在Internet 中很常见 下面 我们使用 JDBC 和 JSP 技术 在中文版 Window ME 下使用JRun 3.0 服务器实现一个留言簿 我们要实现的留言簿主要具有留言 查看留言和 删除留言等三个功能 这三个功能分别由leaveword.jsp skimdata.jsp 和 deleteword.jsp 实现



主页由wordhome.jsp 实现 各个独立的功能通过主页有机联系在一起

7.4.1 主页 wordhome.jsp

留言簿主页实际效果如图7-24 所示

在该窗口中 单击 查看留言 链接可调用 skimdata.jsp 查看数据库中保存的所有留 言 几个文本框用于让客户留言 客户必须输入各项的详细内容 才可将留言保存到服务 器数据库中 单击 我要留言 按钮 将调用leaveword.jsp 保存留言

wordhome.jsp 源代码如下 例程 7-16 wordhome.jsp

<html>

<head>

<title>留言广场</title>

</head>

<body>

<center>

<%@ page contentType="text/html;charset=gb2312" %>

<h3>欢迎光临阿当留言广场 感谢你留下建议或问题</h3>

<table width="100%" border="0" cellpadding="0">

<tr>

<td align="right"><a href="wordhome.jsp" title="留言广场">留言广场</a></td>

<td align="center"> <---> </td>

<td align="left"><a href="skimdata.jsp" title="查看留言">查看留言</a></td>

</tr>

</table>

<hr>

<form name="buyform" action="leaveword.jsp" method="POST">

<table width="100%" border="0" cellpadding="0">

<tr>

<td align="right"><b>姓名 </b></td>

<td align="left"><input type="text" name="cName" SIZE="20" value="" required=""></td>

<td align="right"><B>Email 地址 </B> </td>

<td align="left"><input type="text" name="cEmail" SIZE="20" value=""></td>

</tr>

<tr><td align="right"><b>主题 </b></td><td colspan="3"><input type="text" name="cTopic"

SIZE="40" value=""></td></tr>

<tr><td colspan="4" align="center"><textarea name="cWords" rows="10" cols="80%"></textarea>

</td></tr>

</table>

<input type="submit" name="action" value="我要留言">



-</form></center>

</body>

</html>

7.4.2 保存留言 leaveword.jsp

单击 我要留言 按钮 将调用leaveword.jsp 保存留言 客户在主页中输入的留言信 息通过request 对象传递给 leaveword.jsp 在正确保存了留言后 将在浏览器中显示已保存 的数据和相关的提示信息 需要特别提醒读者的是多次提到中文处理问题 为了从request 对象获得正确的参数和正确地从数据库获得查询结果 一定不要在 leaveword.jsp 中使用

<%@ page contentType="text/html;charset=gb2312" %> 在 JRun 服务器下 当你在浏览

我们提供的源文件时 可通过选择浏览器中的 查看 编码 简体中文 便可

看到正常的页面

leaveword.jsp 源代码如下 例程 7-17 leaveword.jsp

<html>

<head><title>保存留言</title></head>

<body>

<center><h3>感谢你的留言</h3></center>

<hr>

<h4>你留下的信息如下 </h4>

<%@ page import="java.sql.*" %>

<%

String getDate=new java.util.Date().toString();

String getName=request.getParameter("cName");

String getEmail=request.getParameter("cEmail");

String getWords=request.getParameter("cWords");

String getTopic=request.getParameter("cTopic");

if(getName.length()<1){

out.print("请输入姓名");

}else{

if(getEmail.length()<3){

out.print("请输入正确的 Email");

} else{

if(getTopic.length()<1){

out.print("请输入主题");

} else{

if(getWords.length()<1){



out.print("没有留言");

} else{

out.print("<table>");

out.print("<tr><td align=\"right\">姓名 </td><td>");

out.print(getName);

out.print("</td></tr>");

out.print("<tr><td align=\"right\">Email </td><td>");

out.print(getEmail);

out.print("</td></tr>");

out.print("<tr><td align=\"right\">主题 </td><td>");

out.print(getTopic);

out.print("</td></tr>");

out.print("<tr><td valign=\"top\" align=\"right\">留言 </td><td>");

out.print(getWords);

out.print("</td></tr>");

out.print("<tr><td align=\"right\">日期 </td><td>");

out.print(getDate);

out.print("</td></tr></table>");

try{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Connection cn=DriverManager.getConnection("jdbc:odbc:wordsDSN");

String str="INSERT INTO words VALUES('"+getName+"','"+getDate+"','"+getEmail+"', '"+getTopic+"','"+getWords+"')";

Statement st=cn.createStatement();

st.executeUpdate(str);

st.close();

cn.close();

out.print("<center><h3>恭喜你 已经成功保存留言<h3></center>");

}

catch(Exception e){

out.print(e.getMessage());

} }}}}

%>

<hr>

<table width="100%" border="0" cellpadding="0" align="center">

<tr>

<td align="right"><a href="wordhome.jsp" title="留言广场">留言广场</a></td>

<td align="center"> <---> </td>



-<td align="left"><a href="skimdata.jsp" title="查看留言">查看留言</a></td>

</tr></table>

</body>

</html>

运行效果如图7-25 所示

图7-25 保存留言示例

7.4.3 查看留言 skimdata.jsp

为简单起见 也方便读者学习 我们没有将 skimdata.jsp 做得很复杂 只是简单地将 数据库中保存的所有留言读出来 然后在浏览器中显示 在浏览留言时 针对每一个客户 的留言提供一个 删除 按钮 该按钮用于调用deleteword.jsp 从数据库中删除对应的留

言记录

图7-26 显示当前留言簿中的部分内容

图7-26  留言簿查看示例 



skimdata.jsp 源代码如下 例程 7-18 leaveword.jsp

<html>

<head>

<title>查看留言</title>

</head>

<body>

<h2>留言广场留言</h2>

<hr>

<%@ page import="java.sql.*,java.util.Vector" %>

<%

try{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Connection cn=DriverManager.getConnection("jdbc:odbc:wordsDSN");

String str="SELECT * FROM words";

Statement st=cn.createStatement();

ResultSet rs=st.executeQuery(str);

String name,date,email,topic,words;

while(rs.next()){

name=rs.getString("name");

date=rs.getString("wdate");

email=rs.getString("email");

topic=rs.getString("topic");

words=rs.getString("words");

out.print("<table>");

out.print("<tr><td align=\"right\"><b>主题 </b></td><td colspan=\"3\" ><b>");

out.print(topic);

out.print("</b></td></tr>");

out.print("<tr><td align=\"right\">姓名 </td><td colspan=\"3\" >");

out.print(name);

out.print("</td></tr>");

out.print("<tr><td align=\"right\">Email </td><td colspan=\"3\" >");

out.print(email);

out.print("</td></tr>");

out.print("<tr><td valign=\"top\" align=\"right\">留言 </td><td colspan=\"3\" >");

out.print(words);

out.print("</td></tr>");

out.print("<tr><td align=\"right\">日期 </td><td>");

out.print(date);



-out.print("</td><form name=\"deleteform\" action=\"deleteword.jsp\" method=\"POST\">");

out.print("<td ><input type=\"hidden\" name=\"deletePara\" value=\""+date+"\"></td>");

out.print("<td align=\"right\"><input type=\"submit\" name=\"action\" value=\"删除\">");

out.print("</td></tr></form></table>");

out.print("<hr>");

} st.close();

cn.close();

}

catch(Exception e){

out.print(e.getMessage());

}

%>

</body>

</html>

7.4.4 删除留言 deleteword.jsp

删除留言利用客户保存留言时日期的唯一性 因为日期计算到秒 作为参照 在查看 留言时 如果单击相应的 删除 按钮 对应留言的日期通 过 request 对象传递给 deleteword.jsp 这里同样需要注意中文处理问题 当成功删除了相应留言后 客户可以看 到 浏 览 器 中 的 内 容 及 时 被 更 新 看 不 到 已 删 除 的 内 容 实 现 及 时 更 新 实 际 上 是 在 deleteword.jsp 中使用 response 对象将客户重新引导到查看留言页面 源代码中的语句

response.sendRedirect("http://localhost:8100/wordboards/skimdata.jsp");

用于完成这一功能

deleteword.jsp 源代码如下 例程 7-19 deleteword.jsp

<html>

<head>

<title>删除留言</title>

</head>

<body>

<%@ page import="java.sql.*" %>

<%

String para=request.getParameter("deletePara");

try{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Connection cn=DriverManager.getConnection("jdbc:odbc:wordsDSN");

String str="DELETE FROM words WHERE wdate like '"+para+"'";



Statement st=cn.createStatement();

st.executeUpdate(str);

st.close();

cn.close();

response.sendRedirect("http://localhost:8100/wordboards/skimdata.jsp");

}catch(Exception e){

out.print(e.getMessage());

} %>

</body>

</html>

7.4.5 实例小结

留言簿在Internet 的 Web 站点中非常常见 我们使用了 JSP 和 JDBC 来实现该留言簿 为读者提供了一种实现纯Java Web 数据库应用的模型 该留言簿是非常简单的 但从中可 以看到使用JSP 作为 JDBC Web 应用开发是一种非常好的手段



第 第 第

在文檔中 JDBC API 数据库编程实作教程 (頁 175-183)