天天看點

Servlet系列教材 (二十一)- CRUD - 通過 Servlet 實作删除功能 

步驟1:先運作,看到效果,再學習

步驟2:模仿和排錯

步驟3:提供delete超鍊

步驟4:修改HeroListServlet

步驟5:配置web.xml

步驟6:編寫HeroDeleteServlet

步驟7:測試

步驟 1 : 先運作,看到效果,再學習

老規矩,先下載下傳下載下傳區(點選進入)的可運作項目,配置運作起來,确認可用之後,再學習做了哪些步驟以達到這樣的效果。

步驟 2 : 模仿和排錯

在確定可運作項目能夠正确無誤地運作之後,再嚴格照着教程的步驟,對代碼模仿一遍。 

模仿過程難免代碼有出入,導緻無法得到期望的運作結果,此時此刻通過比較正确答案 ( 可運作項目 ) 和自己的代碼,來定位問題所在。 

采用這種方式,學習有效果,排錯有效率,可以較為明顯地提升學習速度,跨過學習路上的各個檻。 

推薦使用diffmerge軟體,進行檔案夾比較。把你自己做的項目檔案夾,和我的可運作項目檔案夾進行比較。 

這個軟體很牛逼的,可以知道檔案夾裡哪兩個檔案不對,并且很明顯地标記出來 

這裡提供了綠色安裝和使用教程:diffmerge 下載下傳和使用教程

步驟 3 : 提供delete超鍊

修改HeroLIstServlet,多一個單元格,是一個超鍊

超鍊的href屬性指向位址 /deleteHero?id=217(每條不同的記錄id不一樣)

可以在左下角的浏覽器狀态欄裡看到

Servlet系列教材 (二十一)- CRUD - 通過 Servlet 實作删除功能 

步驟 4 : 修改HeroListServlet

為table新增加一列delete,對于每條hero資料,增加一個delete超鍊

package

servlet;

import

java.io.IOException;

import

java.util.List;

import

javax.servlet.ServletException;

import

javax.servlet.http.HttpServlet;

import

javax.servlet.http.HttpServletRequest;

import

javax.servlet.http.HttpServletResponse;

import

bean.Hero;

import

dao.HeroDAO;

public

class

HeroListServlet 

extends

HttpServlet {

protected

void

service(HttpServletRequest request, HttpServletResponse response)

throws

ServletException, IOException {

response.setContentType(

"text/html; charset=UTF-8"

);

List<Hero> heros = 

new

HeroDAO().list();

StringBuffer sb = 

new

StringBuffer();

sb.append(

"<table align='center' cellspacing='0'>\r\n"

);

sb.append(

"<tr><td>id</td><td>name</td><td>hp</td><td>damage</td><td>delete</td></tr>\r\n"

);

String trFormat = 

"<tr><td>%d</td><td>%s</td><td>%f</td><td>%d</td><td><a href='deleteHero?id=%d'>delete</a></td></tr>\r\n"

;

for

(Hero hero : heros) {

String tr = String.format(trFormat, hero.getId(), hero.getName(), hero.getHp(), hero.getDamage(),hero.getId());

sb.append(tr);

}

sb.append(

"</table>"

);

response.getWriter().write(sb.toString());

}

}

步驟 5 : 配置web.xml

配置web.xml 把/deleteHero指向 HeroDeleteServlet

<?

xml

version

=

"1.0"

encoding

=

"UTF-8"

?>

<

web-app

>

<

servlet

>

<

servlet-name

>HelloServlet</

servlet-name

>

<

servlet-class

>HelloServlet</

servlet-class

>

<

load-on-startup

>10</

load-on-startup

>

</

servlet

>

<

servlet-mapping

>

<

servlet-name

>HelloServlet</

servlet-name

>

<

url-pattern

>/hello</

url-pattern

>

</

servlet-mapping

>

<

servlet

>

<

servlet-name

>LoginServlet</

servlet-name

>

<

servlet-class

>LoginServlet</

servlet-class

>

</

servlet

>

<

servlet-mapping

>

<

servlet-name

>LoginServlet</

servlet-name

>

<

url-pattern

>/login</

url-pattern

>

</

servlet-mapping

>    

<

servlet

>

<

servlet-name

>RegisterServlet</

servlet-name

>

<

servlet-class

>RegisterServlet</

servlet-class

>

</

servlet

>

<

servlet-mapping

>

<

servlet-name

>RegisterServlet</

servlet-name

>

<

url-pattern

>/register</

url-pattern

>

</

servlet-mapping

>

<

servlet

>

<

servlet-name

>HeroListServlet</

servlet-name

>

<

servlet-class

>servlet.HeroListServlet</

servlet-class

>

</

servlet

>

<

servlet-mapping

>

<

servlet-name

>HeroListServlet</

servlet-name

>

<

url-pattern

>/listHero</

url-pattern

>

</

servlet-mapping

>    

<

servlet

>

<

servlet-name

>HeroAddServlet</

servlet-name

>

<

servlet-class

>servlet.HeroAddServlet</

servlet-class

>

</

servlet

>

<

servlet-mapping

>

<

servlet-name

>HeroAddServlet</

servlet-name

>

<

url-pattern

>/addHero</

url-pattern

>

</

servlet-mapping

>    

<

servlet

>

<

servlet-name

>HeroDeleteServlet</

servlet-name

>

<

servlet-class

>servlet.HeroDeleteServlet</

servlet-class

>

</

servlet

>

<

servlet-mapping

>

<

servlet-name

>HeroDeleteServlet</

servlet-name

>

<

url-pattern

>/deleteHero</

url-pattern

>

</

servlet-mapping

>    

</

web-app

>

步驟 6 : 編寫HeroDeleteServlet

首先擷取參數id

然後通過HeroDAO根據id,删除該對象

然後用戶端跳轉到 /listHero

package

servlet;

import

java.io.IOException;

import

javax.servlet.ServletException;

import

javax.servlet.http.HttpServlet;

import

javax.servlet.http.HttpServletRequest;

import

javax.servlet.http.HttpServletResponse;

import

dao.HeroDAO;

public

class

HeroDeleteServlet 

extends

HttpServlet {

protected

void

service(HttpServletRequest request, HttpServletResponse response)

throws

ServletException, IOException {

int

id = Integer.parseInt(request.getParameter(

"id"

));

new

HeroDAO().delete(id);

response.sendRedirect(

"/listHero"

);

}

}

步驟 7 : 測試

重新開機tomcat,首先通路查詢頁面

http:

//127.0.0.1/listHero

然後點選删除,可以觀察到某條資料被删除了

Servlet系列教材 (二十一)- CRUD - 通過 Servlet 實作删除功能 

更多内容,點選了解: https://how2j.cn/k/servlet/servlet-delete/565.html