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

目标:
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程序设计基础教程》

学生信息管理系统javaweb(MVC模式) MVC模式学生信息管理系统Javaweb 阅读详情

相关推荐

Altera下载器驱动配置:手把手教程(从零实现)

详解Altera USB-Blaster驱动安装全过程,从设备识别到软件配置一步一图,解决常见连接问题,确保开发下载器正常工作,适合初学者快速上手FPGA下载调试。

weixin_35751194的博客 989

基于MVC模式的增删改查

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码

weixin_47053123的博客 3604

多电平双向DC/DC直流变换器的工作原理(以三电平为例子)

多电平双向DCDC变换器的工作原理一、所用论文和参考文献1.1 主要是中文的文献二、工作原理和重要概念2.1 飞跨电容的作用2.2 三电平的工作原理1.3 多电平的优点二,一些注意点2.1 电感电流的变化2.2 多飞跨电容 多余三个电平的时候的解释(截图居多) 一、所用论文和参考文献 1.1 主要是中文的文献 用于超级电容储能系统的三电平双向直流变换器及其控制 (期刊) 多电平直流变换器及其控制...

qq_32419593的博客 2万+

Javaee课程lab4,学生信息管理系统(MVC(JSP+JavaBeans+Servlet)+ JDBC)

javaee_lab4,铁大学生信息管理系统(用MVC模式和JDBC技术开发MIS系统)

