MVC是Model-View-Controller的简称,即模型-视图-控制器。
MVC是一种设计模式,它把应用程序分成三个核心模块:

模型:模型是应用程序的主体部分,模型表示业务数据和业务逻辑。

一个模型能为多个视图提供数据。

视图: 视图是用户看到并与之交互的界面,作用如下:

视图向用户显示相关的数据。

接受用户的输入。

不进行任何实际的业务处理。

控制器: 控制器接受用户的输入并调用模型和视图去完成用户的需求。

控制器接收请求并决定调用哪个模型组件去处理请求,

然后决定调用哪个视图来显示模型处理返回的数据。

粗糙的MVC设计模式- 查询与删除

1.创建examstudent表

Model模型

StudentDao.java

package com.aff.javaweb.mvc;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List; import com.aff.bean.Student;
import com.aff.util.JDBCUtilsC3P0; public class StudentDao {
public void deleteByFlowId(Integer flowId) {
Connection conn = null;
PreparedStatement ps = null;
try {
conn = JDBCUtilsC3P0.getConnection();
String sql = "delete from examstudent where flow_Id = ?";
ps = conn.prepareStatement(sql);
ps.setInt(1, flowId);
ps.executeUpdate();
} catch (Exception e) {
} finally {
JDBCUtilsC3P0.closeResource(conn, ps, null);
}
} public List<Student> getAll() { List<Student> students = new ArrayList<>();
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = JDBCUtilsC3P0.getConnection();
String sql = "select flow_id flowId,Type, id_card idCard, examCard, student_name studentName, Location, Grade from examstudent";
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while (rs.next()) {
int flowId = rs.getInt(1);
int type = rs.getInt(2);
String idCard = rs.getString(3);
String examCard = rs.getString(4);
String studentName = rs.getString(5);
String location = rs.getString(6);
int grade = rs.getInt(7); Student student = new Student(flowId, type, idCard, examCard, studentName, location, grade);
students.add(student);
}
} catch (Exception e) {
} finally {
JDBCUtilsC3P0.closeResource(conn, ps, rs);
}
return students;
}
}

Controller 控制器

ListAllStudentsServlet.java

package com.aff.javaweb.mvc;

import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.aff.bean.Student; @WebServlet("/listAllStudents")
public class ListAllStudentsServlet extends HttpServlet {
private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
StudentDao studentDao = new StudentDao();
List<Student> students = studentDao.getAll();
request.setAttribute("students", students);
request.getRequestDispatcher("/students.jsp").forward(request, response);
}
}

DeleteStudentServlet.java

package com.aff.javaweb.mvc;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; @WebServlet("/deleteStudent")
public class DeleteStudentServlet extends HttpServlet {
private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String flowId = request.getParameter("flowId"); StudentDao studentDao = new StudentDao();
studentDao.deleteByFlowId(Integer.parseInt(flowId));// 把传来的string类型强转为int类型 request.getRequestDispatcher("/success.jsp").forward(request, response);
} }

VIEW 视图

test

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="listAllStudents">ListAllStudents</a>
</body>
</html>

students.jsp

<%@page import="com.aff.bean.Student"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body> <%
List<Student> stus = (List<Student>) request.getAttribute("students");
%> <table border="1" cellpadding="10" cellspacing="0">
<tr>
<td>FlowId</td>
<td>Type</td>
<td>IdCard</td>
<td>ExamCard</td>
<td>StudentName</td>
<td>Location</td>
<td>Grade</td>
<td >Delete</td>
</tr> <%
for (Student student : stus) {
%>
<tr>
<td><%=student.getFlowId()%></td>
<td><%=student.getType()%></td>
<td><%=student.getIdCard()%></td>
<td><%=student.getExamCard()%></td>
<td><%=student.getStudentName()%></td>
<td><%=student.getLocation()%></td>
<td><%=student.getGrade()%></td>
<td ><a href="deleteStudent?flowId=<%=student.getFlowId()%>">Delete</a></td> </tr> <%
}
%> </table> </body>
</html>

success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>Success Page</h3>
<a href="listAllStudents">List All Students</a>
</body>
</html>

javabean

Student.java

package com.aff.bean;

public class Student {
private Integer flowId;
private int type;
private String idCard;
private String examCard;
private String studentName;
private String location;
private int grade; public Student() {
super();
} public Student(Integer flowId, int type, String idCard, String examCard, String studentName, String location,
int grade) {
super();
this.flowId = flowId;
this.type = type;
this.idCard = idCard;
this.examCard = examCard;
this.studentName = studentName;
this.location = location;
this.grade = grade;
} public Integer getFlowId() {
return flowId;
} public void setFlowId(Integer flowId) {
this.flowId = flowId;
} public int getType() {
return type;
} public void setType(int type) {
this.type = type;
} public String getIdCard() {
return idCard;
} public void setIdCard(String idCard) {
this.idCard = idCard;
} public String getExamCard() {
return examCard;
} public void setExamCard(String examCard) {
this.examCard = examCard;
} public String getStudentName() {
return studentName;
} public void setStudentName(String studentName) {
this.studentName = studentName;
} public String getLocation() {
return location;
} public void setLocation(String location) {
this.location = location;
} public int getGrade() {
return grade;
} public void setGrade(int grade) {
this.grade = grade;
} @Override
public String toString() {
return "Student [flowId=" + flowId + ", type=" + type + ", idCard=" + idCard + ", examCard=" + examCard
+ ", studentName=" + studentName + ", location=" + location + ", grade=" + grade + "]";
} }

