JSP培训(9)——使用MVC模式完成删除和修改功能

使用.NET framework MVC编写简易的增删查 一,页面效果二,前期准备1,数据库创建好表2,新建项目3,添加数据实体模型三,代码实现。 阅读详情

目标:
l         进一步理解MVC模式;
l         掌握删除功能的基本实现过程;
l         掌握修改功能的基本实现过程。
主要内容:
l         使用MVC完成删除功能;
l         使用MVC模式完成信息更新功能。
1、 如何使用MVC模式完成删除功能
根据MVC模式的特点,分别考虑MVC的3个部分。
n         首先考虑V部分:
u       输入:通常删除功能是在查询的基础上完成的,所以在用户信息列表界面上可以添加删除的超链。
u       输出:提示用户删除是否成功,可以采用单独的界面,也可以在其他页面中显示。我们采用第二种方式,在用户列表界面中显示提示信息。
n         其次考虑M部分:需要在User.java中添加删除用户的方法即可。
n         最后考虑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模式:
l         V部分:
n         输入:在用户列表界面上添加“修改”超链。
n         输出:用户信息修改界面,把查询到的信息显示在修改界面上。
l         M部分:编写按照用户名查询用户信息的方法。
l         C部分:获取要删除的用户的名字,调用M部分的查询方法,得到用户信息,传递到修改界面,使用修改界面对用户响应。
对于第二部分,采用MVC模式:
l         V部分
n         输入:上面编写的修改界面。
n         输出:用户信息列表界面
l         M部分:编写用户信息修改的方法。
l         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);    
 
}
}
参考教材:《Java Web程序设计基础教程》

JSP培训目录:

JSP培训(1)——概述
JSP培训(2)——运行原理、文档结构、简单输入输出
JSP培训(3)——客户端验证、常用输出方式、JSTL基本用法
JSP培训(4)——实例:登录功能、jsp:forward标签、jsp:include标签、include指令、EL、c:if
JSP培训(5)——使用JavaBean完成业务逻辑
JSP培训(6)——使用Servlet作为控制器实现MVC模式
JSP培训(7)——使用JDBC完成动态验证、采用MVC完成数据查询
JSP培训(8)——添加功能和分页显示
JSP培训(9)——使用MVC模式完成删除和修改功能
JSP培训(10)——使用JavaBean封装对数据库的访问、连接池的配置和使用
JSP培训(11)——Java Web中的安全控制
JSP培训(12)——Java Web应用国际化
JSP培训(13)——异常处理
JSP培训(14)——购物车实例(上)
JSP培训(15)——购物车实例(下)及小结
一个MVC模式的小例子(实现了增、删的功能) 这是一个基于MVC模式的小例子,主要实现了增、删的功能!所用到的环境是:jdk1.6+myeclipse6.5+tomcat5.0+hibernate+mysql5.1 立即下载

相关推荐

简单的jsp课程大作业,采用MVC模式,三层架构,实现增删改查等基础操作

一个简单的jsp课程大作业,实现后台管理员通过该系统对数据库表的增删改查等功能的一个后台管理系统,压缩包含有代码加数据库(MySQL)加配套说明文档,文档有三十多页,对每个页面都有说明。

【JSP】用户信息界面操作 ---- 删除用户

文章目录用户信息界面操作 ---- 删除Ⅰ.修改userinfo.jspⅡ.完善dbHelper类,添加用户删除方法Ⅲ.创建 DeleteServlet,实现用户删除功能Ⅳ.效果展示① 删除当前登录用户② 删除非当前登录用户 用户信息界面操作 ---- 删除 Ⅰ.修改userinfo.jsp 之前在设计userinfo.jsp中的操作内容时,并没有具体的实现。今天来实现一个简单的用户删除操作。 href="DeleteServlet?username=<%=resultSet.getStrin..

懂得一千零一种,赋予你失败的方法! 3824

使用mvc编写的一个简易的购物管理系统

使用mvc编写的一个简易的购物管理系统,包括管理员编辑商品信息,更新商品的价格以及数量,还可以删除商品。该系统还能实现用户对其商品进行虚拟购买操作。

