MVC案例之删除

总体思路

在上一篇的基础上,增加删除的功能
首先在列举的jsp中加上删除的链接–>调用dao类完成链接–>调用DeleteStudentServlet类删除学生–>调用ListAllStudents展示学生–>用forward方法转到Student.jsp页面展示

具体的代码细节

  • Students.jsp增加的部分
<tr><td><%=students.getId() %></td><td><%=students.getStudentName() %></td><td><a href="deleteStudent?id=<%=students.getId()%>">Delete</a></td><br><br></tr>

重点是 id<%students.getId()%> 这句话,这句话让DeleteStudentServlet成功获取到了要删除成员的序号。

  • StudentDao类新增加删除方法,但是存在连接重复,代码冗余的情况
package test;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;public class StudentDao {public void deleteById(int id) throws SQLException {Connection connection=null;PreparedStatement preparedStatement=null;//ResultSet resultSet =null;List<Students> students=new ArrayList<>();try {String driverClass="com.mysql.jdbc.Driver";String url ="jdbc:mysql:///info";String user="root";String password="0025";Class.forName(driverClass);         connection=DriverManager.getConnection(url, user, password);String sql="Delete from Students where id=?";preparedStatement=connection.prepareStatement(sql);preparedStatement.setInt(1, id);//resultSet=preparedStatement.executeQuery();preparedStatement.executeUpdate();} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}finally {if(connection!=null) {connection.close();}if(preparedStatement!=null) {preparedStatement.close();}}}public List<Students> getAll() throws SQLException{Connection connection=null;PreparedStatement preparedStatement=null;ResultSet resultSet =null;List<Students> students=new ArrayList<>();try {String driverClass="com.mysql.jdbc.Driver";String url ="jdbc:mysql:///info";String user="root";String password="0025";Class.forName(driverClass);           connection=DriverManager.getConnection(url, user, password);String sql="SELECT id,studentName from Students";preparedStatement=connection.prepareStatement(sql);resultSet=preparedStatement.executeQuery();while(resultSet.next()) {int id =resultSet.getInt(1);String studentName=resultSet.getString(2);Students student=new Students(id,studentName);students.add(student);         }} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}finally {if(resultSet!=null) {resultSet.close();}if(connection!=null) {connection.close();}if(preparedStatement!=null) {preparedStatement.close();}}return students;}}

具体的实现没有特别复杂的地方,不要忘了preparedStatement.executeUpdate();,如果忘记加了,最后的结果是不会更新的。

  • 接下来我们书写DeleteStudentServlet。
package test;import java.io.IOException;
import java.sql.SQLException;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** Servlet implementation class DeleteStudentServlet*/
@WebServlet("/deleteStudent")
public class DeleteStudentServlet extends HttpServlet {/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubresponse.getWriter().append("Served at: ").append(request.getContextPath());String id=request.getParameter("id");StudentDao studentDao=new StudentDao();try {studentDao.deleteById(Integer.parseInt(id));} catch (NumberFormatException | SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}request.getRequestDispatcher("/success.jsp").forward(request, response);}}

获取的delete的请求,调用dao方法,跳转到成功删除界面。

  • success.jsp界面,用来告知用户已经成功删除
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>success!<br><br><a href="listAllStudents">List ALL Student</a>
</body>
</html>

最后再返回Student.jsp页面。

运行截图



点完delete连接

遇到的问题

  • 无法跳转的问题。
    写的代码明明是好的,但是却没有办法跳转到对应的servlet,原来是没有点build automaticlly。点完之后就正常了。

总结

  • 关于MVC

    • M:Model,Dao
    • V:View.JSP,在页面上写Java代码实现显示
    • C:Controller.Servlet
      • 受理请求
      • 获取请求参数
      • 调用DAO方法
      • 可能会把DAO的返回值放入request中
      • 转发(重定向)页面
  • 不足
    • 使用数据库连接池,DBUtils,JDBCUtils工具类,DAO基类
    • 希望可以多个请求对应一个Servlet

源代码

链接:https://pan.baidu.com/s/15kV_L4mPdJooHLWayhzdEw
提取码:4kh2

神奇女侠的眼睛里面有光!!!! ✪_✪

MVC案例之删除以及其中遇到的问题,附源代码相关推荐

  1. 【Android笔记65】Android小案例之简易版的房贷计算器(附源代码)

    这篇文章,主要介绍如何使用Android实现一个简易版的房贷计算器小案例. 目录 一.房贷计算器 1.1.运行效果演示 1.2.前提准备 (1)等额本息和等额本金

  2. MVC案例-架构分析

    MVC案例 --没有业务层,直接由Servlet调用DAO,所以也没有事务操作.所以可以在DAO中直接获取Connection对象 --采取MVC设计模式 --使用到的技术 MVC设计模式:JSP,S ...

  3. T2噬菌体MVC案例教程

    T2噬菌体MVC案例教程 http://www.cnblogs.com/leoo2sk/archive/2008/10/27/1320285.html MVC初学者浅显易懂的教程 转载于:https: ...

  4. Unity MVC 案例学习笔记《二》

    MVC 案例学习笔记 注册事件,就是把事件加入到事件字典 发送事件,并携带参数,就是在事件字典中遍历找到具体的 controller 进行处理 using System.Collections; us ...

  5. python3可视化窗口操作_Python3.x+PyQtChart实现数据可视化界面(PyQtChart绘图;还有保存图片)和业务逻辑分离案例01_自己写的,有UI界面源代码...

    [实例简介] Python3.x+PyQtChart实现数据可视化界面(PyQtChart绘图:还有保存图片)和业务逻辑分离案例01_自己写的,有UI界面源代码. [实例截图] [核心代码] wang ...

  6. ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第一篇:准备工作

    摘要       本文将简要介绍这个文章系列的目的.形式及大体内容.并且完成开始学习这个系列前所必要的准备工作. 前言       ASP.NET MVC作为微软官方的MVC解决方案,推出有一段时间了 ...

  7. ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第二篇:第一个页面

    摘要       本文首先一步一步完成Demo的第一个页面--首页.然后根据实现过程,说明一下其中用到的与ASP.NET MVC相关的概念与原理. 让第一个页面跑起来       现在,我们来实现公告 ...

  8. 删除商品信息恢复的java_零基础学习java------35---------删除一个商品案例,删除多个商品,编辑(修改商品信息),校验用户名是否已经注册(ajax)...

    一. 删除一个商品案例 将要操作的表格 思路图 前端代码 > Insert title here 查詢商品列表 idnamecategorypnumdescription描述${product. ...

  9. UNIX文件系统下误删除的数据恢复经典案例--UFS删除恢复

    •事件描述  Sun阵列柜中的一个272GB的LUN和一个1TB的LUN,在Solaris 8下格式化成UFS文件系统,由于用户的误操作,导致数据丢失,用户具体操作如下:  用oracle用户运行sh ...

  10. java mvc 案例_springmvc经典案例

    本想自己写一下总结,但是发现一篇好文,转发一下,日后自己再做补充: 感谢Sunnier,引自:https://www.cnblogs.com/sunniest/p/4555801.html Sprin ...

最新文章

  1. Deepfake让罗伯特·德尼罗用流利的德语表演台词!差点忘了他是美国人
  2. 编译与解释实践(1)-flex and bison 配置安装
  3. android 观察者,Android开发实现简单的观察者与被观察者示例
  4. 【做题】uoj#370滑稽树上滑稽果——巧妙dp
  5. OC 内存管理黄金法则
  6. 蓝桥杯2021国赛太原理工大学获得14枚奖牌
  7. 设置自动会计时,常数位置提示APP-FND-00804错误,解决方法
  8. opencv 头文件 包含 include 的问题
  9. Win10安装RabbitMq遇到的问题解决方案集锦
  10. en55032最新标准下载_欧盟EMC标准EN55032介绍。
  11. G-Dezender批量解密
  12. 从零开始学51单片机
  13. MAC下串口助手合集
  14. 财富、通胀与印钞——读《原则2 :应对变化中的世界秩序》(上)
  15. Vagrant在,win7/win10系统下搭建使用
  16. [BZOJ3161]孤舟蓑笠翁
  17. 基于Android实现美颜相机功能的开发
  18. php 九宫格验证码,PHP九宫格抽奖源码示例
  19. 计算机网络技术期末论文,计算机网络技术专业论文题目 计算机网络技术论文题目怎么定...
  20. wcom少彐x片_大数据实战之千万量级小说网站项目开发(存储、复杂搜索、推荐、分析)...

热门文章

  1. OpenCASCADE Expression Interpreter by Flex Bison
  2. 5道经典面试题【转载】
  3. android定位问题
  4. 干净虚拟机(centos 6.4)上从头到尾安装并调试Mdrill(二)
  5. 【重构与模式】6.1用Creation Method替换构造函数
  6. GDI+中发生一般性错误的解决办法(转)
  7. android RelativeLayout 动态添加子View
  8. 现金支票打印模板excel_好用的支票打印软件
  9. OpenCV-图像处理(27、模板匹配(Template Match))
  10. mybatis mysql触发器_MyBatis创建Oracle触发器