MVC编程模式

1.关于MVC

①.M:Model

②.V:View

③.C:Controller

MVC是Model-View-Controller的简称,即模型-视图-控制器。

MVC是一种设计模式,它把应用程序分成三个核心模块:模型、视图、控制器,它们各自处理自己的任务。

2.好处:对一个请求不使用MVC,Servlet、JSP都可以实现,但是这样的缺点就是需要在Servlet中拼写html代码,在JSP中书写处理请求的代码

MVC的处理过程

下述代码不足之处:没有使用数据库连接池、DBUtils、DAO等等,一个请求一个Servlet,应该是多个请求(一个模块)一个Servlet,删除时候没有加入jquery。只是为了呈现例子。

此处使用

M(DAO)

V(JSP)在页面上填写java代码实现显示

C(Servlet):受理请求,获取请求参数,调用DAO方法,把DAO的返回值放入request中,转发(重定向)页面。

来呈现。

3.代码呈现

创建学生表:id ,name ,hiredate

mvc_query.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>
	<!-- 注意servlet-mapp一致 -->
	<a href="getAllStudent">获取所有学生信息</a>
</body>
</html>

mvc_query_servlet.java

/**
 * Servlet implementation class mvc_query_servlet
 */
@WebServlet("/getAllStudent")
public class mvc_query_servlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.getRequestDispatcher("/mvc_query_show.jsp")
					.forward(request, response);
	}
}

mvc_query_show.jsp

<%@page import="xixihaha.StudentDAO"%>
<%@page import="xixihaha.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>
	<table border="1" cellpadding="10" cellspacing="0">
	<tr>
		<th>IDCard</th>
		<th>Name</th>
		<th>Hire_Date</th>
		<th>Delete</th>
	</tr>
	<%
		StudentDAO dao = new StudentDAO();
		List<Student> ls = dao.getAll();
		for(Student s : ls){
	%>
	<tr>
		<td>
			<%=s.getIdCard() %>
		</td>
		<td>
			<%=s.getStuName() %>
		</td>
		<td>
			<%=s.getHireDate().toString() %>
		</td>
		<td>
		<!-- get请求,区分删的是哪条信息 -->
			<a href="deleteStu?id=<%=s.getIdCard() %>">Delete</a>
		</td>
	</tr>
	<%
	}
	%>
	</table>
</body>
</html>

studentDAO.java

public class StudentDAO {