servlet MVC模式实现基本功能增删查改

思路: 以上用jQuery Ajax进行实现    查询:通过JDBC连接数据库,将数据库表内需要获取的内容显示在浏览器页面上    增加:点击添加用户按钮,弹出一个添加个人信息的form表单,将信息填写完后,点击提交按钮,新增的用户信息出现在表中。    更新:点击更新按钮,弹出一个更新个人信息的form表单,同时表单上显示个人的所有信息。。所以第一步,应该是先根据主键:ID将个人的所有信息查询...

生活充满热情 2617

MVC实现文章列表的数据删除修改

使用MVC框架,实现文章列表数据的删除,修改功能

使用JSP+Servlet实现商品管理功能,后台为数据库,功能包括商品信息浏览、商品信息详情、商品信息删除及修改。

JAVAWEB:使用JSP+Servlet实现商品管理功能,后台为数据库,功能包括商品信息浏览、商品信息详情、商品信息删除及修改。

jsp服装销售管理系统5dy9y

jsp服装销售管理系统5dy9y本系统(程序源码数据库调试部署开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能开题报告内容。

ck3024的博客 1091

JSP个人信息管理系统(添加、修改、删除,包括个人的基本信息、个人通讯录)

(1)登录与注册 系统的登录和注册功能。 (2)个人基本信息管理模块 系统中对个人基本信息的管理包括:个人的姓名、性别、出生日期、民族、学历、职称、登录名、密码、电话、家庭住址等。 (3)用户个人通讯录模块 系统的个人通讯录保存了个人的通讯录信息,包括自己联系人的姓名、电话、邮箱、工作单位、地址、QQ等。可以自由添加联系人的信息,查询或删除联系人。

java毕业设计-基于springboot+vue的课外艺术培训机构学习管理系统设计和实现,基于springboot的课外艺术培训机构管理平台设计和实现(源码+LW+部署文档+远程调试+代码讲解等)

基于springboot+vue的课外艺术培训机构学习管理系统设计和实现,基于springboot的课外艺术培训机构管理平台设计和实现

我的个人博客:https://bishe666.top 1478

避坑指南:为什么你的conda环境装不上Mamba?从CUDA到ABI的深度排查

本文深入解析conda环境中安装Mamba架构时常见的CUDA版本冲突、ABI不匹配等问题,提供从基础检查到深度排查的系统化解决方案。针对`causal-conv1d`和`mamba-ssm`安装失败场景,详细讲解PyTorch版本绑定、编译器工具链兼容性等关键技术要点,并给出预编译wheel选择、动态链接库配置等实用修复方案。

weixin_33738555的博客 346

用nTopology五分钟生成三维Voronoi泡沫:节点式建模从原理到实操

多孔结构在增材制造与轻量化设计中应用广泛,其中Voronoi泡沫因其优异的缓冲吸能和比刚度表现备受关注。传统CAD建模需处理复杂布尔运算和网格修复,而隐式建模通过数学场描述几何体,将空间距离与密度分布转化为可视化节点,大幅降低操作门槛。nTopology基于场驱动与参数化逻辑,无需编写命令,即可实时调节胞元尺寸、壁厚及随机种子,快速生成可打印的泡沫实体。这种工作流适用于缓冲垫、医疗植入体、航空支架等场景,也为梯度密度结构与力学仿真验证提供了高效路径。本文围绕三维Voronoi泡沫的生成原理与节点操作流程,详

weixin_26767391的博客 156

培训目录

李绪成的一亩三分地 1595

carsim软件教学

第一步打开小锁(红色标注) 新手往往一看界面是灰的,界面内的各种模块打开不了,以为没激活成功 所有模块必须复制之后,进行编辑,不要直接进行修改(很重要) 2.空气动力学模型(红色标注) 这里面主要设定了簧上质量。整车的整备质量在下图模块中进行设定 空气动力学。主要涉及到空气阻力,在下面模块中进行设定,有个问题需要注意,他的空气阻力与汽车理论的空气阻力公式不一致,这一点需要注意 下面这会模块基本上用不到,涉及到一个声音和汽车的外观 下面这个模块主要涉及到发动机功率,传动比还有 tao,档位的传动比,发

weixin_43796045的博客 2551

java毕业设计-基于springboot+vue的起点树在线艺术培训机构系统设计和实现,基于springboot的在线艺术培训机构学习平台设计和实现(源码+LW+部署文档+远程调试+代码讲解等)

基于springboot+vue的起点树在线艺术培训机构系统设计和实现,基于springboot的在线艺术培训机构学习平台设计和实现

项目帮 1305

通达信-申万宏源金融终端本地数据转sqlite3,2、解析申万宏源C:/zd_swhy_gm/vipdoc/sh/lday的sh600000股票数据

为量化做准备,通达信-申万宏源金融终端本地数据转sqlite3,解析申万宏源C:/zd_swhy_gm/vipdoc/sh/lday的sh600000股票数据

wuyaqi的博客 512

S型速度曲线进阶:基于Sin²(x)的PLC平滑运动控制实践(以伺服/步进系统为例)

本文深入探讨了基于Sin²(x)的S型速度曲线在PLC平滑运动控制中的实践应用,特别针对伺服/步进系统。通过对比传统梯形曲线和七段S曲线,详细展示了Sin²(x)曲线在加速度连续性、计算效率和参数自适应性方面的优势,并结合博图平台的具体实现技巧和实战案例,为精密运动控制提供了优化方案。

weixin_28718793的博客 243

jsp动漫论坛系统n69l9

jsp动漫论坛系统n69l9本系统(程序源码数据库调试部署开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能技术要求:开发语言:JSP前端使用:HTML5,CSS,JSP动态网页技术后端使用SpringBoot,Spring技术主数据库使用MySQL开题报告内容。

ck3027的博客 1354

Linux双网卡设置IP属于同一网段的ping方法以及现象记录分析

文章目录前言ping以及MAC地址总结 前言 写在前面:经常遇到客户将板卡上的两个网络设备的IP地址设置为同一网段的情况,比如eth0:192.168.0.232,eth1:192.168.0.30. 我的解释是,不能设置为同一网段,或者使用其中一个时候下线另外一个网卡。但是我不知道这个说法到底是根据什么,查了很多资料也没找到明确的说法,但是下面这个实验能够说明一些现象的原因。 ping以及MAC地址 首先查看网卡的信息 ifconfig 因为两个网卡都在同一个网段,所以如果这个时候直接和我们的主机(I

“逛丢一只鞋”的博客 1万+

视频教程-JSP实战开发-Java

JSP实战开发 JAVA培训讲师,JAVA EE高端培训讲师,北京魔乐科技(...

weixin_29378479的博客 335

【RTOS】 Vxworks 653 第一章 —— 初识 vx653 3.x

。。不是很重要,自己搜吧鲁棒分区是一种确保共享计算资源中独立运行功能实现​​时空隔离​​的机制,其目标是为集成模块中的混合临界性应用提供与联邦式部署(federated implementation)同等级别的功能隔离保障。具体表现为:​​多关键性共存​​:支持不同安全等级应用(如飞控系统A级与娱乐系统D级)在同一模块中协同运行。​​抗干扰能力​​:防止未授权或意外的时空干扰(如内存越界、时间窗口冲突),确保应用间互不影响。​​。

qq_38183694的博客 1280

【QGIS】软件下载安装及GIS4WRF插件使用

【QGIS】软件下载安装及GIS4WRF插件使用

WW、forever的博客 1801

java毕业设计-基于springboot+vue的起点树在线艺术培训机构系统设计和实现,基于springboot的在线艺术培训机构学习平台设计和实现推荐(源码+LW+部署文档+远程调试+代码讲解等)

java毕业设计-基于springboot+vue的起点树在线艺术培训机构系统设计和实现,基于springboot的在线艺术培训机构学习平台设计和实现推荐(源码+LW+部署文档+远程调试+代码讲解等)

我的个人博客:https://bishe666.top 1173

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

上一篇: JSP培训(8)——添加功能和分页显示
下一篇: JSP培训(10)——使用JavaBean封装对数据库的访问、连接池的配置和使用
老李-大连
博客等级 码龄20年 3206粉丝 308原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值