小结:

关于 MVC:
           M: Model. Dao
           V: View. JSP, 在页面上填写 Java 代码实现显示
          C: Controller. Serlvet:
                                       受理请求
                                       获取请求参数
                                       调用 DAO 方法
                                       可能会把 DAO 方法的返回值放入 request 中
                                       转发(或重定向)页面
什么时候转发,什么时候重定向 ? 若目标的响应页面不需要从 request 中读取任何值,则可以使用重定向。(还可以防止表单的重复提交)

不足:
使用DBUtils,JDBCUtils 工具类,DAO 基类
一个请求一个 Serlvet 不好!一个模块使用一个 Serlvet,即多个请求可以使用一个 Servlet
在页面上加入 jQuery 提示

MVC设计模式-查询与删除的更多相关文章

  1. JavaWeb笔记三、MVC 设计模式

    一.通过 MVC 进行查询和删除操作 1. 准备一个数据表(examstudent) 2. 创建一个 查询 页面(test.jsp) 通过连接进入 Servlet(listAllStudents.ja ...

  2. [原创]java WEB学习笔记19:初识MVC 设计模式:查询,删除 练习(理解思想),小结 ,问题

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  3. MVC设计模式((javaWEB)在数据库连接池下,实现对数据库中的数据增删改查操作)

    设计功能的实现: ----没有业务层,直接由Servlet调用DAO,所以也没有事务操作,所以从DAO中直接获取connection对象 ----采用MVC设计模式 ----采用到的技术 .MVC设计 ...

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

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

  5. 【原创翻译】认识MVC设计模式:web应用开发的基础(实际编码篇)

    原文地址:http://www.larryullman.com/2009/10/15/understanding-mvc-part-3/ 全系列INDEX [原创翻译]认识MVC设计模式:web应用开 ...

  6. 第80节:Java中的MVC设计模式

    第80节:Java中的MVC设计模式 前言 了解java中的mvc模式.复习以及回顾! 事务,设置自动连接提交关闭. setAutoCommit(false); conn.commit(); conn ...

  7. SpringMVC的工作原理及MVC设计模式

    SpringMVC的工作原理: 1.当用户在浏览器中点击一个链接或者提交一个表单时,那么就会产生一个请求(request).这个请求会携带用户请求的信息,离开浏览器. 2.这个请求会首先到达Sprin ...

  8. ASP.NET MVC 5 - 查询Details和Delete方法

    在这部分教程中,接下来我们将讨论自动生成的Details和Delete方法. 查询Details和Delete方法 打开Movie控制器并查看Details方法. public ActionResul ...

  9. 谈谈JAVA工程狮面试中经常遇到的面试题目------什么是MVC设计模式

    作为一名java工程狮,大家肯定经历过很多面试,但每次几乎都会被问到什么是MVC设计模式,你是怎么理解MVC的类似这样的一系列关于MVC的问题. [出现频率] [关键考点] MVC的含义 MVC的结构 ...

随机推荐

  1. search(9)- elastic4s logback-appender

    前面写了个cassandra-appender,一个基于cassandra的logback插件.正是cassandra的分布式数据库属性才合适作为akka-cluster-sharding分布式应用的 ...

  2. Day_08【面向对象】扩展案例2_测试旧手机新手机类,并给新手机实现玩游戏功能

    分析以下需求,并用代码实现 1.定义手机类 行为: 打电话,发短信 2.定义接口IPlay 行为: 玩游戏 3.定义旧手机类继承手机类 行为: 继承父类的行为 4.定义新手机继承手机类实现IPlay接 ...

  3. 【Kafka】Kafka集群基础操作!新手上路必备~

    目录 bin目录 Topic命令概览 创建Topic 查看Topic 描述Topic Producer生产数据 Consumer消费数据 增加topic分区数 增加配置 删除配置 删除Topic 所有 ...

  4. [codeforces 200 A Cinema]暴力,优化

    题意大致是这样的:有一个有n行.每行m个格子的矩形,每次往指定格子里填石子,如果指定格子里已经填过了,则找到与其曼哈顿距离最小的格子,然后填进去,有多个的时候依次按x.y从小到大排序然后取最小的.输出 ...

  5. leeCode刷题 1078

    给出第一个词 first 和第二个词 second,考虑在某些文本 text 中可能以 "first second third" 形式出现的情况,其中 second 紧随 firs ...

  6. 写ssm项目的注意点

    注意事项: 输出台乱码 a链接以post提交 表单提交前验证 onsubmit 属性在提交表单时触发. onsubmit 属性只在 中使用. <form action="/demo/d ...

  7. extract变量覆盖

    0x01 extract变量覆盖 <?php $flag='xxx'; extract($_GET); if(isset($shiyan)) { $content=trim(file_get_c ...

  8. c#word文档输出

    在工作中有时需要把内容用word文档展示出来 在写代码前要引用word的dll Microsoft.Office.Interop.Word“ sing System; using System.Col ...

  9. 解惑求助-关于NetCore2.2中间件响应的问题

    背景介绍:基于netcore2.2开发api接口程序,自定义了一个异常捕获中间件,用于捕获未经处理的异常以及状态码404.500等访问(设计的出发点就是,出现了非200的响应,我这边全部会进行处理成2 ...

  10. doxygen+graphviz轻松绘制函数调用图(call graph)

    前言 之前的工作环境习惯了使用source insight查看函数分析代码,切换到mac下后改用vscode,发现缺少函数调用关系图生成.跨平台的understand可以很好的解决,但是公司没有购买, ...