一:基础知识

1.mvc

  model

  view

  control

2.模型

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

  一个模型可以为多个视图提供数据

  提高了代码的可重用性

3.视图

  用户看到的可以交互的界面。

  向用户显示相关的数据

  可以接受用户的输入

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

4.控制器

  接受用户的输入并调用模型与视图去完成用户的需求。

  控制器接受请求决定调用哪个模型组件去处理请求,然后决定调用哪个视图显示模型处理返回的数据。

  

二:程序示例

1.目录结构

  

2.test.jsp

 <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<a href="listAllStrudents">List All Students</a>
</body>
</html>

3.ListAllStrudents.java

 package mvc;

 import java.io.IOException;
import java.util.Arrays;
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; /**
* Servlet implementation class ListAllStrudents
*/
@WebServlet("/listAllStrudents")
public class ListAllStrudents 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);
} }

4.students.jsp

 <%@page import="mvc.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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
List<Student> stus=(List<Student>)request.getAttribute("students");
%>
<table border="1" cellpadding="10" cellspacing="0">
<tr>
<th>Flow_ID</th>
<th>Type</th>
<th>IdCard</th>
<th>ExcamCard</th>
<th>StudentName</th>
<th>Location</th>
<th>Grade</th>
<th>删除</th>
</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.getGraded() %></td>
<td><a href="deleteStudentServlet?flowId=<%=student.getFlowId()%>">Delete</a></td>
</tr>
<%
}
%>
</table> </body>
</html>

5.DeleteStudentServlet

 package 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("/deleteStudentServlet")
public class DeleteStudentServlet extends HttpServlet {
private static final long serialVersionUID = 1L; @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String flowId=request.getParameter("flowId");
StudentDao studentDao=new StudentDao();
studentDao.deleteByFlowId(Integer.parseInt(flowId));
request.getRequestDispatcher("/success.jsp").forward(request, response);
}
}

6.Student.java

 package mvc;

 public class Student {
private Integer flowId;
private int type;
private String idCard;
private String examCard;
private String studentName;
private String location;
private int graded;
/**
* constructor
*/
public Student() { }
public Student(Integer flowId, int type, String idCard, String examCard, String studentName, String location,
int graded) {
super();
this.flowId = flowId;
this.type = type;
this.idCard = idCard;
this.examCard = examCard;
this.studentName = studentName;
this.location = location;
this.graded = graded;
}
/**
* set and get function
* @return
*/
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 getGraded() {
return graded;
}
public void setGraded(int graded) {
this.graded = graded;
} }

