一、简述
最近在做自己的毕业设计过程中,有涉及到MVC模式,所以就去调研了一下MVC,在这里与大家分享一下。MVC(Model-View-Controller)是软件开发中的一种软件架构模式,把软件系统分为:模型(Model)、视图(View)、控制器(Controller),其主要目的是实现一种动态的系统设计,使后续对系统的修改和扩展简化,并且使系统某一部分的重复利用成为可能。简而言之,MVC架构模式是为了降低系统模块间的耦合度,下面我们来一起了解一下吧~
二、MVC模式
MVC模式代表Model-View-Controller(模型-视图-控制器)模式:
Model(模型):承载数据,并对用户提交的请求进行计算的模块。Model模块主要包含数据承载Bean和业务处理Bean,其中数据承载Bean是指实体类,如Student、User等,而业务处理Bean则是指Service或Dao对象,专门用于处理用户提交的请求。
View(视图):负责与用户交互以及数据的渲染。
Controller(控制器):是View与Model的中间枢纽,将用户请求转发给对应的Model进行处理,并将Model处理的结果返回给相应的View。
MVC模式工作流程是这样的:
用户通过View提交请求,可以是表单请求、超链接请求、AJAX请求等。
View将用户请求传递到服务器端Controller控制器。(其实也可以理解为用户直接提交请求给Controller)
服务器端Controller控制器接收到请求后对请求进行解析,找到相应的Model对用户请求进行处理。
Model处理后,将结果返回给Controller控制器。
Controller在接收到结果后,选择对应的View视图。
View渲染后,展示给用户。
三、MVC实现
现在,我们使用电子图书馆书籍的查询、删除、增加、修改来帮助理解MVC模式。(基于SSM)
1、数据库准备(基于MySql)
首先我们,创建一个数据库表books,其包含bookID、bookName、bookCounts、detail四个列,然后插入对应数据。
2、Model模块构建
首先建立与数据库表books对应的实体类Books.java
public class Books { private int bookID; private String bookName; private int bookCounts; private String detail; public Books(){}; public Books(int bookID, String bookName, int bookCounts, String detail) { this.bookID = bookID; this.bookName = bookName; this.bookCounts = bookCounts; this.detail = detail; } public int getBookID() { return bookID; } public String getBookName() { return bookName; } public int getBookCounts() { return bookCounts; } public String getDetail() { return detail; } public void setBookID(int bookID) { this.bookID = bookID; } public void setBookName(String bookName) { this.bookName = bookName; } public void setBookCounts(int bookCounts) { this.bookCounts = bookCounts; } public void setDetail(String detail) { this.detail = detail; }}
然后建立Dao层(基于Mybatis),BookMapper接口和BookMapper.xml,Dao层主要负责与底层数据库的连接,以及数据增删改查等业务。
public interface BookMapper { //增加一本书 int addBook(Books books); //删除一本书 int deleteBookById(int id); //更新一本书 int updateBook(Books books); //查询一本书 Books queryBookById(int id); //查询全部的书 ListqueryAllBook();}
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.mike.dao.BookMapper"> <insert id="addBook" parameterType="Books"> insert into sssmbuild.books (bookName,bookCounts,detail) values (#{bookName},#{bookCounts},#{detail}); insert> <delete id="deleteBookById" parameterType="int"> delete from sssmbuild.books where bookID = #{id}; delete> <update id="updateBook" parameterType="Books"> update sssmbuild.books set bookName = #{bookName},bookCounts=#{bookCounts},detail = #{detail} where bookID = #{bookID} update> <select id="queryBookById" parameterType="int" resultType="Books"> select * from sssmbuild.books where bookID = #{bookID} select> <select id="queryAllBook" resultType="Books"> select * from sssmbuild.books select>mapper>
最后建立Service层,包含BookService接口和BookServiceImpl.java,Service层主要负责实现业务逻辑,根据需求调用Dao层。
public interface BookService { //增加一本书 int addBook(Books books); //删除一本书 int deleteBookById(int id); //更新一本书 int updateBook(Books books); //查询一本书 Books queryBookById(int id); //查询全部书 ListqueryAllBook();}
public class BookServiceImpl implements BookService{ //service 层掉dao层 private BookMapper bookMapper; public void setBookMapper(BookMapper bookMapper){ this.bookMapper = bookMapper; } public int addBook(Books books) { return bookMapper.addBook(books); } public int deleteBookById(int id) { return bookMapper.deleteBookById(id); } public int updateBook(Books books) { return bookMapper.updateBook(books); } public Books queryBookById(int id) { return bookMapper.queryBookById(id); } public ListqueryAllBook() { return bookMapper.queryAllBook(); }}
3、Controller模块构建
创建BookController.java(基于SpringMVC),controller层根据请求,调用相应的service层。
@Controller@RequestMapping("/book")public class BookController { //controller调service层 @Autowired @Qualifier("BookServiceImpl") private BookService bookService; @RequestMapping("/allbook") public String queryAllBook(Model model){ List books = bookService.queryAllBook(); model.addAttribute("list",books); return "allbook"; }}
4、View层模块构建
创建index.jsp和allbook.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %><html> <head> <title>首页title> head> <body> <h3> <a href="${pageContext.request.contextPath}/book/allbook">进入书籍页面a> h3> body>html>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>书籍展示title>head><body><h1>书籍展示h1><table class="table"> <thead> <tr> <th>书籍编号th> <th>书籍名称th> <th>书籍数量th> <th>书籍详情th> tr> thead> <tbody> <c:forEach var="book" items="${list}"> <tr> <td>${book.bookID}td> <td>${book.bookName}td> <td>${book.bookCounts}td> <td>${book.detail}td> tr> c:forEach> tbody>table>body>html>
好了,今天的分享就到这了~其实我觉得这篇讲的是不够透彻的,后续我会持续关注MVC,有了更高层次的理解后,会再分享一篇更好的文章给大家~