一、通过 MVC 进行查询和删除操作

1. 准备一个数据表(examstudent)

2. 创建一个 查询 页面(test.jsp)

  通过连接进入 Servlet(listAllStudents.java)

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8"%>
3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
4 <html>
5 <head>
6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
7 <title>Insert title here</title>
8 </head>
9 <body>
10 <a href="listAllStudents">List All Students</a>
11 </body>
12 </html>

3. 创建一个 Servlet(listAllStudents.java)

  创建一个 StudentDao 对象,调用 StudentDao 中的 getAll() 方法,得到 Student 的 List 集合,并设置给 request 对象, request 通过转发把信息 传递到 students.jsp 页面

 1 package com.panku.mvc;
2
3 import java.io.IOException;
4 import java.util.List;
5
6 import javax.servlet.ServletException;
7 import javax.servlet.annotation.WebServlet;
8 import javax.servlet.http.HttpServlet;
9 import javax.servlet.http.HttpServletRequest;
10 import javax.servlet.http.HttpServletResponse;
11
12 @WebServlet("/listAllStudents")
13 public class ListAllStudents extends HttpServlet {
14 private static final long serialVersionUID = 1L;
15
16 protected void doGet(HttpServletRequest request, HttpServletResponse response)
17 throws ServletException, IOException {
18
19 StudentDao studentDao = new StudentDao();
20 List<Student> students = studentDao.getAll();
21 request.setAttribute("students", students);
22
23 request.getRequestDispatcher("/students.jsp").forward(request, response);
24
25 }
26 }

4.  创建 StudentDao.java 文件

  在 StudentDao,java 中 创建 getAll()、 deleteByFlowId(Integer flowId) 两个方法  分别实现 查询全部数据和删除一条数据的 操作

  1 package com.panku.mvc;
2
3 import java.sql.Connection;
4 import java.sql.DriverManager;
5 import java.sql.PreparedStatement;
6 import java.sql.ResultSet;
7 import java.sql.SQLException;
8 import java.util.ArrayList;
9 import java.util.List;
10
11 public class StudentDao {
12
13 public void deleteByFlowId(Integer flowId) {
14
15 Connection connection = null;
16 PreparedStatement preparedStatement = null;
17
18 try {
19 String driverClass = "com.mysql.jdbc.Driver";
20 String url = "jdbc:mysql:///java_jdbc";
21 String user = "root";
22 String password = "123456";
23
24 Class.forName(driverClass);
25 connection = DriverManager.getConnection(url, user, password);
26
27 String sql = "DELETE FROM examstudent WHERE flow_id = ?";
28 preparedStatement = connection.prepareStatement(sql);
29
30 preparedStatement.setInt(1, flowId);
31 preparedStatement.executeUpdate();
32
33 } catch (Exception e) {
34 e.printStackTrace();
35 } finally {
36 try {
37 if (preparedStatement != null) {
38 preparedStatement.close();
39 }
40 } catch (SQLException e) {
41 e.printStackTrace();
42 }
43 try {
44 if (connection != null) {
45 connection.close();
46 }
47 } catch (SQLException e) {
48 e.printStackTrace();
49 }
50 }
51
52 }
53
54 public List<Student> getAll() {
55
56 List<Student> students = new ArrayList<>();
57
58 Connection connection = null;
59 PreparedStatement preparedStatement = null;
60 ResultSet resultSet = null;
61
62 try {
63 String driverClass = "com.mysql.jdbc.Driver";
64 String url = "jdbc:mysql:///java_jdbc";
65 String user = "root";
66 String password = "123456";
67
68 Class.forName(driverClass);
69 connection = DriverManager.getConnection(url, user, password);
70
71 String sql = "SELECT flow_id, type, id_card, exam_card, student_name, location, "
72 + "grade FROM examstudent";
73 preparedStatement = connection.prepareStatement(sql);
74 resultSet = preparedStatement.executeQuery();
75
76 while (resultSet.next()) {
77 int flowId = resultSet.getInt(1);
78 int type = resultSet.getInt(2);
79 String idCard = resultSet.getString(3);
80 String examCard = resultSet.getString(4);
81 String studentName = resultSet.getString(5);
82 String location = resultSet.getString(6);
83 int grade = resultSet.getInt(7);
84
85 Student student = new Student(flowId, type, idCard, examCard, studentName, location, grade);
86 students.add(student);
87 }
88
89 } catch (Exception e) {
90 e.printStackTrace();
91 } finally {
92 try {
93 if (resultSet != null) {
94 resultSet.close();
95 }
96 } catch (SQLException e) {
97 e.printStackTrace();
98 }
99 try {
100 if (preparedStatement != null) {
101 preparedStatement.close();
102 }
103 } catch (SQLException e) {
104 e.printStackTrace();
105 }
106 try {
107 if (connection != null) {
108 connection.close();
109 }
110 } catch (SQLException e) {
111 e.printStackTrace();
112 }
113 }
114
115 return students;
116 }
117
118 }

