侯体宗的博客
  • 首页
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

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

Java  /  管理员 发布于 7年前   314

本文实例讲述了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="https:/article/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="https:/article/getAllUser?pageNo=1">第一页</a> <a href="https:/article/getAllUser?pageNo=${pageNo-1}">上一页</a></c:if><c:if test="${pageNo!=pageCounter}"> <a href="https:/article/getAllUser?pageNo=${pageNo+1}">下一页</a> <a href="https:/article/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="https:/article/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="https:/article/getAllUser?pageNo=1">第一页</a><a href="https:/article/getAllUser?pageNo=${pageNo-1}">上一页</a></c:if><c:if test="${pageNo!=pageCounter}"><a href="https:/article/getAllUser?pageNo=${pageNo+1}">下一页</a><a href="https:/article/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="https:/article/findUser?username=${user.username}">修改</a>   </td>   <td>    <a href="https:/article/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程序设计有所帮助。


  • 上一条:
    JSP学习之异常处理实例分析
    下一条:
    JSP实现添加功能和分页显示实例分析
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在java中实现的脱敏工具类代码示例分享(0个评论)
    • zookeeper安装流程步骤(0个评论)
    • 在java中你背的“八股文”可能已经过时了(2个评论)
    • 在php8.0+版本中使用属性来增加值代码示例(3个评论)
    • java 正则表达式基础,实例学习资料收集大全 原创(0个评论)
    • 近期文章
    • 在go语言中实现字符串可逆性压缩及解压缩功能(0个评论)
    • 使用go + gin + jwt + qrcode实现网站生成登录二维码在app中扫码登录功能(0个评论)
    • 在windows10中升级go版本至1.24后LiteIDE的Ctrl+左击无法跳转问题解决方案(0个评论)
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-11
    • 2018-03
    • 2020-03
    • 2023-05
    • 2023-11
    • 2024-01
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客