JSP使用MVC模式完成删除和修改功能实例详解
作者:老李-大连 发布时间:2024-03-20 03:39:42
本文实例讲述了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程序设计有所帮助。
猜你喜欢
- 不多说,直接上代码from hdfs import Clientimport pandas as pdHDFSHOST = "ht
- 一、文章概述本文将要讲述的是Python环境下如何用OpenCV检测人脸,本文的主要内容分为:1、检测图片中的人脸2、实时检测视频中出现的人
- Python定时执行程序(schedule)使用schedule库import scheduleimport timedef job():
- 一.官方文档https://pypi.org/project/muggle-ocr/二模块安装pip install muggle-ocr#
- 首先:我们介绍一下socket什么是socket:1. socket 在操作系统中它是处于应用层与传输层的抽象层,它是一组操作起来非常简单的
- 项目环境:python3.6一、项目结构二、数据集准备数据集准备分为两步:获取图片.提取人脸.1、获取图片首先可以利用爬虫,从百度图片上批量
- 一、启动与退出1、进入MySQL:启动MySQL Command Line Client(MySQL的DOS界面),直接输入安装时的密码即可
- run() 方法并不启动一个新线程,就是在主线程中调用了一个普通函数而已。start() 方法是启动一个子线程,线程名就是自己定义的name
- 阅读作者的上一篇相关文章:段正淳的css笔记(3)标题右侧“更多”的实现 段正淳的css笔记(4)1、css代码的简写css缩写的语法,对新
- amend翻译成中文:修改1.修改还未push的提交//修改最近一次提交git commit --amend//进入注释页面,进行修改//修
- 本文实例讲述了python连接字符串的方法。分享给大家供大家参考。具体如下:方法1:直接通过加号操作符相加foobar = 'foo
- python+selenium编写实现爬虫过程:1.爬虫循环处理table表,2.table表分页处理,3.网页table所有内容循环处理4
- 多路搜索树完全二叉树高度:O(log2N),其中2为对数完全M路搜索树的高度:O(logmN),其中M为对数,树每层的节点数M路搜索树主要用
- 本文实例讲述了python通过加号运算符操作列表的方法。分享给大家供大家参考。具体如下:li = ['a', 'b&
- 本篇文章将讨论使用 Python 中的四种不同方法来使用、管理秒并将其转换为天、小时、分钟和秒。现在,让我们开始讨论这些方法并在一些示例中使
- 嗯,你可以说我很无聊。最近疯狂加班,今天才得以有时间搞一个CSS的像素图来消遣休息下。先看效果:运行代码框<!DOCTYPE html
- 概述:本文主要分享一下博主在学习wxpy 的过程中开发的一个小程序。博主在最近有一个监控报警的需求需要完成,然后刚好在学习wxpy 这个东西
- 最近买了个腾讯云服务器,搭建环境。该笔记用于系统上未装过mysql的干净系统第一次安装mysql。自己指定安装目录,指定数据文件目录。lin
- 本文实例讲述了Python实现简单的获取图片爬虫功能。分享给大家供大家参考,具体如下:简单Python爬虫,获得网页上的照片#coding=
- Keras提供了一些用ImageNet训练过的模型:Xception,VGG16,VGG19,ResNet50,InceptionV3。在使