5. 创建一个Student.java 实体类

  用来实例数据库的数据

 1 package com.panku.mvc;
2
3 public class Student {
4
5 private Integer flowId;
6 private Integer type;
7 private String idCard;
8 private String examCard;
9 private String studentName;
10 private String location;
11 private Integer grade;
12
13 public Integer getFlowId() {
14 return flowId;
15 }
16
17 public void setFlowId(Integer flowId) {
18 this.flowId = flowId;
19 }
20
21 public Integer getType() {
22 return type;
23 }
24
25 public void setType(Integer type) {
26 this.type = type;
27 }
28
29 public String getIdCard() {
30 return idCard;
31 }
32
33 public void setIdCard(String idCard) {
34 this.idCard = idCard;
35 }
36
37 public String getExamCard() {
38 return examCard;
39 }
40
41 public void setExamCard(String examCard) {
42 this.examCard = examCard;
43 }
44
45 public String getStudentName() {
46 return studentName;
47 }
48
49 public void setStudentName(String studentName) {
50 this.studentName = studentName;
51 }
52
53 public String getLocation() {
54 return location;
55 }
56
57 public void setLocation(String location) {
58 this.location = location;
59 }
60
61 public Integer getGrade() {
62 return grade;
63 }
64
65 public void setGrade(Integer grade) {
66 this.grade = grade;
67 }
68
69 public Student(Integer flowId, Integer type, String idCard, String examCard, String studentName, String location,
70 Integer grade) {
71 super();
72 this.flowId = flowId;
73 this.type = type;
74 this.idCard = idCard;
75 this.examCard = examCard;
76 this.studentName = studentName;
77 this.location = location;
78 this.grade = grade;
79 }
80
81 public Student() {
82 super();
83 }
84
85 }

6. 创建一个 Student.jsp 页面通过表格方式显示查询结果

  显示查询的结果,添加一个删除操作

 1 <%@page import="com.panku.mvc.Student"%>
2 <%@page import="java.util.List"%>
3 <%@ page language="java" contentType="text/html; charset=UTF-8"
4 pageEncoding="UTF-8"%>
5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
6 <html>
7 <head>
8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
9 <title>Insert title here</title>
10 </head>
11 <body>
12
13 <%
14 List<Student> stus = (List) request.getAttribute("students");
15 %>
16
17 <table border="1" cellpadding="10" cellspacing="0">
18 <tr>
19 <th>FlowId</th>
20 <th>Type</th>
21 <th>IdCard</th>
22 <th>ExamCard</th>
23 <th>StudentName</th>
24 <th>Location</th>
25 <th>Grade</th>
26 <th>Delete</th>
27 </tr>
28
29 <%
30 for (Student student : stus) {
31 %>
32 <tr>
33 <td><%=student.getFlowId()%></td>
34 <td><%=student.getType()%></td>
35 <td><%=student.getIdCard()%></td>
36 <td><%=student.getExamCard()%></td>
37 <td><%=student.getStudentName()%></td>
38 <td><%=student.getLocation()%></td>
39 <td><%=student.getGrade()%></td>
40 <td><a href="deleteStudent?flowId=<%=student.getFlowId()%>">Delete</a></td>
41 </tr>
42 <%
43 }
44 %>
45
46 </table>
47
48 </body>
49 </html>

7. 创建一个 Servlet (DeleteStudent.java )

  获取 Student.jsp 页面传过来的参数, 创建 StudentDAO 对象, 调用 StudentDAO中 删除方法(deleteByFlowId() 方法),并把 request 转发给 success.jsp 页面

 1 package com.panku.mvc;
2
3 import java.io.IOException;
4 import javax.servlet.ServletException;
5 import javax.servlet.annotation.WebServlet;
6 import javax.servlet.http.HttpServlet;
7 import javax.servlet.http.HttpServletRequest;
8 import javax.servlet.http.HttpServletResponse;
9
10 @WebServlet("/deleteStudent")
11 public class DeleteStudent extends HttpServlet {
12 private static final long serialVersionUID = 1L;
13
14 protected void doGet(HttpServletRequest request, HttpServletResponse response)
15 throws ServletException, IOException {
16 String flowId = request.getParameter("flowId");
17
18 StudentDao studentDao = new StudentDao();
19 studentDao.deleteByFlowId(Integer.parseInt(flowId));
20
21 request.getRequestDispatcher("/success.jsp").forward(request, response);
22 }
23
24 }

