首页 > 编程 > JSP > 正文

JSP使用MVC模式完成删除和修改功能实例详解

2024-09-05 00:22:19
字体:
来源:转载
供稿:网友

这篇文章主要介绍了JSP使用MVC模式完成删除和修改功能的方法,以实例形式较为详细的分析了JSP基于MVC模式实现删除和修改的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了JSP使用MVC模式完成删除和修改功能的方法。分享给大家供大家参考。具体如下:

目标:

① 进一步理解MVC模式;

② 掌握删除功能的基本实现过程;

③ 掌握修改功能的基本实现过程。

主要内容:

① 使用MVC完成删除功能;

② 使用MVC模式完成信息更新功能。

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

根据MVC模式的特点,分别考虑MVC的3个部分。

① 首先考虑V部分:

输入:通常删除功能是在查询的基础上完成的,所以在用户信息列表界面上可以添加删除的超链。

输出:提示用户删除是否成功,可以采用单独的界面,也可以在其他页面中显示。我们采用第二种方式,在用户列表界面中显示提示信息。

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

③ 最后考虑C部分:获取用户要删除的用户名,然后调用M部分完成删除,最后转向用户信息列表界面。

下面分别实现。

2、在userlist.jsp文件中添加删除超链和提示信息

1)添加删除超链(红色部份):

 

 
  1. <c:forEach var="user" items="${users}"
  2. <tr> 
  3. <td> 
  4. ${user.username} 
  5. </td> 
  6. <td> 
  7. ${user.userpass} 
  8. </td> 
  9. <td> 
  10. <a href="deleteUser?username=${user.username}">删除</a> 
  11. </td> 
  12. </tr> 
  13. </c:forEach> 

注意:删除的时候需要知道要删除的用户的名字(这里名字作为主键),所以通过参数传递名字。

2)添加提示信息:

复制代码代码如下:

${deleteinfo}

3)修改后的代码如下:

 

 
  1. <%@ page contentType="text/html;charset=gb2312"%> 
  2. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
  3. <font color="red"> ${addinfo} </font> 
  4. <font color="red"> ${deleteinfo} </font> 
  5. <br> 
  6. <c:if test="${pageNo!=1}"
  7. <a href="getAllUser?pageNo=1">第一页</a> 
  8. <a href="getAllUser?pageNo=${pageNo-1}">上一页</a> 
  9. </c:if
  10. <c:if test="${pageNo!=pageCounter}"
  11. <a href="getAllUser?pageNo=${pageNo+1}">下一页</a> 
  12. <a href="getAllUser?pageNo=${pageCounter}">最后一页</a> 
  13. </c:if
  14. <br> 
  15. <table width="200" border="1" height="56"
  16. <tbody> 
  17. <tr> 
  18. <td> 
  19. 用户名 
  20. </td> 
  21. <td> 
  22. 口令 
  23. </td> 
  24. <td> 
  25. </td> 
  26. </tr> 
  27. <c:forEach var="user" items="${users}"
  28. <tr> 
  29. <td> 
  30. ${user.username} 
  31. </td> 
  32. <td> 
  33. ${user.userpass} 
  34. </td> 
  35. <td> 
  36. <a href="deleteUser?username=${user.username}">删除</a> 
  37. </td> 
  38. </tr> 
  39. </c:forEach> 
  40. </tbody> 
  41. </table> 

3、编写M部分:在User.java中添加方法