	private Connection getConnection(){
		Connection conn = null;
		String driverClass = "com.mysql.jdbc.Driver";
		String url = "jdbc:mysql://127.0.0.1:3306/mydatabase";
		String user = "root";
		String password = "qiaolezi";
		try {
			Class.forName(driverClass);
			conn = DriverManager.getConnection(url, user, password);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return conn;
	}
	/**
	 * 删除指定id的学生
	 * @param id
	 */
	public void deleteId(Integer id){
		PreparedStatement ps = null;

		String sql = "delete from students where id = ?";
		try {
			ps = getConnection().prepareStatement(sql);
			ps.setInt(1, id);
			ps.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 获取所有学生信息
	 * @return
	 */
	public List<Student> getAll(){
		PreparedStatement ps = null;
		ResultSet rs = null;
		List<Student> students = new ArrayList<Student>();
			try {
				String sql = "select id ,stu_name,hire_date from students";
				ps = getConnection().prepareStatement(sql);
				rs = ps.executeQuery();
				while(rs.next()){
					int id = rs.getInt(1);
					String name = rs.getString(2);
					Date date = (Date)rs.getObject(3);
					students.add(new Student(id,name,date));
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		return students;
	}
}

关于什么时候重定向?

若目标的响应页面,不需要从request读取任何值,则可以使用重定向。还可以防止表单的重复提交。

时间: 2025-01-12 07:58:29

MVC编程模式的相关文章

MVC 编程模式及其变种

MVC 编程模式及其变种 MVC的全名是Model View Controller, 是模型(model)-视图(view)-控制器(controller)的缩写,这是一种很常见的编程模型.MVC最早提出的时候是为了把数据和视图分离开来,然后用控制器作为胶水来粘合数据和实体之间的关系.这就是关注点分离的设计理念,也是单一职责原则(Single-Resposibility Principle). 在我们的开发过程中, 视图用来展现界面, 我们的模型处理业务, 持有数据, 而控制器是他们之间的中间人

利用MVC编程模式-开发一个简易记事本app

学了极客学院一个开发记事本的课程,利用自己对MVC编程模式的简单理解重写了一遍该app. github地址:https://github.com/morningsky/MyNote MVC即,模型(model)-视图(view)-控制器(controller),有效的实现了数据-业务逻辑-视图显示的代码分离,使得加入新功能时不需要重新编写业务逻辑,大大提高了代码的可维护性. 在这个案列中,一开始只是开发了添加文字内容的记事功能,添加图片功能时在activity文件中写入imageview的逻辑

Gof 设计模式 、MVC 编程模式

主题: Gof 设计模式 .MVC 设计模式 名词解释: OOP  (面向对象程序设计) 接口 抽象类 Refactoring(重构方法) GoF(Gang of Four),中文名——四人组.GoF是一种设计模式. via http://baike.so.com/doc/176639.html Model–view–controller (MVC) via http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller 有力

MVC架构模式

MVC架构模式 参考: MVC框架_百度百科https://baike.baidu.com/item/MVC%E6%A1%86%E6%9E%B6/9241230?fr=aladdin MVC框架 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑.MVC被

MVC 编程模型及其变种

MVC 编程模型及其变种 MVC全称是Model View Controller, 这是一个模型(model)-查看(view)-调节器(controller)缩写,这是通过通用的编程模型非.MVC当为了分离数据和视图首次提出,数据和实体之间的关系.这就是关注点分离的设计理念,也是单一职责原则(Single-Resposibility Principle). 在我们的开发过程中, 视图用来展现界面, 我们的模型处理业务, 持有数据, 而控制器是他们之间的中间人. GoF四人组觉得MVC是"一组用

ASP.NET MVC 编程参考

ASP.NET MVC 编程参考 转载请注明出处:http://surfsky.cnblogs.com MVC    参考 http://msdn.microsoft.com/zh-cn/dd408813.aspx    MVC 的基本思想        ·Module      : 模型.可以看做实体类,可用各种技术实现,例如Microsoft Entity Framework.NHibernate等        ·View        : 视图.可以与某个实体类关联,此时视图则负责展示该

【游戏设计模式】之四 《游戏编程模式》读书笔记:全书内容梗概总结

本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接:http://blog.csdn.net/poem_qianmo/article/details/53240330 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 本文的Github版本:QianMo/Reading-Notes/<游戏编程模式>读书笔记 这是一篇超过万字读书笔记,总结了<游戏编程模式>一书中所有章节与内容的知识梗概. 我们知道,游戏行业其实一直很缺一本系

JAVA学习篇--JAVA的两种编程模式对比

在Drp项目中,讲解了两种编程模式Model 1和Model2,下面是对这两种模式的简单理解,以及由于Model2是基于MVC架构的模式,就将我们易混淆的MVC与我们之前学的三层架构进行对比学习一下. Model1 所谓Model1就是JSP大行其道的时代,在Model1模式下,整个Web应用几乎全部由JSP页面组成,JSP页面接收处理客户端请求,对请求处理后直接做出响应.用少量的JavaBean来处理数据库连接.数据库访问等操作. 代码示例:修改用户信息 主页面的js跳转: function

asp.net简述MVC开发模式

详情请参考:http://www.runoob.com/aspnet/mvc-intro.html 1.MVC 是三种 ASP.NET 编程模式中的一种.MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式. 2.MVC - 应用程序文件夹 所有的 MVC 应用程序的文件夹名称都是相同的.MVC 框架是基于默认的命名.控制器写在 Controllers 文件夹中,视图写在 Views 文件夹中,模型写在 Models 文件夹