JSP使用MVC模式完成刪除和修改功能實(shí)例詳解
本文實(shí)例講述了JSP使用MVC模式完成刪除和修改功能的方法。分享給大家供大家參考。具體如下:
目標(biāo):
① 進(jìn)一步理解MVC模式;
② 掌握刪除功能的基本實(shí)現(xiàn)過程;
③ 掌握修改功能的基本實(shí)現(xiàn)過程。
主要內(nèi)容:
① 使用MVC完成刪除功能;
② 使用MVC模式完成信息更新功能。
1、如何使用MVC模式完成刪除功能
根據(jù)MVC模式的特點(diǎn),分別考慮MVC的3個(gè)部分。
① 首先考慮V部分:
輸入:通常刪除功能是在查詢的基礎(chǔ)上完成的,所以在用戶信息列表界面上可以添加刪除的超鏈。
輸出:提示用戶刪除是否成功,可以采用單獨(dú)的界面,也可以在其他頁面中顯示。我們采用第二種方式,在用戶列表界面中顯示提示信息。
② 其次考慮M部分:需要在User.java中添加刪除用戶的方法即可。
③ 最后考慮C部分:獲取用戶要刪除的用戶名,然后調(diào)用M部分完成刪除,最后轉(zhuǎn)向用戶信息列表界面。
下面分別實(shí)現(xiàn)。
2、在userlist.jsp文件中添加刪除超鏈和提示信息
1)添加刪除超鏈(紅色部份):
<c:forEach var="user" items="${users}"> <tr> <td> ${user.username} </td> <td> ${user.userpass} </td> <td> <a href="deleteUser?username=${user.username}">刪除</a> </td> </tr> </c:forEach>
注意:刪除的時(shí)候需要知道要刪除的用戶的名字(這里名字作為主鍵),所以通過參數(shù)傳遞名字。
2)添加提示信息:
3)修改后的代碼如下:
<%@ page contentType="text/html;charset=gb2312"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <font color="red"> ${addinfo} </font> <font color="red"> ${deleteinfo} </font> <br> <c:if test="${pageNo!=1}"> <a href="getAllUser?pageNo=1">第一頁</a> <a href="getAllUser?pageNo=${pageNo-1}">上一頁</a> </c:if> <c:if test="${pageNo!=pageCounter}"> <a href="getAllUser?pageNo=${pageNo+1}">下一頁</a> <a href="getAllUser?pageNo=${pageCounter}">最后一頁</a> </c:if> <br> <table width="200" border="1" height="56"> <tbody> <tr> <td> 用戶名 </td> <td> 口令 </td> <td> </td> </tr> <c:forEach var="user" items="${users}"> <tr> <td> ${user.username} </td> <td> ${user.userpass} </td> <td> <a href="deleteUser?username=${user.username}">刪除</a> </td> </tr> </c:forEach> </tbody> </table>
3、編寫M部分:在User.java中添加方法
在User.java中添加deleteUser方法,參考代碼如下:
public boolean deleteUser(String username) { Connection con = null; Statement stmt = null; boolean b; // 表示刪除成功與否 try { // 指出連接數(shù)據(jù)庫所需要的驅(qū)動程序 Class.forName("oracle.jdbc.driver.OracleDriver"); // 建立與數(shù)據(jù)庫之間的連接 con = DriverManager.getConnection( "jdbc:oracle:thin:@myserver:1521:mydb", "scott", "tiger"); // 編寫查詢數(shù)據(jù)庫信息的SQL語句 String sql = "delete from usertable where username='" + username + "'"; // 創(chuàng)建語句對象,用于執(zhí)行SQL語句 stmt = con.createStatement(); // 執(zhí)行沒有結(jié)果集返回的語句,返回的是影響數(shù)據(jù)庫表中記錄的個(gè)數(shù) int n = stmt.executeUpdate(sql); if (n > 0) b = true; else b = false; } catch (Exception e) { b = false; } finally { // 關(guān)閉相關(guān)對象 if (stmt != null) try { stmt.close(); } catch (Exception ee) { } if (con != null) try { con.close(); } catch (Exception ee) { } } return b; }
注意:紅色部分需要修改成您自己的服務(wù)器和數(shù)據(jù)庫。
4、編寫C部分:添加DeleteUser控制器
DeleteUser.java的代碼如下:
package servlet; import java.io.IOException; import java.io.PrintWriter; import javabean.User; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class DeleteUser extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //獲取信息 String username = request.getParameter("username"); // 調(diào)用JavaBean User user = new User(); boolean b = user.deleteUser(username); // 傳遞刪除成功或失敗的信息 String info; if(b) info = "刪除成功!"; else info = "刪除失?。?; request.setAttribute("deleteinfo",info); // 選擇界面對用戶響應(yīng) RequestDispatcher rd = request.getRequestDispatcher("getAllUser"); rd.forward(request,response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } }
5、如何使用MVC模式實(shí)現(xiàn)修改功能
修改功能本身包括兩個(gè)過程:用戶選擇要修改的用戶,然后把該用戶的信息顯示在修改界面上;用戶進(jìn)行修改,修改之后提交,服務(wù)器完成修改功能。
對于第一個(gè)功能,采用MVC模式:
V部分:
輸入:在用戶列表界面上添加“修改”超鏈。
輸出:用戶信息修改界面,把查詢到的信息顯示在修改界面上。
M部分:編寫按照用戶名查詢用戶信息的方法。
C部分:獲取要刪除的用戶的名字,調(diào)用M部分的查詢方法,得到用戶信息,傳遞到修改界面,使用修改界面對用戶響應(yīng)。
對于第二部分,采用MVC模式:
V部分
輸入:上面編寫的修改界面。
輸出:用戶信息列表界面
M部分:編寫用戶信息修改的方法。
C部分:獲取用戶輸入的信息,調(diào)用M部分完成修改,轉(zhuǎn)向列表界面對用戶進(jìn)行響應(yīng)。
下面分別介紹實(shí)現(xiàn)方法。
6、修改用戶信息列表界面
修改后的代碼如下:
<%@ page contentType="text/html;charset=gb2312"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <font color="red"> ${addinfo} </font> <font color="red"> ${deleteinfo} </font> <font color="red"> ${updateinfo} </font> <br> <c:if test="${pageNo!=1}"> <a href="getAllUser?pageNo=1">第一頁</a> <a href="getAllUser?pageNo=${pageNo-1}">上一頁</a> </c:if> <c:if test="${pageNo!=pageCounter}"> <a href="getAllUser?pageNo=${pageNo+1}">下一頁</a> <a href="getAllUser?pageNo=${pageCounter}">最后一頁</a> </c:if> <br> <table width="200" border="1" height="56"> <tbody> <tr> <td> 用戶名 </td> <td> 口令 </td> <td> </td> </tr> <c:forEach var="user" items="${users}"> <tr> <td> ${user.username} </td> <td> ${user.userpass} </td> <td> <a href="findUser?username=${user.username}">修改</a> </td> <td> <a href="deleteUser?username=${user.username}">刪除</a> </td> </tr> </c:forEach> </tbody> </table>
7、編寫信息修改界面
參考代碼如下:
<%@ page contentType="text/html;charset=gb2312"%> 修改用戶<br> <form name="form1" method="post" action="updateUser"> 用戶名:${user.username} <input type="hidden" name="username" value="${user.username}"><br> 口令:<input type="text" name="userpass" value="${user.userpass}"><br> <input type="submit" value="修改"><input type="reset" value="重置"> </form>
8、在User.java中添加查詢信息的方法
public User findUserByName(String username) { Connection con = null; Statement stmt = null; ResultSet rs = null; try { // 指出連接數(shù)據(jù)庫所需要的驅(qū)動程序 Class.forName("oracle.jdbc.driver.OracleDriver"); // 建立與數(shù)據(jù)庫之間的連接 con = DriverManager.getConnection( "jdbc:oracle:thin:@myserver:1521:mydb", "scott", "tiger"); // 編寫查詢數(shù)據(jù)庫信息的SQL語句 String sql = "select * from usertable where username='" + username + "'"; // 創(chuàng)建語句對象,用于執(zhí)行SQL語句 stmt = con.createStatement(); // 執(zhí)行沒有結(jié)果集返回的語句,返回的是影響數(shù)據(jù)庫表中記錄的個(gè)數(shù) rs = stmt.executeQuery(sql); if(rs.next()){ User user = new User(); String userpass = rs.getString(2); user.setUsername(username); user.setUserpass(userpass); return user; } } catch (Exception e) { return null; } finally { // 關(guān)閉相關(guān)對象 try{ rs.close(); }catch(Exception e){} if (stmt != null) try { stmt.close(); } catch (Exception ee) { } if (con != null) try { con.close(); } catch (Exception ee) { } } return null; }
注意:紅色部分需要修改成您自己的服務(wù)器和數(shù)據(jù)庫。
9、在User.java中添加“修改信息”的方法
public boolean update() { Connection con = null; Statement stmt = null; boolean b; try { // 指出連接數(shù)據(jù)庫所需要的驅(qū)動程序 Class.forName("oracle.jdbc.driver.OracleDriver"); // 建立與數(shù)據(jù)庫之間的連接 con = DriverManager.getConnection( "jdbc:oracle:thin:@myserver:1521:mydb", "scott", "tiger"); // 編寫更新的sQL語句 String sql = "update usertable set userpass = '"+userpass+"' where username='" + username + "'"; // 創(chuàng)建語句對象,用于執(zhí)行SQL語句 stmt = con.createStatement(); // 執(zhí)行沒有結(jié)果集返回的語句,返回的是影響數(shù)據(jù)庫表中記錄的個(gè)數(shù) int n = stmt.executeUpdate(sql); if(n>0) b=true; else b=false; } catch (Exception e) { b = false; } finally { if (stmt != null) try { stmt.close(); } catch (Exception ee) { } if (con != null) try { con.close(); } catch (Exception ee) { } } return b; }
注意:紅色部分需要修改成您自己的服務(wù)器和數(shù)據(jù)庫。
10、編寫查詢信息的Servlet
參考代碼如下:
package servlet; import java.io.IOException; import java.io.PrintWriter; import javabean.User; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class FindUser extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 獲取信息 String username = request.getParameter("username"); //調(diào)用Javabean User user = new User(); user = user.findUserByName(username); // 傳遞值 request.setAttribute("user", user); // 選擇界面對用戶進(jìn)行響應(yīng) RequestDispatcher rd = request.getRequestDispatcher("updateuser.jsp"); rd.forward(request, response); } }
11、編寫修改信息的Servlet
參考代碼如下:
package servlet; import java.io.IOException; import java.io.PrintWriter; import javabean.User; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class UpdateUser extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 獲取信息 String username = request.getParameter("username"); String userpass = request.getParameter("userpass"); //調(diào)用Javabean User user = new User(); user.setUsername(username); user.setUserpass(userpass); boolean b = user.update(); // 傳遞值 String info ; if(b) info="修改成功!"; else info="修改失??!"; // 選擇界面對用戶進(jìn)行響應(yīng) RequestDispatcher rd = request.getRequestDispatcher("getAllUser"); rd.forward(request, response); } }
希望本文所述對大家的JSP程序設(shè)計(jì)有所幫助。
- JSP使用Servlet作為控制器實(shí)現(xiàn)MVC模式實(shí)例詳解
- springMVC如何將controller中數(shù)據(jù)傳遞到j(luò)sp頁面
- springMVC如何將controller中Model數(shù)據(jù)傳遞到j(luò)sp頁面
- SpringMVC 向jsp頁面?zhèn)鬟f數(shù)據(jù)庫讀取到的值方法
- 淺談SpringMVC jsp前臺獲取參數(shù)的方式 EL表達(dá)式
- JSP開發(fā)中在spring mvc項(xiàng)目中實(shí)現(xiàn)登錄賬號單瀏覽器登錄
- JSP中springmvc配置validator的注意事項(xiàng)
- JavaWeb實(shí)現(xiàn)用戶登錄注冊功能實(shí)例代碼(基于Servlet+JSP+JavaBean模式)
- jsp 實(shí)現(xiàn)的簡易mvc模式示例
相關(guān)文章
jsp中為表格添加水平滾動條的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄猨sp中為表格添加水平滾動條的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-10-10JAVA/JSP學(xué)習(xí)系列之五(JDBC-ODBC翻頁例子)
JAVA/JSP學(xué)習(xí)系列之五(JDBC-ODBC翻頁例子)...2006-10-10基于jsp+mysql實(shí)現(xiàn)在線水果銷售商城系統(tǒng)
這篇文章主要介紹了全新基于jsp+mysql實(shí)現(xiàn)的一個(gè)在線水果銷售商城系統(tǒng),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08JSP開發(fā)入門(五)--JSP其他相關(guān)資源
JSP開發(fā)入門(五)--JSP其他相關(guān)資源...2006-10-10