在User.java中添加deleteUser方法,参考代码如下:

 

 
  1. public boolean deleteUser(String username) { 
  2. Connection con = null
  3. Statement stmt = null
  4. boolean b; // 表示删除成功与否 
  5. try { 
  6. // 指出连接数据库所需要的驱动程序 
  7. Class.forName("oracle.jdbc.driver.OracleDriver"); 
  8. // 建立与数据库之间的连接 
  9. con = DriverManager.getConnection( 
  10. "jdbc:oracle:thin:@myserver:1521:mydb""scott"
  11. "tiger"); 
  12. // 编写查询数据库信息的SQL语句 
  13. String sql = "delete from usertable where username='" + username + "'"
  14. // 创建语句对象,用于执行SQL语句 
  15. stmt = con.createStatement(); 
  16. // 执行没有结果集返回的语句,返回的是影响数据库表中记录的个数 
  17. int n = stmt.executeUpdate(sql); 
  18. if (n > 0) 
  19. b = true
  20. else 
  21. b = false
  22. catch (Exception e) { 
  23. b = false
  24. finally { 
  25. // 关闭相关对象 
  26. if (stmt != null
  27. try { 
  28. stmt.close(); 
  29. catch (Exception ee) { 
  30. if (con != null
  31. try { 
  32. con.close(); 
  33. catch (Exception ee) { 
  34. return b; 

注意:红色部分需要修改成您自己的服务器和数据库。

4、编写C部分:添加DeleteUser控制器

DeleteUser.java的代码如下:

 

 
  1. package servlet; 
  2. import java.io.IOException; 
  3. import java.io.PrintWriter; 
  4. import javabean.User; 
  5. import javax.servlet.RequestDispatcher; 
  6. import javax.servlet.ServletException; 
  7. import javax.servlet.http.HttpServlet; 
  8. import javax.servlet.http.HttpServletRequest; 
  9. import javax.servlet.http.HttpServletResponse; 
  10. public class DeleteUser extends HttpServlet { 
  11. public void doGet(HttpServletRequest request, HttpServletResponse response) 
  12. throws ServletException, IOException { 
  13. //获取信息 
  14. String username = request.getParameter("username"); 
  15. // 调用JavaBean 
  16. User user = new User(); 
  17. boolean b = user.deleteUser(username); 
  18. // 传递删除成功或失败的信息 
  19. String info; 
  20. if(b) 
  21. info = "删除成功!"
  22. else 
  23. info = "删除失败!"
  24. request.setAttribute("deleteinfo",info); 
  25. // 选择界面对用户响应 
  26. RequestDispatcher rd = request.getRequestDispatcher("getAllUser"); 
  27. rd.forward(request,response); 
  28. public void doPost(HttpServletRequest request, HttpServletResponse response) 
  29. throws ServletException, IOException { 
  30. doGet(request,response); 

5、如何使用MVC模式实现修改功能

修改功能本身包括两个过程:用户选择要修改的用户,然后把该用户的信息显示在修改界面上;用户进行修改,修改之后提交,服务器完成修改功能。

对于第一个功能,采用MVC模式:

V部分:

输入:在用户列表界面上添加“修改”超链。

输出:用户信息修改界面,把查询到的信息显示在修改界面上。

M部分:编写按照用户名查询用户信息的方法。

C部分:获取要删除的用户的名字,调用M部分的查询方法,得到用户信息,传递到修改界面,使用修改界面对用户响应。

对于第二部分,采用MVC模式:

V部分

输入:上面编写的修改界面。

输出:用户信息列表界面

M部分:编写用户信息修改的方法。

C部分:获取用户输入的信息,调用M部分完成修改,转向列表界面对用户进行响应。

下面分别介绍实现方法。

6、修改用户信息列表界面

修改后的代码如下:

 

 
  1. <%@ page contentType="text/html;charset=gb2312"%> 
  2. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
  3. <font color="red"> ${addinfo} </font> 
  4. <font color="red"> ${deleteinfo} </font> 
  5. <font color="red"> ${updateinfo} </font> 
  6. <br> 
  7. <c:if test="${pageNo!=1}"
  8. <a href="getAllUser?pageNo=1">第一页</a> 
  9. <a href="getAllUser?pageNo=${pageNo-1}">上一页</a> 
  10. </c:if
  11. <c:if test="${pageNo!=pageCounter}"
  12. <a href="getAllUser?pageNo=${pageNo+1}">下一页</a> 
  13. <a href="getAllUser?pageNo=${pageCounter}">最后一页</a> 
  14. </c:if
  15. <br> 
  16. <table width="200" border="1" height="56"
  17. <tbody> 
  18. <tr> 
  19. <td> 
  20. 用户名 
  21. </td> 
  22. <td> 
  23. 口令 
  24. </td> 
  25. <td> 
  26. </td> 
  27. </tr> 
  28. <c:forEach var="user" items="${users}"
  29. <tr> 
  30. <td> 
  31. ${user.username} 
  32. </td> 
  33. <td> 
  34. ${user.userpass} 
  35. </td> 
  36. <td> 
  37. <a href="findUser?username=${user.username}">修改</a> 
  38. </td> 
  39. <td> 
  40. <a href="deleteUser?username=${user.username}">删除</a> 
  41. </td> 
  42. </tr> 
  43. </c:forEach> 
  44. </tbody> 
  45. </table> 

7、编写信息修改界面

参考代码如下:

 

 
  1. <%@ page contentType="text/html;charset=gb2312"%> 修改用户<br> 
  2. <form name="form1" method="post" action="updateUser"
  3. 用户名:${user.username} 
  4. <input type="hidden" name="username" value="${user.username}"><br> 
  5. 口令:<input type="text" name="userpass" value="${user.userpass}"><br> 
  6. <input type="submit" value="修改"><input type="reset" value="重置"
  7. </form> 

8、在User.java中添加查询信息的方法

 

 
  1. public User findUserByName(String username) { 
  2. Connection con = null
  3. Statement stmt = null
  4. ResultSet rs = null
  5. try { 
  6. // 指出连接数据库所需要的驱动程序 
  7. Class.forName("oracle.jdbc.driver.OracleDriver"); 
  8. // 建立与数据库之间的连接 
  9. con = DriverManager.getConnection( 
  10. "jdbc:oracle:thin:@myserver:1521:mydb""scott"
  11. "tiger"); 
  12. // 编写查询数据库信息的SQL语句 
  13. String sql = "select * from usertable where username='" + username + "'"
  14. // 创建语句对象,用于执行SQL语句 
  15. stmt = con.createStatement(); 
  16. // 执行没有结果集返回的语句,返回的是影响数据库表中记录的个数 
  17. rs = stmt.executeQuery(sql); 
  18. if(rs.next()){ 
  19. User user = new User(); 
  20. String userpass = rs.getString(2); 
  21. user.setUsername(username); 
  22. user.setUserpass(userpass); 
  23. return user; 
  24. }  
  25. catch (Exception e) { 
  26. return null
  27. finally { 
  28. // 关闭相关对象 
  29. try
  30. rs.close(); 
  31. }catch(Exception e){} 
  32. if (stmt != null
  33. try { 
  34. stmt.close(); 
  35. catch (Exception ee) { 
  36. if (con != null
  37. try { 
  38. con.close(); 
  39. catch (Exception ee) { 
  40. return null

注意:红色部分需要修改成您自己的服务器和数据库。

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

 

 
  1. public boolean update() { 
  2. Connection con = null
  3. Statement stmt = null
  4. boolean b; 
  5. try { 
  6. // 指出连接数据库所需要的驱动程序 
  7. Class.forName("oracle.jdbc.driver.OracleDriver"); 
  8. // 建立与数据库之间的连接 
  9. con = DriverManager.getConnection( 
  10. "jdbc:oracle:thin:@myserver:1521:mydb""scott"
  11. "tiger"); 
  12. // 编写更新的sQL语句 
  13. String sql = "update usertable set userpass = '"+userpass+"' where username='" + username + "'"
  14. // 创建语句对象,用于执行SQL语句 
  15. stmt = con.createStatement(); 
  16. // 执行没有结果集返回的语句,返回的是影响数据库表中记录的个数 
  17. int n = stmt.executeUpdate(sql); 
  18. if(n>0) 
  19. b=true
  20. else 
  21. b=false
  22. catch (Exception e) { 
  23. b = false
  24. finally { 
  25. if (stmt != null
  26. try { 
  27. stmt.close(); 
  28. catch (Exception ee) { 
  29. if (con != null
  30. try { 
  31. con.close(); 
  32. catch (Exception ee) { 
  33. return b; 

注意:红色部分需要修改成您自己的服务器和数据库。

10、编写查询信息的Servlet

参考代码如下:

 

 
  1. package servlet; 
  2. import java.io.IOException; 
  3. import java.io.PrintWriter; 
  4. import javabean.User; 
  5. import javax.servlet.RequestDispatcher; 
  6. import javax.servlet.ServletException; 
  7. import javax.servlet.http.HttpServlet; 
  8. import javax.servlet.http.HttpServletRequest; 
  9. import javax.servlet.http.HttpServletResponse; 
  10. public class FindUser extends HttpServlet { 
  11. public void doGet(HttpServletRequest request, HttpServletResponse response) 
  12. throws ServletException, IOException { 
  13. doPost(request,response); 
  14. public void doPost(HttpServletRequest request, HttpServletResponse response) 
  15. throws ServletException, IOException { 
  16. // 获取信息 
  17. String username = request.getParameter("username"); 
  18. //调用Javabean 
  19. User user = new User(); 
  20. user = user.findUserByName(username); 
  21. // 传递值 
  22. request.setAttribute("user", user); 
  23. // 选择界面对用户进行响应 
  24. RequestDispatcher rd = request.getRequestDispatcher("updateuser.jsp"); 
  25. rd.forward(request, response);  

11、编写修改信息的Servlet

参考代码如下:

 

 
  1. package servlet; 
  2. import java.io.IOException; 
  3. import java.io.PrintWriter; 
  4. import javabean.User; 
  5. import javax.servlet.RequestDispatcher; 
  6. import javax.servlet.ServletException; 
  7. import javax.servlet.http.HttpServlet; 
  8. import javax.servlet.http.HttpServletRequest; 
  9. import javax.servlet.http.HttpServletResponse; 
  10. public class UpdateUser extends HttpServlet { 
  11. public void doGet(HttpServletRequest request, HttpServletResponse response) 
  12. throws ServletException, IOException { 
  13. doPost(request,response); 
  14. public void doPost(HttpServletRequest request, HttpServletResponse response) 
  15. throws ServletException, IOException { 
  16. // 获取信息 
  17. String username = request.getParameter("username"); 
  18. String userpass = request.getParameter("userpass"); 
  19. //调用Javabean 
  20. User user = new User(); 
  21. user.setUsername(username); 
  22. user.setUserpass(userpass); 
  23. boolean b = user.update(); 
  24. // 传递值 
  25. String info ; 
  26. if(b) 
  27. info="修改成功!"
  28. else 
  29. info="修改失败!"
  30. // 选择界面对用户进行响应 
  31. RequestDispatcher rd = request.getRequestDispatcher("getAllUser"); 
  32. rd.forward(request, response);  

希望本文所述对大家的JSP程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表