程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> JSP使用MVC模式完成刪除和修改功能實例詳解

JSP使用MVC模式完成刪除和修改功能實例詳解

編輯:關於JSP

本文實例講述了JSP使用MVC模式完成刪除和修改功能的方法。分享給大家供大家參考。具體如下:

目標:

① 進一步理解MVC模式;
② 掌握刪除功能的基本實現過程;
③ 掌握修改功能的基本實現過程。

主要內容:

① 使用MVC完成刪除功能;
② 使用MVC模式完成信息更新功能。

1、如何使用MVC模式完成刪除功能

根據MVC模式的特點,分別考慮MVC的3個部分。
① 首先考慮V部分:

輸入:通常刪除功能是在查詢的基礎上完成的,所以在用戶信息列表界面上可以添加刪除的超鏈。

輸出:提示用戶刪除是否成功,可以采用單獨的界面,也可以在其他頁面中顯示。我們采用第二種方式,在用戶列表界面中顯示提示信息。

② 其次考慮M部分:需要在User.java中添加刪除用戶的方法即可。

③ 最後考慮C部分:獲取用戶要刪除的用戶名,然後調用M部分完成刪除,最後轉向用戶信息列表界面。

下面分別實現。

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>

注意:刪除的時候需要知道要刪除的用戶的名字(這裡名字作為主鍵),所以通過參數傳遞名字。

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 {
  // 指出連接數據庫所需要的驅動程序
  Class.forName("oracle.jdbc.driver.OracleDriver");
  // 建立與數據庫之間的連接
  con = DriverManager.getConnection(
    "jdbc:oracle:thin:@myserver:1521:mydb", "scott",
    "tiger");
  // 編寫查詢數據庫信息的SQL語句
  String sql = "delete from usertable where username='" + username + "'";
  // 創建語句對象,用於執行SQL語句
  stmt = con.createStatement();
  // 執行沒有結果集返回的語句,返回的是影響數據庫表中記錄的個數
  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;
}

注意:紅色部分需要修改成您自己的服務器和數據庫。

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");
 // 調用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模式實現修改功能

修改功能本身包括兩個過程:用戶選擇要修改的用戶,然後把該用戶的信息顯示在修改界面上;用戶進行修改,修改之後提交,服務器完成修改功能。
對於第一個功能,采用MVC模式:

V部分:

輸入:在用戶列表界面上添加“修改”超鏈。
輸出:用戶信息修改界面,把查詢到的信息顯示在修改界面上。

M部分:編寫按照用戶名查詢用戶信息的方法。

C部分:獲取要刪除的用戶的名字,調用M部分的查詢方法,得到用戶信息,傳遞到修改界面,使用修改界面對用戶響應。

對於第二部分,采用MVC模式:

V部分

輸入:上面編寫的修改界面。
輸出:用戶信息列表界面

M部分:編寫用戶信息修改的方法。

C部分:獲取用戶輸入的信息,調用M部分完成修改,轉向列表界面對用戶進行響應。

下面分別介紹實現方法。

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 {
   // 指出連接數據庫所需要的驅動程序
   Class.forName("oracle.jdbc.driver.OracleDriver");
   // 建立與數據庫之間的連接
   con = DriverManager.getConnection(
     "jdbc:oracle:thin:@myserver:1521:mydb", "scott",
     "tiger");
   // 編寫查詢數據庫信息的SQL語句
   String sql = "select * from usertable where username='" + username + "'";
   // 創建語句對象,用於執行SQL語句
   stmt = con.createStatement();
   // 執行沒有結果集返回的語句,返回的是影響數據庫表中記錄的個數
   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;
}

注意:紅色部分需要修改成您自己的服務器和數據庫。

9、在User.java中添加“修改信息”的方法

public boolean update() {
 Connection con = null;
 Statement stmt = null;
 boolean b;
 try {
  // 指出連接數據庫所需要的驅動程序
  Class.forName("oracle.jdbc.driver.OracleDriver");
  // 建立與數據庫之間的連接
  con = DriverManager.getConnection(
    "jdbc:oracle:thin:@myserver:1521:mydb", "scott",
    "tiger");
  // 編寫更新的sQL語句
  String sql = "update usertable set userpass = '"+userpass+"' where username='" + username + "'";
  // 創建語句對象,用於執行SQL語句
  stmt = con.createStatement();
  // 執行沒有結果集返回的語句,返回的是影響數據庫表中記錄的個數
  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;
}

注意:紅色部分需要修改成您自己的服務器和數據庫。

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");
 //調用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");
 //調用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程序設計有所幫助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved