這次同樣運用之前寫過的部分代碼進行改變,實現一個刪除功能,這個功能很好添加,表單中只要form一個參數到DeleteServlet中,所以重點的代碼還是在DeleteServlet中實現業務邏輯。
我們運用到的SQL語句是.
String sql = "delete from tb_book where id=?";
所以需要表單form的時候要傳進一個id值。然后我們根據id值來進行刪除該id的數據
1
首先我們先看看本次的工程
FindServlet和Book我們之前有已經有了,可以copy過來不用修改任何代碼
index.jsp也不用做出任何修改。
2
我們重點看看一個book_list.jsp和deleteServlet中的代碼
book_list.jsp
引入相關的包
同樣需要一個script來驗證輸入合法性。
之后再table中添加行列 (有多少行上就有多少個<tr></tr>組合,有多少列就有多少個<td></td>組合)
通過for循環遍歷集合中的數據,並且每一列取出數據的同時,都響應添加一個超鏈接到
<a href="DeleteServlet?id=<%=book.getId()%>">刪除</a>
從book實例中取得的getId()值,存入id中,傳遞到DeleteServlet中。
2
值得注意的是
// 獲取圖書id
int id = Integer.valueOf(request.getParameter("id"));括號中的id是從表單中傳過來的,是一個String型需要轉型
和
String sql = "delete from tb_book where id=?";
和
ps.setInt(1, id);
修改第一個語句中的第一個參數,這里的修改其實就是執行刪除操作了。
(PS:這里再次強調一下為什么使用
// 獲取PreparedStatement
PreparedStatement ps = conn.prepareStatement(sql);
PreparedStatement的對象,是執行有參數的sql語句進行預處理。知道這個就夠了,我百度的時候忙忙的多資料,懶得去理解了。
)
最后
執行一下DOS模式下的Mysql看一下沒有修改前的數據。
再次跳轉到本頁面(刪除后的新頁面) 可以看到第一條數據被刪除了。
總結:
我記得自學JSP是從3月24號那天晚上哥哥告訴我什么叫MVC開始的,當時聽着真心抽象,然后現在是4月5號,過了差不過11天了。從數據庫不知道為何物,連接JDBC的為何。到慢慢摸索,寫出一個測試數據庫連接成果的代碼。
期間發生了很多蛋疼又傻比的事情,
1
比方說,不懂安裝Mysql(TNND,我還以為安裝了mysql會有一個類似魔獸這樣的頁面會顯示在桌面,擦,其實是沒有的);
2
再比方說,安裝JDBC還要下載那個什么驅動包,下載了又不知道丟哪里,又得去看了許多百度的資料;
3
再比方說,到了后面才發現,Mysql原來TNND是有一個可視化的操作插件之類的,不用在那個惡心的DOS下看。
4
再后來又發現,原來前幾天自學的數據庫語句,在JDBC連接的時候僅僅是用到了select這個簡單的句子(當然往后可能要用到存儲過程)
5
在具體工程的時候,那個跳轉頁面的url被我自己亂改過,害我調試了半天,都調試不出來。后來才發現是我蛋疼手賤改了web.xml.不過通過我亂改web.xml,也細心觀察了一下Servlet添加的時候里面相對應的出現的代碼。
6
學會了html的表單,一些常用的html語言,table表之類的運用。當然少補了javascript語句在JSP頁面的作用和規范。還有<% 添加java代碼%>
7
對於MVC的理解更加深入了,隨着javaBean的學習,也學會了Eclipse原來有自動生成set get方法的快捷操作。(本來不知道之前我是一點點敲的)
對於MVC 我現在可以用自己的話來解釋一下了。
V就是UI,就是表單可以理解為html
M就是javaBean(也成為useBean)
C自然就是Servlet了。
8
平常新建java的類或者Servlet都是默認全部丟到默認包中的,也就是說,平常我都不設包名的。現在發現還是起一些包名好一些,這樣不至於那么亂。比方說,useBean和Servelt都是后綴為.java,如果在設置工程包名的時候不設置的話,會經常性點錯。那如果工程大一點之后就可能是不便於維護了。
可以很清楚的理解了javaBean可以說是V和C之間的橋梁。而JSP自學的過程,最最最核心的非Servlet莫屬了。尤其是數據庫操作的時候。可以說JSP的學習就是Servlet的學習。