本文實例講述了JSP使用MVC模式完成刪除和修改功能的方法。分享給大家供大家參考。具體如下:
目標:
① 進一步理解MVC模式;
② 掌握刪除功能的基本實現(xiàn)過程;
③ 掌握修改功能的基本實現(xiàn)過程。
主要內(nèi)容:
① 使用MVC完成刪除功能;
② 使用MVC模式完成信息更新功能。
1、如何使用MVC模式完成刪除功能
根據(jù)MVC模式的特點,分別考慮MVC的3個部分。
① 首先考慮V部分:
輸入:通常刪除功能是在查詢的基礎上完成的,所以在用戶信息列表界面上可以添加刪除的超鏈。
輸出:提示用戶刪除是否成功,可以采用單獨的界面,也可以在其他頁面中顯示。我們采用第二種方式,在用戶列表界面中顯示提示信息。
② 其次考慮M部分:需要在User.java中添加刪除用戶的方法即可。
③ 最后考慮C部分:獲取用戶要刪除的用戶名,然后調(diào)用M部分完成刪除,最后轉(zhuǎn)向用戶信息列表界面。
下面分別實現(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ù)傳遞名字。
2)添加提示信息:
復制代碼 代碼如下:
font color="red"> ${deleteinfo} /font>
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ù)庫表中記錄的個數(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;
}
注意:紅色部分需要修改成您自己的服務器和數(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);
// 選擇界面對用戶響應
RequestDispatcher rd = request.getRequestDispatcher("getAllUser");
rd.forward(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
}
5、如何使用MVC模式實現(xiàn)修改功能
修改功能本身包括兩個過程:用戶選擇要修改的用戶,然后把該用戶的信息顯示在修改界面上;用戶進行修改,修改之后提交,服務器完成修改功能。
對于第一個功能,采用MVC模式:
V部分:
輸入:在用戶列表界面上添加“修改”超鏈。
輸出:用戶信息修改界面,把查詢到的信息顯示在修改界面上。
M部分:編寫按照用戶名查詢用戶信息的方法。
C部分:獲取要刪除的用戶的名字,調(diào)用M部分的查詢方法,得到用戶信息,傳遞到修改界面,使用修改界面對用戶響應。
對于第二部分,采用MVC模式:
V部分
輸入:上面編寫的修改界面。
輸出:用戶信息列表界面
M部分:編寫用戶信息修改的方法。
C部分:獲取用戶輸入的信息,調(diào)用M部分完成修改,轉(zhuǎn)向列表界面對用戶進行響應。
下面分別介紹實現(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ù)庫表中記錄的個數(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 {
// 關閉相關對象
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;
}
注意:紅色部分需要修改成您自己的服務器和數(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ù)庫表中記錄的個數(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;
}
注意:紅色部分需要修改成您自己的服務器和數(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);
// 選擇界面對用戶進行響應
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="修改失??!";
// 選擇界面對用戶進行響應
RequestDispatcher rd = request.getRequestDispatcher("getAllUser");
rd.forward(request, response);
}
}
希望本文所述對大家的JSP程序設計有所幫助。
您可能感興趣的文章:- JSP使用Servlet作為控制器實現(xiàn)MVC模式實例詳解
- springMVC如何將controller中數(shù)據(jù)傳遞到jsp頁面
- springMVC如何將controller中Model數(shù)據(jù)傳遞到jsp頁面
- SpringMVC 向jsp頁面?zhèn)鬟f數(shù)據(jù)庫讀取到的值方法
- 淺談SpringMVC jsp前臺獲取參數(shù)的方式 EL表達式
- JSP開發(fā)中在spring mvc項目中實現(xiàn)登錄賬號單瀏覽器登錄
- JSP中springmvc配置validator的注意事項
- JavaWeb實現(xiàn)用戶登錄注冊功能實例代碼(基于Servlet+JSP+JavaBean模式)
- jsp 實現(xiàn)的簡易mvc模式示例