7.StudentDao.java

 package mvc;
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 deleteByFlowId(Integer flowId) {
Connection connection=null;
PreparedStatement preparedStatement=null;
List<Student> students=new ArrayList<>();
try {
String driverClass="com.mysql.jdbc.Driver";
String url="jdbc:mysql://localhost:3306/test";
String user="root";
String password="123456";
Class.forName(driverClass);
connection=DriverManager.getConnection(url, user, password);
String sql="DELETE FROM tb2 WHERE flow_id=?";
preparedStatement=connection.prepareStatement(sql);
preparedStatement.setInt(1, flowId);
preparedStatement.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(connection!=null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(preparedStatement!=null) {
preparedStatement.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
} }
public List<Student> getAll() {
Connection connection=null;
PreparedStatement preparedStatement=null;
ResultSet resultSet=null;
List<Student> students=new ArrayList<>();
try {
String driverClass="com.mysql.jdbc.Driver";
String url="jdbc:mysql://localhost:3306/test";
String user="root";
String password="123456";
Class.forName(driverClass);
connection=DriverManager.getConnection(url, user, password);
String sql="SELECT flow_id,type,id_card,exam_card,student_name,location,grade from tb2";
preparedStatement=connection.prepareStatement(sql);
resultSet=preparedStatement.executeQuery();
while(resultSet.next()) {
int flowId=resultSet.getInt(1);
int type=resultSet.getInt(2);
String idCard=resultSet.getString(3);
String examCard=resultSet.getString(4);
String studentName=resultSet.getString(5);
String location=resultSet.getString(6);
int graded=resultSet.getInt(7);
Student student=new Student(flowId, type, idCard, examCard, studentName, location, graded);
students.add(student);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(connection!=null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(preparedStatement!=null) {
preparedStatement.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(resultSet!=null) {
resultSet.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
} return students;
}
}

8.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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
删除操作成功!<br><br>
<a href="listAllStrudents">List All Students</a>
</body>
</html>

9.运行效果

  

MVC设计模式一的更多相关文章

  1. AngularJS_01之基础概述、设计原则及MVC设计模式

    1.AngularJS: 开源的JS框架,用来开发单一页面应用,以及数据操作频繁的场景:2.设计原则: ①YAGNI原则:You Aren't Gonna Need It! 不要写不需要的代码! ②K ...

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

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

  3. Java Web开发中MVC设计模式简介

    一.有关Java Web与MVC设计模式 学习过基本Java Web开发的人都已经了解了如何编写基本的Servlet,如何编写jsp及如何更新浏览器中显示的内容.但是我们之前自己编写的应用一般存在无条 ...

  4. MVC设计模式与三层架构

    三层架构分别是:表示层(Web层).业务逻辑层(BLL层)和数据访问层(DAL层). (1)表示层负责: a.从用户端收集信息 b.将用户信息发送到业务服务层做处理 c.从业务服务层接收处理结果 d. ...

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

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

  6. mvc设计模式和mvc框架的区别

    Spring中的新名称也太多了吧!IOC/DI/MVC/AOP/DAO/ORM... 对于刚刚接触spring的我来说确实晕了头!可是一但你完全掌握了一个概念,那么它就会死心塌地的为你服务了.这可比女 ...

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

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

  8. MVC设计模式(持续更新中)

    MVC设计模式--->英文全称为: model(模型)  View (视图)  Controller(控制)   MVC是一种设计思想.这种思想强调实现模型(Model).视图(View)和控制 ...

  9. iOS中MVC设计模式

    在组织大型项目的代码文件时,我们常用MVC的思想.MVC的概念讲起来非常简单,就和对象(object)一样.但是理解和应用起来却非常困难.今天我们就简单总结一下MVC设计理念. MVC(Model V ...

  10. java MVC设计模式

    MVC(Model View Control)模型-视图-控制器 一.MVC与模板概念的理解 MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器.使用MVC的目的是 ...

随机推荐

  1. windows10安装配置scikit-learn步骤

    安装python-2.7.13.msi(到C:\Python27),把C:\Python27和C:\Python27\Scripts添加到系统环境变量 安装numpy:下载numpy-1.11.3+m ...

  2. Windows Server环境下消息队列之ActiveMQ实战

    环境准备 1.安装jdk1.7+ 2.下载新版ActiveMQ http://activemq.apache.org/ 3.启动activemq服务 4.启动成功后的界面是  5.启动成功后 浏览器访 ...

  3. 不可不看!CSS3中三十一种选择器用法

    原文 The 30 CSS Selectors you Must Memorize 由 Jeffrey Way 发表于 2012 年 6 月,介绍了 30 种最常用的 CSS 选择器用法,多加了一种, ...

  4. Getting Real 摘记

    第二章 起始点 一个很好的做软件的方式就是一开始用它来解决你自己的问题.由于你自己变成了软件的目标受众因此你会知道什么是重要的什么不是.这样做下去将会是推出一个突破性产品的伟大起始点. 手头有多少钱就 ...

  5. 【清华集训 2017】小Y的地铁 [模拟退火]

    小Y的地铁 Time Limit: 50 Sec  Memory Limit: 256 MB Description Input Output 对于每组输入数据,输出一行一个整数,表示除掉这 n 个换 ...

  6. Oracle分析函数Over()

    一.Over()分析函数 说明:聚合函数(如sum().max()等)可以计算基于组的某种聚合值,但是聚合函数对于某个组只能返回一行记录.若想对于某组返回多行记录,则需要使用分析函数. 1.rank( ...

  7. SQL Server 将Id相同的字段合并,并且以逗号隔开

    例如:有表MO_Cook,字段:FoodRoom,name   有如下数据: 要求:将FoodRoom中值相同的字段合并成一行,并将name的值用逗号隔开. 需要用到:STUFF函数. 查询语句如下: ...

  8. 【译】第四篇 Replication:事务复制-订阅服务器

    本篇文章是SQL Server Replication系列的第四篇,详细内容请参考原文. 订阅服务器就是复制发布项目的所有变更将传送到的服务器.每一个发布需要至少一个订阅,但是一个发布可以有多个订阅. ...

  9. [转]计算机视觉之跟踪算法——相关滤波器Correlation Filter

    https://blog.csdn.net/victoriaw/article/details/62416759 ASEF相关滤波器: Average of Synthetic Exact Filte ...

  10. bzoj 3236: 洛谷 P4396: [AHOI2013]作业 (莫队, 分块)

    题目传送门:洛谷P4396. 题意简述: 给定一个长度为\(n\)的数列.有\(m\)次询问,每次询问区间\([l,r]\)中数值在\([a,b]\)之间的数的个数,和数值在\([a,b]\)之间的不 ...