8.  创建一个 success.jsp 页面

  显示删除成功, 并可以点击链接 查看删除之后的数据

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8"%>
3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
4 <html>
5 <head>
6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
7 <title>Insert title here</title>
8 </head>
9 <body>
10 删除成功!!!
11 <br>
12 <br>
13 <a href="listAllStudents">List All Students</a>
14 </body>
15 </html>

JavaWeb笔记三、MVC 设计模式的更多相关文章

  1. JavaWeb:基于MVC设计模式的一个小案例(一)

    (未经允许,请勿转载,谢谢.) 本案例的处理过程: 客户端发送一个请求给服务器,服务器把这个请求给Servlet,Servlet 获取请求信息,根据请求信息的情况去调用 model (在这里是一个普通 ...

  2. javaweb笔记三

    //写了注解,就不用在web.xml里进行注册@WebServlet(urlPatterns="/my",name="my",loadOnStartup=1,i ...

  3. JavaWeb笔记——MVC设计模式和JavaWeb经典三层架

    1 MVC设计模式 MVC设计模式 MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(C ...

  4. 传智播客JavaWeb day07、day08-自定义标签(传统标签和简单标签)、mvc设计模式、用户注册登录注销

    第七天的课程主要是讲了自定义标签.简单介绍了mvc设计模式.然后做了案例 1. 自定义标签 1.1 为什么要有自定义标签 前面所说的EL.JSTL等技术都是为了提高jsp的可读性.可维护性.方便性而取 ...

  5. MVC设计模式JavaWeb实现

    JSP开发模式 jsp开发模式的发展 1.模式1:(适合小型项目的技术的开发)     a.第一版本号.纯jsp(封装数据.处理数据,显示数据)     b.第二版本号,Jsp+JavaBean.   ...

  6. javaweb三大框架和MVC设计模式

    javaweb三大框架和MVC设计模式 转载,原文请见https://blog.csdn.net/sunpeng19960715/article/details/50890705 一.MVC设计模式 ...

  7. java学习笔记-JavaWeb篇三

    63 JSTL_表达式操作64 JSTL_流程控制操作 65 JSTL_迭代操作 66 JSTL_URL操作67 JSTL_改写MVC案例68 Filter概述 69 创建HttpFilter 70 ...

  8. 转载 javaweb三大框架和MVC设计模式 (自己加拉些内容)

    javaweb三大框架和MVC设计模式 一.MVC设计模式 1.MVC的概念 首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基 ...

  9. MVC设计模式与JavaWEB三层架构

    一.MVC设计模式 MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controlle ...

随机推荐

  1. Vivado HLS 工具

    干什么的 Vivado HLS工具可以将C语言高级综合为硬件. 为什么要使用HLS 可以在更高的抽象层次描述功能,而不是在传统的RTL级别 一个潜在的用处是,系统设计划分成硬件部分和软件部分之后,软件 ...

  2. 安装vue-cli-service和webpack

    https://www.zacms.com/index.php/archives/106/ http://www.cnblogs.com/sloong/p/5584684.html

  3. 使用ODP.NET连接Oracle数据库

    项目需要和第三方进行对接,奇葩的是地方没给提供接口,却提供了一个Oracle的视图 所以有了C#访问Oracle数据库的需求 1.打开nuget,安装驱动 https://www.nuget.org/ ...

  4. webpack 4.X 与 Vue 2.X结合

    # Vue.js ## 注意: 有时候使用`npm i node-sass -D`装不上,这时候,就必须使用 `cnpm i node-sass -D` ## 在普通页面中使用render函数渲染组件 ...

  5. Halcon 标定与准确测量

  6. 删除链表的倒数第N个节点(java实现)

    题目: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链 ...

  7. 规则引擎 drools

    https://www.jianshu.com/p/725811f420db 深入了解Drools 简单介绍 笔者正在做风控系统,风控系统里边存在非常多的规则(比如:age < 16 || ag ...

  8. 2018-2019-2 网络对抗技术 20165303 Exp3 免杀原理与实践

    实验内容 一. 正确使用msf编码器(0.5分),msfvenom生成如jar之类的其他文件(0.5分),veil-evasion(0.5分),加壳工具(0.5分),使用shellcode编程(1分) ...

  9. 关于vue中this.attr代替this.data.attr访问的原理

    请看如下例子: var obj = { name:"zhuwei", age:18 } function Person(data){ this.data = data; } var ...

  10. 大数据分析-excel常用技巧

    在用EXCEL制表时,经常要要用到填充,比如1到100行内容相同或引用公式,大多数人会用鼠标拖来拖去,例如: 在第一行的A1单元格右下方 鼠标指针 变 实心黑十字 向下拉或向右,向左拉 我想拉100行 ...