一距淫、數(shù)據(jù)的修改
1污朽、根據(jù)id對信息進(jìn)行修改:
先在展示頁面添加一個修改鏈接傲诵,可以跳轉(zhuǎn)修改頁面
<a href="/getBookById?id=${item.id}">修改</a>
2、創(chuàng)建一個修改頁面updata.jsp:
<body>
<form method="post" action="/updata">
編號:<input type="text" name="id" value="${book.id}" readonly="readonly"><br>
書名:<input type="text" name="name" value="${book.name}"><br>
價格:<input type="text" name="price" value="${book.price}"><br>
<input type="submit">
</form>
</body>
修改頁面的每個框中應(yīng)該展示出舊信息惕鼓,即value="${book.筋现?}"
編號不能進(jìn)行修改,不然會影響業(yè)務(wù)邏輯。因此讓它只讀矾飞。readonly="readonly"
3彻犁、獲取要修改的數(shù)據(jù):
(1)dao層
先要獲取想要修改的那一行的數(shù)據(jù)信息(那一行的圖書對象信息):
public BookBean getBookById(int id){
//id為幾,在list中的角標(biāo)就是幾減一
//例如id為3凰慈,則這一行數(shù)據(jù)在list中角標(biāo)為2
return list.get(id-1);
}
(2)service層
public BookBean getBookById(int id){
return bookDao.getBookById(id);
}
(3)Controller控制層
@RequestMapping("/getBookById")
public String getBookById(HttpSession session, HttpServletRequest request){
String bid = request.getParameter("id");
int id = bid==null ? -1:Integer.parseInt(bid);
BookBean book = bookService.getBookById(id);
session.setAttribute("book",book);
return "updata.jsp";
}
獲取到這一行信息后跳轉(zhuǎn)到修改頁面updata.jsp
效果圖如下:
4汞幢、信息修改之后進(jìn)行提交,更新到數(shù)據(jù)庫中(list集合)
(1)dao層
public boolean updataBook(BookBean bookBean){
list.set(bookBean.getId()-1,bookBean);
return true;
}
(2)service層
public boolean updataBook(BookBean bookBean){
return bookDao.updataBook(bookBean);
}
(3)Controller控制層
@PostMapping("/updata")
public String updataBook(BookBean bookBean) {
Boolean flg = bookService.updataBook(bookBean);
if (flg) {
return "redirect:/book";
}
return "";
}
form表單進(jìn)行提交微谓,是post請求森篷,因此用@PostMapping注解進(jìn)行處理
提交修改成功跳轉(zhuǎn)到展示界面,因此 return "redirect:/book"
二豺型、數(shù)據(jù)的刪除
1仲智、問號傳參(傳id)刪除
問號傳參,需要使用問號來拼接參數(shù)姻氨,在接受方钓辆,使用request.getParameter(“key”)來獲取問號所傳遞過來的值,如果數(shù)據(jù)類型為String肴焊,還需要手動轉(zhuǎn)換前联。如傳的值為id,則要將其強(qiáng)轉(zhuǎn)為int類型∪⒕欤可以傳遞多個值似嗤,如果使用多個值,使用&來拼接届宠,不會改變路徑級別
<a href="/deleteById?id=${item.id}">刪除(問號傳參)</a>
@RequestMapping("/deleteById")
public String deleteBookById(HttpServletRequest request){
String bid = request.getParameter("id");
int id = bid==null ? -1:Integer.parseInt(bid);
Boolean flg = bookService.deleteBookId(id);
if(flg){
return "redirect:/book";
}
return "";
}
2烁落、路徑傳參
路徑傳參,使用路徑符號來傳遞參數(shù)豌注。優(yōu)點(diǎn)伤塌,可以不用做類型轉(zhuǎn)換來直接獲取其值。
<a href="/deleteById/${item.id}">刪除(路徑傳參)</a>
//路徑傳參
@GetMapping("/deleteById/{id}")
public String deleteBookById(@PathVariable int id){
Boolean flg = bookService.deleteBookId(id);
if (flg){
return "redirect:/book";
}
return "";
}
路徑傳參是get請求轧铁,所以用@GetMapping注解每聪,("/deleteById/{id}")把獲得的id拼接到路徑中。
@PostMapping属桦,專門用來處理post請求
@GETMapping熊痴,專門用來處理get請求
@PathVariable路徑傳參的注解他爸,可以實(shí)現(xiàn)路徑傳參聂宾。