mvc动态控制器_真的懂MVC吗?

本文介绍了MVC模式的概念、工作流程,并通过电子图书馆书籍管理的例子详细阐述了Model、View、Controller各层的职责。使用Mybatis和SpringMVC实现了数据操作,展示了如何在实际项目中应用MVC模式降低模块耦合度。
摘要由CSDN通过智能技术生成

一、简述

    最近在做自己的毕业设计过程中,有涉及到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。

f63c55944f829c96328f8364e2181ca0.png

MVC模式工作流程是这样的:

  1. 用户通过View提交请求,可以是表单请求、超链接请求、AJAX请求等。

  2. View将用户请求传递到服务器端Controller控制器。(其实也可以理解为用户直接提交请求给Controller)

  3. 服务器端Controller控制器接收到请求后对请求进行解析,找到相应的Model对用户请求进行处理。

  4.  Model处理后,将结果返回给Controller控制器。

  5. Controller在接收到结果后,选择对应的View视图。

  6. 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,有了更高层次的理解后,会再分享一篇更好的文章给大家~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值