人工智能方向,计算机视觉(https://github.com/chenshunpeng) 6385

开关电源|控制方式PWM、PFM、混合调制

频率调制器根据误差放大器的输出大小来改变方波信号的频率,若负载电流突然增加,输出电压 Vout随之下降,反馈电压 VFB 减小,此时误 差放大器的输出增高,频率调制器输出方波信号的频率增大,增加电感充电次数;若负载电流突然增加,输出电压Vom随之下降,反馈电压Vr减小,此时误差放大器的输出增高,PWM比较器输出方波信号的占空比增大,增加电感充电时间:若负载电流突然下降,PWM比较器输出方波信号的占空比减小,减少电感充电时间,从而稳定输出电压。它是在固定开关频率下,通过改变脉冲宽度来调节占空比的。

weixin_46969363的博客 1万+

激光甲烷传感器DIY指南:从DFB激光器选型到Herriott池光路搭建

本文详细介绍了如何DIY激光甲烷传感器,从DFB激光器选型到Herriott池光路搭建的全过程。通过TDLAS技术实现ppm级甲烷检测,适用于家用燃气泄漏监测和农业沼气监测等场景。文章包含核心器件选型、光路搭建技巧、信号调理方案及系统集成优化,为创客提供实用指南。

f9g0h的博客 596

jsp服装销售管理系统5dy9y

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

ck3024的博客 1091

电子产品的老化测试有哪些类型?

因此,越来越多的人在寻找“已知合格的测试连接器”,即经过测试具有可靠性和有效性的测试连接器,可以在老化测试中制定优化方法。例如对于芯片来说,不同的封装有不同的老化测试座,QFP老化测试座,QFN老化测试座等。老化测试时,专用老化电路板上的元件将承受等于或高于其额定工作条件的压力,以消除任何在额定寿命之前过早失效的元件。静态老化:在此类系统中,将测试设备安装到老化板上的插座中,然后放入老化箱中,其中每隔12至24小时施加电源和高温。动态老化:在动态老化系统中,设备以老化速度设定的最大速率进行测试。

软件技术的专栏 1839

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

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

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

WblockCloneObjects克隆一个图纸内的实体包括块参照,同名块参照的处理

public static void HeBingTu2(double lieJu, List<string> filePaths) { Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; using (DocumentLock docLock = doc.Lock...

1108

手把手教您如何在飞牛NAS上部署OpenClaw(Clawdbot/Moltbot)智能助手,接入钉钉,0成本使用(万字保姆级教程)

想在飞牛NAS上部署一个24小时待命的AI助手?🤖 本文手把手教您如何在飞牛NAS上部署一个完全免费的OpenClaw智能助手 ✅

XiaoqiangClub的博客 7237

培训目录

李绪成的一亩三分地 1595

16、树莓派Pico W:蓝牙与Wi-Fi应用指南

本文介绍了树莓派Pico W在蓝牙与Wi-Fi通信方面的应用,涵盖蓝牙配对原理、使用HC-06模块实现手机远程控制LED和传输内部温度,以及通过Wi-Fi进行网络连接、扫描和UDP协议下的设备控制。文章包含详细电路连接、代码实现与测试步骤,并提供拓展建议、常见问题解决方法及开发注意事项,帮助读者快速掌握基于Pico W的无线通信项目开发,适用于物联网入门与实践场景。

sun99的博客 290

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

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

项目帮 1305

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

jsp动漫论坛系统n69l9

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

ck3027的博客 1354

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

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

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

weixin_29378479的博客 335

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

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

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

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

jsp人力资源管理系统Myeclipse开发mysql数据库servlet开发java编程计算机网页项目

JSP 人力资源管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统采用serlvet+dao+bean mvc 模式,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql,使用java语言开发。

qq_251836457的博客 472

linux javaweb开发,LINUX下基于MVC的JAVAWeb开发

LINUX下基于MVC的JAVAWeb开发编辑锁定讨论上传视频《LINUX下基于MVC的JAVAWeb开发》是2009年机械工业出版社出版的图书,作者是姜新华、李燕华。书名LINUX下基于MVC的JAVAWeb开发作者姜新华李燕华ISBN9787111264132定价58.00元出版社出版时间2009开本16LINUX下基于MVC的JAVAWeb开发内容简介编辑《L...

weixin_31527905的博客 278

计算机毕设Java基于MVC框架的新闻发布系统 Java Web技术实现的MVC架构新闻管理系统 基于Java MVC框架的新闻平台设计与开发

摘要:本文介绍了一个基于Java MVC框架的新闻发布系统毕业设计项目。系统采用B/S架构,使用MySQL数据库,具备新闻浏览、分类管理、评论互动、会员专区和后台管理等功能模块。通过可行性分析验证了技术、经济、运行环境和法律方面的可行性,系统采用分层设计模式,包含管理员、编辑部和用户三种角色。项目包含完整的源码程序、数据库设计和论文文档,可作为计算机专业毕业设计参考。系统实现了新闻发布、分类展示、用户评论等核心功能,具有良好的扩展性和维护性,满足现代新闻传播需求。

毕设源码_刘学姐 817

jsp高达模型工作室管理系统1492e

本系统采用JSP作为前端技术,结合SSM(Spring、Spring MVC、MyBatis)框架构建后端,使用MySQL作为数据库,实现前后端分离的开发模式。JSP高达模型工作室管理系统1492e通过信息化手段,实现了对员工的安全管理、经验分享与公告信息发布等功能,有助于提升工作室的管理效率与安全性,为高达模型制作爱好者提供一个良好的学习与工作环境。在JSP文件中,可以使用HTML标签来定义页面的结构,并使用JSP标签(如<% %>、<%= %>、<%!定义网页的结构和内容,如段落、链接、图片等。

ck3026的博客 1321

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

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

项目帮 997

公司员工培训管理系统的开发研究(J2EE)

系统的开发与用户的需求是离不开的,只有以用户的需求为核心,开发出来的系统才有其实际价值,对系统需求分析有其必要性。在需求分析中,分析人员需要和目标用户进行深入的交流,同时对系统的功能以及性能进行针对性地探讨,然后再将需求进行分析与总结,最后对用户的需求进行细化以及具体化形成系统需求文档,继而为下一步系统的开发提供良好的依据。一般情况下,自上而下的开发策略适用在对信息系统整体方面进行规划时,而自下而上的开发策略则适用在对信息系统细节方面进行开发,因此目标系统采用了综合以上两者的方式作为系统开发策略。

毕业作品网站 1155
上一篇: Microsoft SQL Server认证方式的修改
下一篇: JSP培训(10)——使用JavaBean封装对数据库的访问、连接池的配置和使用
Java_Web_Book
博客等级 码龄18年 8粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值