關於如何獲取.jsp檔案中已經展示的資訊
阿新 • • 發佈:2022-12-08
在進行資訊刪除操作(假設通過ID進行刪除)的時候,如果在真正進行刪除之前展示即將被刪除的資訊進行最終刪除確認,那麼跳轉到相應的.jsp 檔案之後就會丟失ID資訊(即,系統無法再獲取ID)。這種時候我們應該如何繼續進行刪除操作呢?
首先我們來理一理思路,根據要求,我們可以確定,此處的“刪除”由3部分組成——
1.根據ID查詢出相應的成員資訊
2.展示查詢到的相應的成員資訊
3.根據ID執行刪除操作
前兩點此處不提,這一片將目光聚集在3上。
我曾經嘗試過在servlet中歐給設定一個全域性變數,試圖通過賦值使的在查詢時保留ID,但是後來我發現這個方案不可執行是因為從.jsp檔案再次呼叫servlet時全域性變數會丟失上一次查詢時從前端獲取的ID值。
同時也無法在查詢介面直接返回或者通過String id = {Bean.id};進行資料回傳。
所以我採用了第三種方法 ——getSession()
在查詢展示.jsp 檔案中新增
<%
Bean bean=(Bean)request.getAttribute("Bean");
request.getSession().setAttribute("id",bean.getId());
%>
從而獲取ID,然後再在servlet中呼叫的刪除函式中使用
String id=(String)request.getSession().getAttribute("id");
獲取ID
這樣就實現了展示將要被刪除的資訊且執行刪除操作
相應的.jsp檔案和servlet相關程式碼如下:
foundshow.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import ="Bean.Bean"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>展示</title>
</head>
<body>
<%
Bean bean=(Bean)request.getAttribute("Bean");
request.getSession().setAttribute("id",bean.getId());
%>
<center>
<form action="Beanservlet" method="post">
id:${Bean.id}<br/>
姓名:${Bean.name}<br/>
性別:${Bean.sex}<br/>
競賽:${Bean.jingsai}<br/>
<br/><br/><br/>
<input type="hidden" name="method" value="delete_change"/>
<input type="submit" name="submit1" value="刪除此資訊">
<input type="submit" name="submit2" value="修改此資訊">
</form>
</center>
</body>
</html>
相應的servlet程式碼片段
if("delete".equals(method)) {
String id=(String)request.getSession().getAttribute("id");
int flag = Dao.delete(id);
if(flag != 0) {
request.getRequestDispatcher("index.jsp").forward(request,response);
}
特別注意加粗部分的型別轉換
(此處Bean為實體類,id為String類)