Java+MyEclipse+Tomcat (六)详解Servlet和DAO数据库增删改查操作
? ? ? ??Java+MyEclipse+Tomcat (一)配置過程及jsp網(wǎng)站開發(fā)入門
? ? ? ?? Java+MyEclipse+Tomcat (二)配置Servlet及簡單實現(xiàn)表單提交
? ? ? ?? Java+MyEclipse+Tomcat (三)配置MySQL及查詢數(shù)據(jù)顯示在JSP網(wǎng)頁中
? ? ? ?? Java+MyEclipse+Tomcat (四)Servlet提交表單和數(shù)據(jù)庫操作
? ? ? ??Java+MyEclipse+Tomcat (五)DAO和Java Bean實現(xiàn)數(shù)據(jù)庫和界面分開操作
? ? ? ? 免費資源下載地址:
? ? ? ??http://download.csdn.net/detail/eastmount/8733385
? ? ? ? PS:這篇文章可以認為是對前面五篇文章的一系列總結(jié)和應(yīng)用,同時我認為理解該篇文章基本就能簡單實現(xiàn)一個基于數(shù)據(jù)庫操作的JSP網(wǎng)站,對你的課程項目或畢設(shè)有所幫助!但同時沒有涉及事務(wù)、觸發(fā)器、存儲過程、并發(fā)處理等數(shù)據(jù)庫知識,也沒有Struts、Hibernate、Spring框架知識,它還是屬于基礎(chǔ)性文章吧!希望對你有所幫助~
一. 項目結(jié)構(gòu)
? ? ? ? 該項目的結(jié)構(gòu)如下圖所示:
二. 數(shù)據(jù)庫初始化操作
? ? ? ? 打開MySQL,輸入默認超級root用戶的密碼,然后數(shù)據(jù)庫的操作如下代碼:
三. 簡單查詢操作DAO方法
? ? ? ? 新建Web Project,項目名為“TrainDatabase”,對火車車次數(shù)據(jù)庫的增刪改查。
? ? ? ? 運行效果如下圖所示:
? ? ? ? 主要是調(diào)用getConnection(url, userName, password)方法進行連接數(shù)據(jù)庫操作,數(shù)據(jù)庫的名稱為TrainManage,默認的連接對象為root,密碼為123456。同時定義兩個函數(shù)executeUpdate()執(zhí)行無參數(shù)的SQL語句操作和有參數(shù)的SQL語句操作。 package util;import java.sql.*; import com.mysql.jdbc.Driver;public class JDBCConnect {//獲取默認數(shù)據(jù)庫連接public static Connection getConnection() throws SQLException {return getConnection("ManageTrain", "root", "123456"); //數(shù)據(jù)庫名 默認用戶 密碼}//連接數(shù)據(jù)庫 參數(shù):數(shù)據(jù)庫名 root登錄名 密碼public static Connection getConnection(String dbName, String userName,String password) throws SQLException {String url = "jdbc:mysql://localhost:3306/" + dbName + "?characterEncoding=utf-8";//連接MySQL"com.mysql.jdbc.Driver"DriverManager.registerDriver(new Driver());return DriverManager.getConnection(url, userName, password);}//設(shè)置 PreparedStatement 參數(shù) public static void setParams(PreparedStatement preStmt, Object... params)throws SQLException {if (params == null || params.length == 0)return;for (int i = 1; i <= params.length; i++) {Object param = params[i - 1];if (param == null) {preStmt.setNull(i, Types.NULL);} else if (param instanceof Integer) {preStmt.setInt(i, (Integer) param);} else if (param instanceof String) {preStmt.setString(i, (String) param);} else if (param instanceof Double) {preStmt.setDouble(i, (Double) param);} else if (param instanceof Long) {preStmt.setDouble(i, (Long) param);} else if (param instanceof Timestamp) {preStmt.setTimestamp(i, (Timestamp) param);} else if (param instanceof Boolean) {preStmt.setBoolean(i, (Boolean) param);} else if (param instanceof Date) {preStmt.setDate(i, (Date) param);}}}//執(zhí)行 SQL,返回影響的行數(shù) 異常處理public static int executeUpdate(String sql) throws SQLException {return executeUpdate(sql, new Object[] {});}//帶參數(shù)執(zhí)行SQL,返回影響的行數(shù) 異常處理public static int executeUpdate(String sql, Object... params)throws SQLException {Connection conn = null;PreparedStatement preStmt = null;try {conn = getConnection();preStmt = conn.prepareStatement(sql);setParams(preStmt, params);return preStmt.executeUpdate(); //執(zhí)行SQL操作} finally {if (preStmt != null)preStmt.close();if (conn != null)conn.close();}} }
? ? ? ?2.在src下新建文件夾bean,然后添加類TrainManage.java。代碼如下:
package bean;public class TrainManage {private String trainid; //車次private String start; //出發(fā)地private String end; //目的地private String time; //行車時間private float yzprice; //硬座票價private float rzprice; //軟座票價private float ywprice; //硬臥票價private float rwprice; //軟臥票價private String root; //車輛路線 public String getTrainid() { return trainid; }public String getStart() { return start; }public String getEnd() { return end; }public String getTime() { return time; }public Float getYzprice() { return yzprice; }public Float getRzprice() { return rzprice; }public Float getYwprice() { return ywprice; }public Float getRwprice() { return rwprice; }public String getRoot() { return root; }public void setTrainid(String str) { this.trainid = str; }public void setStart(String str) { this.start = str; }public void setEnd(String str) { this.end = str; }public void setTime(String str) { this.time = str; }public void setYzprice(Float price) { this.yzprice = price; }public void setRzprice(Float price) { this.rzprice = price; }public void setYwprice(Float price) { this.ywprice = price; }public void setRwprice(Float price) { this.rwprice = price; }public void setRoot(String str) { this.root = str; } } ? ? ? ??3.在src下新建文件夾DAO,然后添加類StudentDAO.java。代碼如下:? ? ? ? 通常DAO(Data Access Object)數(shù)據(jù)訪問對象是負責與數(shù)據(jù)庫連接,主要功能執(zhí)行對數(shù)據(jù)表的CUDR操作(創(chuàng)建、更新、刪除、查詢)。每個數(shù)據(jù)表都定義一個DAO接口或類實現(xiàn),實現(xiàn)對此表的讀寫操作。換句話說,就是在域名.項目.模塊.dao文件夾下創(chuàng)建個DAO類即可。
package DAO;import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import bean.TrainManage; import util.JDBCConnect;public class TrainManageDAO {//插入車次public static int insert(TrainManage train) throws Exception {String sql = "INSERT INTO TrainManage (trainid,start,end,time,yzprice,rzprice,ywprice,rwprice,root) " +"VALUES ('" + train.getTrainid() +"','"+ train.getStart() +"','"+ train.getEnd() +"','"+ train.getTime() +"','"+ train.getYzprice() +"','"+ train.getRzprice() +"','"+ train.getYwprice() +"','"+ train.getRwprice() +"','"+ train.getRoot() +"');";System.out.println(sql);return JDBCConnect.executeUpdate(sql);/*** 總是報錯 No value specified for parameter 5* 很多原因是 insert into train (?,?,?) values (?,?,?) 前面不應(yīng)該是問號 * 但我的懷疑是參數(shù)過多使用executeUpdate(sql,?,?,?...)方法是錯誤* * String sql = "INSERT INTO TrainManage (trainid,start,end,time,yzprice,rzprice,ywprice,rwprice,root) VALUES (?,?,?,?,?,?,?,?,?);";* System.out.println(sql);* return JDBCConnect.executeUpdate(sql, train.getTrainid(), train.getStart(), train.getEnd(),* train.getTime(), train.getYzprice(), train.getRzprice(), train.getYwprice(), * train.getRwprice(), train.getRoot());*/}//更新車次public static int update(TrainManage train) throws Exception {String sql = "UPDATE TrainManage SET start = ?, end = ? WHERE trainid = ? ";return JDBCConnect.executeUpdate(sql, train.getStart(), train.getEnd(), train.getTrainid());}//刪除操作public static int delete(String id) throws Exception {String sql = "DELETE FROM TrainManage WHERE trainid = ? ";return JDBCConnect.executeUpdate(sql, id);}//查找記錄 某車次public static TrainManage find(String id) throws Exception {String sql = "SELECT * FROM TrainManage WHERE trainid = ? ";Connection conn = null;PreparedStatement preStmt = null;ResultSet rs = null;try {//鏈接數(shù)據(jù)庫執(zhí)行SQL語句conn = JDBCConnect.getConnection(); //連接默認數(shù)據(jù)庫preStmt = conn.prepareStatement(sql);preStmt.setString(1, id);rs = preStmt.executeQuery();//獲取查詢結(jié)果if (rs.next()) {TrainManage train = new TrainManage();train.setTrainid(rs.getString("trainid"));train.setStart(rs.getString("start"));train.setEnd(rs.getString("end"));train.setTime(rs.getString("time"));train.setYzprice(rs.getFloat("yzprice"));train.setYwprice(rs.getFloat("ywprice"));train.setRzprice(rs.getFloat("rzprice"));train.setRwprice(rs.getFloat("rwprice"));train.setRoot(rs.getString("root"));return train;} else {return null;}} finally { //依次關(guān)閉 記錄集 聲明 連接對象if (rs != null)rs.close();if (preStmt != null)preStmt.close();if (conn != null)conn.close();}}//查找記錄 起始站 達到站public static List<TrainManage> findStartEnd(String start,String end) throws Exception {List<TrainManage> list = new ArrayList<TrainManage>();String sql = null; Connection conn = null;Statement statement = null;ResultSet rs = null;//判斷SQL語句if(start==""&&end=="") {sql = "SELECT * FROM TrainManage;";} else if(end=="") {sql = "SELECT * FROM TrainManage WHERE start = '"+ start + "';";} else if(start=="") {sql = "SELECT * FROM TrainManage WHERE end = '"+ end + "';";} else {sql = "SELECT * FROM TrainManage WHERE start = '" + start + "' and end = '"+ end +"';"; }//執(zhí)行try {//鏈接數(shù)據(jù)庫執(zhí)行SQL語句conn = JDBCConnect.getConnection(); //連接默認數(shù)據(jù)庫statement = conn.createStatement();System.out.println(start+" "+end);System.out.println(sql);rs = statement.executeQuery(sql);//獲取查詢結(jié)果while(rs.next()) {TrainManage train = new TrainManage();train.setTrainid(rs.getString("trainid"));train.setStart(rs.getString("start"));train.setEnd(rs.getString("end"));train.setTime(rs.getString("time"));train.setYzprice(rs.getFloat("yzprice"));train.setYwprice(rs.getFloat("ywprice"));train.setRzprice(rs.getFloat("rzprice"));train.setRwprice(rs.getFloat("rwprice"));train.setRoot(rs.getString("root"));list.add(train);}} catch (Exception e) {System.out.println("錯誤:"+e.getMessage()); }finally { //依次關(guān)閉 記錄集 聲明 連接對象if (rs != null)rs.close();if (statement != null)statement.close();if (conn != null)conn.close();}return list;}//查詢所有車次信息public static List<TrainManage> listStudents() throws Exception {List<TrainManage> list = new ArrayList<TrainManage>();String sql = "SELECT * FROM TrainManage";Connection conn = null;PreparedStatement preStmt = null;ResultSet rs = null;try {conn = JDBCConnect.getConnection();preStmt = conn.prepareStatement(sql);rs = preStmt.executeQuery();while (rs.next()) {//設(shè)置數(shù)據(jù)庫中表參數(shù) 否則報錯java.sql.SQLException: Column 'id' not found.TrainManage train = new TrainManage();train.setTrainid(rs.getString("trainid")); train.setStart(rs.getString("start"));train.setEnd(rs.getString("end"));train.setTime(rs.getString("time"));train.setYzprice(rs.getFloat("yzprice"));train.setYwprice(rs.getFloat("ywprice"));train.setRzprice(rs.getFloat("rzprice"));train.setRwprice(rs.getFloat("rwprice"));train.setRoot(rs.getString("root"));list.add(train);} } finally {if (rs != null)rs.close();if (preStmt != null)preStmt.close();if (conn != null)conn.close();}return list;} }? ? ? ? 4.在WebRoot文件夾下創(chuàng)建trainManage.jsp文件,頁面布局代碼如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <jsp:directive.page import="DAO.TrainManageDAO"/> <jsp:directive.page import="java.util.List"/> <% List trainList = TrainManageDAO.listStudents(); request.setAttribute("trainList", trainList); %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>火車卡訂票系統(tǒng)管理系統(tǒng)</title></head><body><div align="center"><div class="trainCSS"><table width="1024" height="150" cellpadding="0" cellspacing="0"><tr><td colspan="2"><img src="./image/logo.jpg" alt="logo" width="1024" height="149"> </td></tr> <tr><td width="205" bgcolor="#b7d7ec"><p align="center"><script language=JavaScript>today=new Date();function initArray(){this.length=initArray.arguments.length;for(var i=0;i<this.length;i++)this[i+1]=initArray.arguments[i]; }var d=new initArray("星期日","星期一","星期二","星期三","星期四", "星期五","星期六");document.write("<font color=##ff0000 style='font-size:12pt;font-family: 宋體'> ",today.getYear()+1900,"年",today.getMonth()+1,"月",today.getDate(),"日 ",d[today.getDay()+1],"</font>" );</script> </p> </td> <td width="819" bgcolor="#b7d7ec"><marquee direction="left" οnmοuseοver=this.stop() οnmοuseοut=this.start() scrollAmount=3 scrollDelay=100><FONT style="FONT-SIZE: 18px"color=blue>歡迎使用火車票訂票系統(tǒng)管理系統(tǒng) ,如有不足,敬請指導!</FONT></marquee></td></tr><tr><td height="12"></td></tr></table></div><div class="trainCSS"><table border="0" width="1024" cellpadding="0" cellspacing="0"><tr><td width="130" bgcolor="#dfeaf1" valign="top"><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td height="10"></td></tr><tr><td align="center"> <font size="3" color="blue">管理員:xxx,歡迎您!</font></td></tr><tr><td height="10"></td></tr><tr><td align="center"><p><a href="trainManage.jsp"><img src="image/ccxxgl-xz.jpg" width="194" height="37" border="0"></a><td>?</td></tr><tr><td height="10"></td></tr><tr><td align="center"><a href="buyManage.jsp"><img src="image/dpgl.jpg" width="194" height="37" border="0"></a></td></tr><tr><td height="10"></td></tr><tr><td align="center"><a href="peopleManage.jsp"><img src="image/hygl.jpg" width="194" height="37" border="0"></a></td></tr> <tr><td height="10"></td></tr><tr><td align="center"><a href="serverManage.jsp"> <img src="image/spqktj.jpg" width="194" height="37" border="0"></a></td></tr><tr><td height="10"></td></tr><tr><td align="center"><a href="infoManage.jsp"><img src="image/lygl.jpg" width="194" height="37" border="0"></a> </td></tr><tr><td height="10"></td></tr><tr><td align="center"><a href="exitManage.jsp"><img src="image/exit.jpg" width="194" height="37" border="0"></a> </td></tr></table></td><td><table width="100%" height="350" border="1" cellpadding="0" cellspacing="0" bgcolor="#dfeaf1"><tr><TD align="center" valign="top" style="padding-left:20px;padding-top:10px;"><div align="left">當前位置: <a href="homepage.jsp">首頁</a> > 車次信息管理</div><br /><br /><form action="trainManageSelect.jsp" method="post"><!-- html:form為struts -->出發(fā)地: <input type="text" id="start" name="start" style='font-size:18px' width=200/>到達地: <input type="text" id="end" name="end" style='font-size:18px'/><br /><br /><input type="submit" name="Select" value="查詢車次" style='font-size:18px'/><a href="trainManageInsert.jsp" style='font-size:20px'>插入車次</a></form><table border="2" bordercolor="#12A0F5"> <tr align=center><td>火車列次</td><td>出發(fā)地</td><td>目的地</td><td>行車時間</td><td>硬座票價</td><td>軟座票價</td><td>硬臥票價</td><td>軟臥票價</td><td>車輛路線</td><td>信息操作</td></tr><c:forEach items="${trainList}" var="train"> <tr align=center> <td>${train.trainid}</td> <td>${train.start}</td> <td>${train.end}</td> <td>${train.time}</td> <td>${train.yzprice}</td> <td>${train.rzprice}</td> <td>${train.ywprice}</td> <td>${train.rwprice}</td> <td><A href="trainManageDetail.jsp?action=see&id=${train.trainid}">查看</A></td> <td> <a href="trainManageUpdate.jsp?action=edit&id=${train.trainid}">修改</a> <a href="trainManageDelete.jsp?action=del&id=${train.trainid}" οnclick="return confirm('確定刪除?')">刪除</a> </td> </tr> </c:forEach></table><br /><br /> </TD></tr></table></td></tr><tr><td height="20"></td></tr></table></div> <div class="div"><!-- 底部版權(quán)所有界面 --><TABLE class=wrapper border=0 cellSpacing=0 cellPadding=0 width="100%" align=center><TBODY><TR><TD style="LINE-HEIGHT: 100%" align="center"> <HR style="WIDTH: 96%; HEIGHT: 4px; COLOR: #02457c"><font size="2"> <SCRIPT language=javascript src=""></SCRIPT><!-- target=_blank開啟新的網(wǎng)頁 --><BR><A href="aboutme.jsp">關(guān)于我們</A> | <A href="wzsm.jsp" >網(wǎng)站聲明</A> <BR>版權(quán)所有©2014-2015 北京郵電大學 Eastmount <BR>京ICP備10009636號 </font></TD></TR></TBODY></TABLE></div></div></body> </html> ? ? ? ? 5在WebRoot路徑下創(chuàng)建image文件夾,并添加jsp中需要使用的圖片資源。? ? ? ? 6.在WebRoot/WEB-INF/lib文件夾中添加mysql-connector-java-5.1.15-bin.jar文件,訪問MySQL數(shù)據(jù)庫需要用到。
? ? ? ? 7.右鍵項目,Run As在Tomcat 7.x下即可運行,效果如前圖所示。
? ? ? ? 其中JSP文件與DAO的交互核心代碼如下:
<jsp:directive.page import="DAO.TrainManageDAO"/> <jsp:directive.page import="java.util.List"/> <% List trainList = TrainManageDAO.listStudents(); request.setAttribute("trainList", trainList); %> ... <table border="2" bordercolor="#12A0F5">? <tr align=center><td>火車列次</td><td>出發(fā)地</td><td>目的地</td><td>行車時間</td><td>硬座票價</td><td>軟座票價</td><td>硬臥票價</td><td>軟臥票價</td><td>車輛路線</td><td>信息操作</td> </tr> <c:forEach items="${trainList}" var="train"> ? <tr align=center> ?<td>${train.trainid}</td> ?<td>${train.start}</td> ?<td>${train.end}</td> ?<td>${train.time}</td> ?<td>${train.yzprice}</td> ?<td>${train.rzprice}</td> ?<td>${train.ywprice}</td> ?<td>${train.rwprice}</td>?<td><A href="trainManageDetail.jsp?action=see&id=${train.trainid}">查看</A></td>?<td> ?<a href="trainManageUpdate.jsp?action=edit&id=${train.trainid}">修改</a> ?<a href="trainManageDelete.jsp?action=del&id=${train.trainid}" ??οnclick="return confirm('確定刪除?')">刪除</a> ?</td> ? </tr> ? </c:forEach> </table>
四. 關(guān)鍵字查詢操作
? ? ? ? 關(guān)鍵字查詢運行截圖如下圖所示:
? ? ? ? 該步驟只需要在WebRoot文件夾下創(chuàng)建trainManageSelect.jsp即可,代碼如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <jsp:directive.page import="DAO.TrainManageDAO"/> <jsp:directive.page import="bean.TrainManage"/> <jsp:directive.page import="java.util.List"/> <% request.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");String mstart = request.getParameter("start");String mend = request.getParameter("end");List<TrainManage> trainList = TrainManageDAO.findStartEnd(mstart,mend); //List trainList = TrainManageDAO.listStudents(); request.setAttribute("trainList", trainList); %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>火車卡訂票系統(tǒng)管理系統(tǒng)</title></head><body><div align="center"><div class="trainCSS"><table width="1024" height="150" cellpadding="0" cellspacing="0"><tr><td colspan="2"><img src="./image/logo.jpg" alt="logo" width="1024" height="149"> </td></tr> <tr><td width="205" bgcolor="#b7d7ec"><p align="center"><script language=JavaScript>today=new Date();function initArray(){this.length=initArray.arguments.length;for(var i=0;i<this.length;i++)this[i+1]=initArray.arguments[i]; }var d=new initArray("星期日","星期一","星期二","星期三","星期四", "星期五","星期六");document.write("<font color=##ff0000 style='font-size:12pt;font-family: 宋體'> ",today.getYear()+1900,"年",today.getMonth()+1,"月",today.getDate(),"日 ",d[today.getDay()+1],"</font>" );</script> </p> </td> <td width="819" bgcolor="#b7d7ec"><marquee direction="left" οnmοuseοver=this.stop() οnmοuseοut=this.start() scrollAmount=3 scrollDelay=100><FONT style="FONT-SIZE: 18px"color=blue>歡迎使用火車票訂票系統(tǒng)管理系統(tǒng) ,如有不足,敬請指導!</FONT></marquee></td></tr><tr><td height="12"></td></tr></table></div><div class="trainCSS"><table border="0" width="1024" cellpadding="0" cellspacing="0"><tr><td width="130" bgcolor="#dfeaf1" valign="top"><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td height="10"></td></tr><tr><td align="center"> <font size="3" color="blue">管理員:xxx,歡迎您!</font></td></tr><tr><td height="10"></td></tr><tr><td align="center"><p><a href="trainManage.jsp"><img src="image/ccxxgl-xz.jpg" width="194" height="37" border="0"></a><td>?</td></tr><tr><td height="10"></td></tr><tr><td align="center"><a href="buyManage.jsp"><img src="image/dpgl.jpg" width="194" height="37" border="0"></a></td></tr><tr><td height="10"></td></tr><tr><td align="center"><a href="peopleManage.jsp"><img src="image/hygl.jpg" width="194" height="37" border="0"></a></td></tr> <tr><td height="10"></td></tr><tr><td align="center"><a href="serverManage.jsp"> <img src="image/spqktj.jpg" width="194" height="37" border="0"></a></td></tr><tr><td height="10"></td></tr><tr><td align="center"><a href="infoManage.jsp"><img src="image/lygl.jpg" width="194" height="37" border="0"></a> </td></tr><tr><td height="10"></td></tr><tr><td align="center"><a href="exitManage.jsp"><img src="image/exit.jpg" width="194" height="37" border="0"></a> </td></tr></table></td><td><table width="100%" height="350" border="1" cellpadding="0" cellspacing="0" bgcolor="#dfeaf1"><tr><TD align="center" valign="top" style="padding-left:20px;padding-top:10px;"><div align="left">當前位置: <a href="homepage.jsp">首頁</a> > 車次信息管理</div><br /><br /><form action="trainManageSelect.jsp" method="post"><!-- html:form為struts -->出發(fā)地: <input type="text" id="start" name="start" style='font-size:18px' width=200/>到達地: <input type="text" id="end" name="end" style='font-size:18px'/><br /><br /><input type="submit" name="Select" value="查詢車次" style='font-size:18px'/><a href="trainManageInsert.jsp" style='font-size:20px'>插入車次</a></form><table border="2" bordercolor="#12A0F5"> <tr align=center><td>火車列次</td><td>出發(fā)地</td><td>目的地</td><td>行車時間</td><td>硬座票價</td><td>軟座票價</td><td>硬臥票價</td><td>軟臥票價</td><td>車輛路線</td><td>信息操作</td></tr><c:forEach items="${trainList}" var="train"> <tr align=center> <td>${train.trainid}</td> <td>${train.start}</td> <td>${train.end}</td> <td>${train.time}</td> <td>${train.yzprice}</td> <td>${train.rzprice}</td> <td>${train.ywprice}</td> <td>${train.rwprice}</td> <td><A href="trainManageDetail.jsp?action=see&id=${train.trainid}">查看</A></td> <td> <a href="trainManageUpdate.jsp?action=edit&id=${train.trainid}">修改</a> <a href="trainManageDelete.jsp?action=del&id=${train.trainid}" οnclick="return confirm('確定刪除?')">刪除</a> </td> </tr> </c:forEach></table><br /><br /> </TD></tr></table></td></tr><tr><td height="20"></td></tr></table></div> <div class="div"><!-- 底部版權(quán)所有界面 --><TABLE class=wrapper border=0 cellSpacing=0 cellPadding=0 width="100%" align=center><TBODY><TR><TD style="LINE-HEIGHT: 100%" align="center"> <HR style="WIDTH: 96%; HEIGHT: 4px; COLOR: #02457c"><font size="2"> <SCRIPT language=javascript src=""></SCRIPT><!-- target=_blank開啟新的網(wǎng)頁 --><BR><A href="aboutme.jsp">關(guān)于我們</A> | <A href="wzsm.jsp" >網(wǎng)站聲明</A> <BR>版權(quán)所有©2014-2015 北京郵電大學 Eastmount <BR>京ICP備10009636號 </font></TD></TR></TBODY></TABLE></div></div></body> </html>? ? ? ? 調(diào)用的trainManageDAO.java中的函數(shù)findStartEnd(String start,String end)如下,它如果不輸入則進行所有查找,也支持單方面出發(fā)或到達查找:
//查找記錄 某車次public static List<TrainManage> findStartEnd(String start,String end) throws Exception {List<TrainManage> list = new ArrayList<TrainManage>();String sql = null; Connection conn = null;Statement statement = null;ResultSet rs = null;//判斷SQL語句if(start==""&&end=="") {sql = "SELECT * FROM TrainManage;";} else if(end=="") {sql = "SELECT * FROM TrainManage WHERE start = '"+ start + "';";} else if(start=="") {sql = "SELECT * FROM TrainManage WHERE end = '"+ end + "';";} else {sql = "SELECT * FROM TrainManage WHERE start = '" + start + "' and end = '"+ end +"';"; }//執(zhí)行try {//鏈接數(shù)據(jù)庫執(zhí)行SQL語句conn = JDBCConnect.getConnection(); //連接默認數(shù)據(jù)庫statement = conn.createStatement();System.out.println(start+" "+end);System.out.println(sql);rs = statement.executeQuery(sql);//獲取查詢結(jié)果while(rs.next()) {TrainManage train = new TrainManage();train.setTrainid(rs.getString("trainid"));train.setStart(rs.getString("start"));train.setEnd(rs.getString("end"));train.setTime(rs.getString("time"));train.setYzprice(rs.getFloat("yzprice"));train.setYwprice(rs.getFloat("ywprice"));train.setRzprice(rs.getFloat("rzprice"));train.setRwprice(rs.getFloat("rwprice"));train.setRoot(rs.getString("root"));list.add(train);}} catch (Exception e) {System.out.println("錯誤:"+e.getMessage()); }finally { //依次關(guān)閉 記錄集 聲明 連接對象if (rs != null)rs.close();if (statement != null)statement.close();if (conn != null)conn.close();}return list;}? ? ? ? 其中核心步驟如下:
? ? ? ? 1.在trainManage.jsp提交POST表單出發(fā)地(<input?id="start")和到達地(<input?id="end"),提交給trainManageSelect.jsp;
? ? ? ? 2.在trainManageSelect.jsp中通過獲取出發(fā)地和到達地,并執(zhí)行DAO中的TrainManageDAO.java中關(guān)鍵字查找函數(shù):
? ? ? ? String mstart = request.getParameter("start");
? ? ? ? String mend = request.getParameter("end");
? ? ? ? List<TrainManage> trainList = TrainManageDAO.findStartEnd(mstart,mend);?
? ? ? ? request.setAttribute("trainList", trainList);
? ? ? ? 3.在JSP中通過EL循環(huán)顯示結(jié)果如下:
? ? ? ? <c:forEach items="${trainList}" var="train"> ?
? ? ? ? ? ? <tr align=center> ?
? ? ? ? ? ? ? ? <td>${train.trainid}</td>?
? ? ? ? ? ? ? ? <td>${train.start}</td>
? ? ? ? ? ? ? ? ?...
? ? ? ? ? ? </tr>
? ? ? ? </c:forEach>
? ? ? ? PS:同時在這過程中你會遇到執(zhí)行關(guān)鍵字中文查詢時顯示亂碼。
? ? ? ? 在trainManageSelect.java文件中通過函數(shù)findStartEnd(start,end)打樁輸出提交表單"北京 長沙"如下所示:
? ? ? ?而且我的服務(wù)器、MySQL、JSP、URL3306地址中都設(shè)置了UTF-8編碼方式,最終解決有兩個方面:
? ? ? ?第一個方面是在進行SQL查找時,我最初使用的第一種方法核心代碼:
String sql = "SELECT * FROM TrainManage WHERE start = ? and end = ? ;"; Connection conn = JDBCConnect.getConnection(); //連接默認數(shù)據(jù)庫 PreparedStatement preStmt = conn.prepareStatement(sql); preStmt.setString(1, start); preStmt.setString(2, end); ResultSet rs = preStmt.executeQuery();? ? ? ? 但是在查詢英文Beijing => Guizhou 時能正確顯示,而中文就沒有結(jié)果,后改為帶引號("'"+string+"'")的參數(shù)方式,核心代碼如下:
String sql = "SELECT * FROM TrainManage WHERE start = '" + start + "' and end = '"+ end +"';"; Connection conn = JDBCConnect.getConnection(); //連接默認數(shù)據(jù)庫 Statement statement = conn.createStatement(); ResultSet rs = statement.executeQuery(sql); while(rs.next()){...}? ? ? ? 后來使用該方法仍然存在亂碼,但是這次我發(fā)現(xiàn)了原因,在form提交表單時采用Get方法就會出現(xiàn)中文亂碼,雖然URL中顯示的是:
? ? ? ??http://localhost:8080/TrainDatabase/trainManageSelect.jsp?start=北京&end=長沙&sumbit=提交
? ? ? ? 但是可能URL轉(zhuǎn)String出現(xiàn)亂碼的,改為POST即可實現(xiàn)正常查詢,顯示正常中文。
? ? ? ? 注意:前提是我的所有編碼字符集都統(tǒng)一為UTF-8。
五. 插入操作調(diào)用Servlet
? ? ? ? 該部分運行截圖如下圖所示:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ page session = "true" %> <jsp:directive.page import="DAO.TrainManageDAO"/> <jsp:directive.page import="bean.TrainManage"/> <jsp:directive.page import="java.util.List"/> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>火車卡訂票系統(tǒng)管理系統(tǒng)</title></head><body><div align="center"><div class="trainCSS"><table width="1024" height="150" cellpadding="0" cellspacing="0"><tr><td colspan="2"><img src="./image/logo.jpg" alt="logo" width="1024" height="149"> </td></tr> <tr><td width="205" bgcolor="#b7d7ec"><p align="center"><script language=JavaScript>today=new Date();function initArray(){this.length=initArray.arguments.length;for(var i=0;i<this.length;i++)this[i+1]=initArray.arguments[i]; }var d=new initArray("星期日","星期一","星期二","星期三","星期四", "星期五","星期六");document.write("<font color=##ff0000 style='font-size:12pt;font-family: 宋體'> ",today.getYear()+1900,"年",today.getMonth()+1,"月",today.getDate(),"日 ",d[today.getDay()+1],"</font>" );</script> </p> </td> <td width="819" bgcolor="#b7d7ec"><marquee direction="left" οnmοuseοver=this.stop() οnmοuseοut=this.start() scrollAmount=3 scrollDelay=100><FONT style="FONT-SIZE: 18px"color=blue>歡迎使用火車票訂票系統(tǒng)管理系統(tǒng) ,如有不足,敬請指導!</FONT></marquee></td></tr><tr><td height="12"></td></tr></table></div><div class="trainCSS"><table border="0" width="1024" cellpadding="0" cellspacing="0"><tr><td width="130" bgcolor="#dfeaf1" valign="top"><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td height="10"></td></tr><tr><td align="center"> <font size="3" color="blue">管理員:xxx,歡迎您!</font></td></tr><tr><td height="10"></td></tr><tr><td align="center"><p><a href="trainManage.jsp"><img src="image/ccxxgl-xz.jpg" width="194" height="37" border="0"></a><td>?</td></tr><tr><td height="10"></td></tr><tr><td align="center"><a href="buyManage.jsp"><img src="image/dpgl.jpg" width="194" height="37" border="0"></a></td></tr><tr><td height="10"></td></tr><tr><td align="center"><a href="peopleManage.jsp"><img src="image/hygl.jpg" width="194" height="37" border="0"></a></td></tr> <tr><td height="10"></td></tr><tr><td align="center"><a href="serverManage.jsp"> <img src="image/spqktj.jpg" width="194" height="37" border="0"></a></td></tr><tr><td height="10"></td></tr><tr><td align="center"><a href="infoManage.jsp"><img src="image/lygl.jpg" width="194" height="37" border="0"></a> </td></tr><tr><td height="10"></td></tr><tr><td align="center"><a href="exitManage.jsp"><img src="image/exit.jpg" width="194" height="37" border="0"></a> </td></tr></table></td><td><table width="100%" height="350" border="1" cellpadding="0" cellspacing="0" bgcolor="#dfeaf1"><tr><TD align="center" valign="top" style="padding-left:20px;padding-top:10px;"><div align="left">當前位置: <a href="homepage.jsp">首頁</a> > <a href="trainManage.jsp">車次信息管理</a> > 插入車次</div><br /><br /><form action="/TrainDatabase/servlet/InsertTrainAction" method="post"><table border="1" bordercolor="#12A0F5" align=center> <tr><td>火車車次:</td><td><input type="text" id="trainid" name="trainid" style='font-size:18px' width=200/></td></tr><tr><td>出發(fā)地:</td><td><input type="text" id="start" name="start" style='font-size:18px' width=200/></td></tr><tr><td>到達地:</td><td><input type="text" id="end" name="end" style='font-size:18px'/></td></tr><tr><td>行車時間:</td><td><input type="text" id="time" name="time" style='font-size:18px'/></td></tr><tr><td>硬座票價:</td><td><input type="text" id="yzprice" name="yzprice" style='font-size:18px'/></td></tr><tr><td>軟座票價:</td><td><input type="text" id="rzprice" name="rzprice" style='font-size:18px'/></td></tr><tr><td>硬臥票價:</td><td><input type="text" id="ywprice" name="ywprice" style='font-size:18px'/></td></tr><tr><td>軟臥票價:</td><td><input type="text" id="rwprice" name="rwprice" style='font-size:18px'/></td></tr><tr><td>車輛路線:</td><td><textarea id="root" name="root" rows="5" style="width:300px;font-size:18px"></textarea> </td></tr><tr><td colspan=2 align=center><input type="submit" name="Submit" value="提交" style='font-size:18px' width=200/></td></tr></table></form><br /><br /> </TD></tr></table></td></tr><tr><td height="20"></td></tr></table></div><div class="div"><!-- 底部版權(quán)所有界面 --><TABLE class=wrapper border=0 cellSpacing=0 cellPadding=0 width="100%" align=center><TBODY><TR><TD style="LINE-HEIGHT: 100%" align="center"> <HR style="WIDTH: 96%; HEIGHT: 4px; COLOR: #02457c"><font size="2"> <SCRIPT language=javascript src=""></SCRIPT><!-- target=_blank開啟新的網(wǎng)頁 --><BR><A href="aboutme.jsp">關(guān)于我們</A> | <A href="wzsm.jsp" >網(wǎng)站聲明</A> <BR>版權(quán)所有©2014-2015 北京郵電大學 Eastmount<BR>京ICP備10009636號 </font></TD></TR></TBODY></TABLE></div></div></body> </html> ? ? ? ?? 該方法不同于前面的,它是通過Servlet實現(xiàn)的。主要是在采用JSP調(diào)用DAO中插入操作總是失敗,其流程如下:
? ? ? ? 1.點擊"插入車次"通過超鏈接到trainManageInsert.jsp,然后通過表單POST提交到Java文件servlet;
? ? ? ? <form action="/TrainDatabase/servlet/InsertTrainAction" method="post">
? ? ? ? 2.在InsertTrainAction.java中通過doPost方法獲取提交的表單參數(shù),再調(diào)用TrainManageDAO.insert(train)插入數(shù)據(jù)。最后通過response.sendRedirect重定向到管理頁面。
? ? ? ??注意:在插入過程中我也是采用"'"+ name +"'"的方式,而不是?來添加參數(shù),否則總報錯,詳見代碼trainManageDAO.java函數(shù)insert(TrainManage train)。
六. 刪除操作
? ? ? ? 運行效果如下圖所示,點擊刪除后彈出提示框“確定”后刪除:
? ? ? ? 同時在刪除后,通過JavaScript實現(xiàn)5秒后返回管理界面的效果。(因為在PHP網(wǎng)站中我常用這個功能,覺得有意思在JSP中就加入了該功能) ? ? ? ? 在WebRoot下創(chuàng)建trainManageDelete.jsp文件實現(xiàn)刪除操作,代碼如下: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ page session = "true" %> <jsp:directive.page import="DAO.TrainManageDAO"/> <jsp:directive.page import="bean.TrainManage"/> <jsp:directive.page import="java.util.List"/> <%String action = request.getParameter("action");String id = request.getParameter("id");if(id == null || id==""){ out.println("沒有選中刪除的車次"); return; }if("del".equals(action)){int isDelete = TrainManageDAO.delete(id); request.setAttribute("isDelete", isDelete); } %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>火車卡訂票系統(tǒng)管理系統(tǒng)</title></head><body><div align="center"><div class="trainCSS"><table width="1024" height="150" cellpadding="0" cellspacing="0"><tr><td colspan="2"><img src="./image/logo.jpg" alt="logo" width="1024" height="149"> </td></tr> <tr><td width="205" bgcolor="#b7d7ec"><p align="center"><script language=JavaScript>today=new Date();function initArray(){this.length=initArray.arguments.length;for(var i=0;i<this.length;i++)this[i+1]=initArray.arguments[i]; }var d=new initArray("星期日","星期一","星期二","星期三","星期四", "星期五","星期六");document.write("<font color=##ff0000 style='font-size:12pt;font-family: 宋體'> ",today.getYear()+1900,"年",today.getMonth()+1,"月",today.getDate(),"日 ",d[today.getDay()+1],"</font>" );</script> </p> </td> <td width="819" bgcolor="#b7d7ec"><marquee direction="left" οnmοuseοver=this.stop() οnmοuseοut=this.start() scrollAmount=3 scrollDelay=100><FONT style="FONT-SIZE: 18px"color=blue>歡迎使用火車票訂票系統(tǒng)管理系統(tǒng) ,如有不足,敬請指導!</FONT></marquee></td></tr><tr><td height="12"></td></tr></table></div><div class="trainCSS"><table border="0" width="1024" cellpadding="0" cellspacing="0"><tr><td width="130" bgcolor="#dfeaf1" valign="top"><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td height="10"></td></tr><tr><td align="center"> <font size="3" color="blue">管理員:xxx,歡迎您!</font></td></tr><tr><td height="10"></td></tr><tr><td align="center"><p><a href="trainManage.jsp"><img src="image/ccxxgl-xz.jpg" width="194" height="37" border="0"></a><td>?</td></tr><tr><td height="10"></td></tr><tr><td align="center"><a href="buyManage.jsp"><img src="image/dpgl.jpg" width="194" height="37" border="0"></a></td></tr><tr><td height="10"></td></tr><tr><td align="center"><a href="peopleManage.jsp"><img src="image/hygl.jpg" width="194" height="37" border="0"></a></td></tr> <tr><td height="10"></td></tr><tr><td align="center"><a href="serverManage.jsp"> <img src="image/spqktj.jpg" width="194" height="37" border="0"></a></td></tr><tr><td height="10"></td></tr><tr><td align="center"><a href="infoManage.jsp"><img src="image/lygl.jpg" width="194" height="37" border="0"></a> </td></tr><tr><td height="10"></td></tr><tr><td align="center"><a href="exitManage.jsp"><img src="image/exit.jpg" width="194" height="37" border="0"></a> </td></tr></table></td><td><table width="100%" height="350" border="1" cellpadding="0" cellspacing="0" bgcolor="#dfeaf1"><tr><TD align="center" valign="top" style="padding-left:20px;padding-top:10px;"><div align="left">當前位置: <a href="homepage.jsp">首頁</a> > <a href="trainManage.jsp">車次信息管理</a> > 刪除車次</div><br /><br /><table border="2" bordercolor="#12A0F5" width="50%" height="80%"><tr align=center><td><H2 style="COLOR: #880000">刪除成功</H2> <H4>管理員 xxx 成功刪除該車次信息<br />系統(tǒng)將在 <input type="text" style='font-size:18px; border:0px; width:20px;' readonly="true" value="5" id="time">秒后返回火車票系統(tǒng)管理員車次管理界面 </H4> </td></tr></table><!-- 時間函數(shù) --> <script language="javascript"> var t = 5; var time = document.getElementById("time"); function fun() { t--; time.value = t; if(t<=0) { location.href="trainManage.jsp"; } } var inter = setInterval("fun()",1000); </script> <br /><br /> </TD></tr></table></td></tr><tr><td height="20"></td></tr></table></div><div class="div"><!-- 底部版權(quán)所有界面 --><TABLE class=wrapper border=0 cellSpacing=0 cellPadding=0 width="100%" align=center><TBODY><TR><TD style="LINE-HEIGHT: 100%" align="center"> <HR style="WIDTH: 96%; HEIGHT: 4px; COLOR: #02457c"><font size="2"> <SCRIPT language=javascript src=""></SCRIPT><!-- target=_blank開啟新的網(wǎng)頁 --><BR><A href="aboutme.jsp">關(guān)于我們</A> | <A href="wzsm.jsp" >網(wǎng)站聲明</A> <BR>版權(quán)所有©2014-2015 北京郵電大學 Eastmount <BR>京ICP備10009636號 </font></TD></TR></TBODY></TABLE></div></div></body> </html> ? ? ? ? ?刪除的核心代碼如下:
? ? ? ? 1.在trainManage.jsp中定義刪除超鏈接及提示框:
? ? ? ? <a href="trainManageDelete.jsp?action=del&id=${train.trainid}" ??
? ? ? ? ? ? ? ? οnclick="return confirm('確定刪除?')">刪除</a> ?
? ? ? ? 2.在DAO中trainManageDAO.java文件中定義SQL刪除操作:
? ? ? ? public static int delete(String id) throws Exception {
? ? ? ? ? ? ? ? String sql = "DELETE FROM TrainManage WHERE trainid = ? ";
? ? ? ? ? ? ? ? return JDBCConnect.executeUpdate(sql, id);
? ? ? ? }
? ? ? ? 3.在trainManageDelete.jsp中獲取傳遞的trainid(火車車次)值并調(diào)用該函數(shù)實現(xiàn)刪除操作:
? ? ? ? <%
? ? ? ? String action = request.getParameter("action");
? ? ? ? String id = request.getParameter("id");
? ? ? ? if(id == null || id==""){out.println("沒有選中刪除的車次");return;}
? ? ? ? if("del".equals(action)){
? ? ? ? ? ? ? ? int isDelete = TrainManageDAO.delete(id); ?
? ? ? ? ? ? ? ? request.setAttribute("isDelete", isDelete); ?
? ? ? ? }
? ? ? ? %>
七. 更新操作及Servlet
? ? ? ? 具體流程是:首先點擊修改,通過超鏈傳遞trainid(火車車次)到修改界面,然后通過調(diào)用trainManageDAO.java中find查找該車次的所有信息并顯示。再通過提交POST及Servlet到UpdateTrainAction.java中,在doPost方法中調(diào)用DAO中update(TrainMManage)實現(xiàn)更新。其中運行結(jié)果如下圖所示:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ page session = "true" %> <jsp:directive.page import="DAO.TrainManageDAO"/> <jsp:directive.page import="bean.TrainManage"/> <jsp:directive.page import="java.util.List"/> <%String action = request.getParameter("action");String id = request.getParameter("id");TrainManage train = TrainManageDAO.find(id); request.setAttribute("train", train); %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>火車卡訂票系統(tǒng)管理系統(tǒng)</title></head><body><div align="center"><div class="trainCSS"><table width="1024" height="150" cellpadding="0" cellspacing="0"><tr><td colspan="2"><img src="./image/logo.jpg" alt="logo" width="1024" height="149"> </td></tr> <tr><td width="205" bgcolor="#b7d7ec"><p align="center"><script language=JavaScript>today=new Date();function initArray(){this.length=initArray.arguments.length;for(var i=0;i<this.length;i++)this[i+1]=initArray.arguments[i]; }var d=new initArray("星期日","星期一","星期二","星期三","星期四", "星期五","星期六");document.write("<font color=##ff0000 style='font-size:12pt;font-family: 宋體'> ",today.getYear()+1900,"年",today.getMonth()+1,"月",today.getDate(),"日 ",d[today.getDay()+1],"</font>" );</script> </p> </td> <td width="819" bgcolor="#b7d7ec"><marquee direction="left" οnmοuseοver=this.stop() οnmοuseοut=this.start() scrollAmount=3 scrollDelay=100><FONT style="FONT-SIZE: 18px"color=blue>歡迎使用火車票訂票系統(tǒng)管理系統(tǒng) ,如有不足,敬請指導!</FONT></marquee></td></tr><tr><td height="12"></td></tr></table></div><div class="trainCSS"><table border="0" width="1024" cellpadding="0" cellspacing="0"><tr><td width="130" bgcolor="#dfeaf1" valign="top"><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td height="10"></td></tr><tr><td align="center"> <font size="3" color="blue">管理員:xxx,歡迎您!</font></td></tr><tr><td height="10"></td></tr><tr><td align="center"><p><a href="trainManage.jsp"><img src="image/ccxxgl-xz.jpg" width="194" height="37" border="0"></a><td>?</td></tr><tr><td height="10"></td></tr><tr><td align="center"><a href="buyManage.jsp"><img src="image/dpgl.jpg" width="194" height="37" border="0"></a></td></tr><tr><td height="10"></td></tr><tr><td align="center"><a href="peopleManage.jsp"><img src="image/hygl.jpg" width="194" height="37" border="0"></a></td></tr> <tr><td height="10"></td></tr><tr><td align="center"><a href="serverManage.jsp"> <img src="image/spqktj.jpg" width="194" height="37" border="0"></a></td></tr><tr><td height="10"></td></tr><tr><td align="center"><a href="infoManage.jsp"><img src="image/lygl.jpg" width="194" height="37" border="0"></a> </td></tr><tr><td height="10"></td></tr><tr><td align="center"><a href="exitManage.jsp"><img src="image/exit.jpg" width="194" height="37" border="0"></a> </td></tr></table></td><td><table width="100%" height="350" border="1" cellpadding="0" cellspacing="0" bgcolor="#dfeaf1"><tr><TD align="center" valign="top" style="padding-left:20px;padding-top:10px;"><div align="left">當前位置: <a href="homepage.jsp">首頁</a> > <a href="trainManage.jsp">車次信息管理</a> > 插入車次</div><br /><br /><H2 style="COLOR: #880000">修改車次信息</H2> <form action="/TrainDatabase/servlet/UpdateTrainAction" method="post"> <table border="1" bordercolor="#12A0F5" align=center> <tr><td>火車車次:</td><td><input type="text" id="trainid" name="trainid" value=${train.trainid} style='font-size:18px' width=200 readonly="true""/></td></tr><tr><td>出發(fā)地:</td><td><input type="text" id="start" name="start" value=${train.start} style='font-size:18px' width=200/></td></tr><tr><td>到達地:</td><td><input type="text" id="end" name="end" value=${train.end} style='font-size:18px'/></td></tr><tr><td>行車時間:</td><td><input type="text" id="time" name="time" value=${train.time} style='font-size:18px'/></td></tr><tr><td>硬座票價:</td><td><input type="text" id="yzprice" name="yzprice" value=${train.yzprice} style='font-size:18px'/></td></tr><tr><td>軟座票價:</td><td><input type="text" id="rzprice" name="rzprice" value=${train.rzprice} style='font-size:18px'/></td></tr><tr><td>硬臥票價:</td><td><input type="text" id="ywprice" name="ywprice" value=${train.ywprice} style='font-size:18px'/></td></tr><tr><td>軟臥票價:</td><td><input type="text" id="rwprice" name="rwprice" value=${train.rwprice} style='font-size:18px'/></td></tr><tr><td>車輛路線:</td><td><textarea id="root" name="root" rows="5" style="width:300px;font-size:18px">${train.root}</textarea> </td></tr><tr><td colspan=2 align=center><input type="submit" name="Submit" value="提交" style='font-size:18px' width=200/></td></tr></table></form><br /><br /> </TD></tr></table></td></tr><tr><td height="20"></td></tr></table></div><div class="div"><!-- 底部版權(quán)所有界面 --><TABLE class=wrapper border=0 cellSpacing=0 cellPadding=0 width="100%" align=center><TBODY><TR><TD style="LINE-HEIGHT: 100%" align="center"> <HR style="WIDTH: 96%; HEIGHT: 4px; COLOR: #02457c"><font size="2"> <SCRIPT language=javascript src=""></SCRIPT><!-- target=_blank開啟新的網(wǎng)頁 --><BR><A href="aboutme.jsp">關(guān)于我們</A> | <A href="wzsm.jsp" >網(wǎng)站聲明</A> <BR>版權(quán)所有©2014-2015 北京郵電大學 Eastmount <BR>京ICP備10009636號 </font></TD></TR></TBODY></TABLE></div></div></body> </html> ? ? ? ? 然后再src/servlet中創(chuàng)建Servlet類,即UpdateTrainAction.java文件。代碼如下:
package servlet;import java.io.IOException; import java.io.PrintWriter;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import DAO.TrainManageDAO; import bean.TrainManage;public class UpdateTrainAction extends HttpServlet {public UpdateTrainAction() {super();}public void destroy() {super.destroy(); // Just puts "destroy" string in log// Put your code here}//The doGet method of the servlet.public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");out.println("<HTML>");out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");out.println(" <BODY>");out.print(" This is ");out.print(this.getClass());out.println(", using the GET method");out.println(" </BODY>");out.println("</HTML>");out.flush();out.close();}//The doPost method of the servletpublic void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setCharacterEncoding("UTF-8"); //設(shè)置輸出編碼 request.setCharacterEncoding("UTF-8"); try {//更新數(shù)據(jù)庫String m_trainid = request.getParameter("trainid");String m_start = request.getParameter("start");String m_end = request.getParameter("end");String m_time = request.getParameter("time");String m_yz = request.getParameter("yzprice");Float m_yzprice = Float.parseFloat(m_yz);String m_rz = request.getParameter("rzprice");Float m_rzprice = Float.parseFloat(m_rz);String m_yw = request.getParameter("ywprice");Float m_ywprice = Float.parseFloat(m_yw);String m_rw = request.getParameter("rwprice");Float m_rwprice = Float.parseFloat(m_rw);String m_root = request.getParameter("root");TrainManage train = new TrainManage();train.setTrainid(m_trainid);train.setStart(m_start);train.setEnd(m_end);train.setTime(m_time);train.setYzprice(m_yzprice);train.setRzprice(m_rzprice);train.setYwprice(m_ywprice);train.setRwprice(m_rwprice);train.setRoot(m_root);int success = TrainManageDAO.update(train); request.setAttribute("success", success); //設(shè)置全路徑 否則trainManage.jsp跳轉(zhuǎn)到servlet/trainManage.jsp路徑下不存在response.sendRedirect("http://localhost:8080/TrainDatabase/trainManage.jsp"); } catch(Exception e) {System.out.println("錯誤:"+e.getMessage()); response.sendRedirect("http://localhost:8080/TrainDatabase/trainManage.jsp"); }}public void init() throws ServletException {// Put your code here}} ? ? ? ? 你可能發(fā)現(xiàn),update函數(shù)只修改了start和end,其它你可以自己添加,方法類似。同時如果參數(shù)過多建議使用下面的方法替代:
public static int update(TrainManage train) throws Exception {/*** String sql = "UPDATE TrainManage SET start = ?, end = ? WHERE trainid = ? ";* return JDBCConnect.executeUpdate(sql, train.getStart(), train.getEnd(), train.getTrainid());*/String sql = "UPDATE TrainManage SET start = '"+ train.getStart() +"', end = '" + train.getEnd() + "' WHERE trainid = '" + train.getTrainid() +"';";System.out.println(sql);return JDBCConnect.executeUpdate(sql); } ? ? ? ?還有一個查看詳情就不介紹了,參看源代碼吧~
八. 總結(jié)
? ? ? ? 最后文章就不總結(jié)了,因為每步都講得非常清楚,無論是步驟、思想,還是源代碼截圖。作者真的很用心的寫這篇文章,從晚上8點寫到了凌晨5點,中間打了兩把dota2。一方面由于我也認為這些都非常重要又基礎(chǔ),另一方面為哪些初學者做Java網(wǎng)站的。
? ? ? ? 最后希望文章對你有所幫助!如果文章有錯誤或不足之處,還請海涵~真的有點累了睡了。有時候想想值不值得這樣寫文章,心安雖好但對身體不好。
總結(jié)
以上是生活随笔為你收集整理的Java+MyEclipse+Tomcat (六)详解Servlet和DAO数据库增删改查操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转载] 陈皓:一些重要的算法
- 下一篇: java学习视频网站_学习Java的视频