SpringMVC-01-回顾MVC

1. 回顾MVC

1.1. 什么是MVC

  • MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。
  • 是将业务逻辑、数据、显示分离的方法来组织代码。
  • MVC主要作用是降低了视图与业务逻辑间的双向偶合
  • MVC不是一种设计模式,MVC是一种架构模式。当然不同的MVC存在差异。

Model(模型): 数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件 (包含数据和行为),不过现在一般都分离开来:Value Object(数据Dao) 和 服务层(行为Service)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。

**View(视图):**负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。

**Controller(控制器):**接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。 也就是说控制器做了个调度员的工作。

基于Servlet的MVC模式的具体实现如下:

  • 模型:一个或多个JavaBean对象,用于存储数据(实体模型,由JavaBean类创建)和处理业务逻辑(业务逻辑,由一般的Java类创建)
  • 视图:一个或多个JSP页面,向控制器提交数据和为模型提供数据显示,JSP页面主要使用HTML标记和JavaBean标记来显示数据
  • 控制器:一个或多个Servlet对象,根据视图提交的请求进行控制,即将请求转发给处理业务逻辑的JavaBean,并将处理结果存放到实体模型JavaBean中,输出给视图显示

最典型的MVC就是JSP + servlet + javabean的模式。

1.2. Model1时代

  • 在web早期的开发中,通常采用的都是Model1。
  • Model1中,主要分为两层,视图层和模型层。
  • Model1优点:架构简单,比较适合小型项目开发;
  • Model1缺点:JSP职责不单一,职责过重,不便于维护;

1.3. Model2时代

  • Model2把一个项目分成三部分,包括视图、控制、模型。

职责分析:

Controller:控制器

  • 取得表单数据
  • 调用业务逻辑
  • 转向指定的页面

Model:模型

  • 业务逻辑
  • 保存数据的状态

View:视图

  • 显示页面

Model2这样不仅提高的代码的复用率与项目的扩展性,且大大降低了项目的维护成本。Model 1模式的实现比较简单,适用于快速开发小规模项目,Model1中JSP页面身兼View和Controller两种角色,将控制逻辑和表现逻辑混杂在一起,从而导致代码的重用性非常低,增加了应用的扩展性和维护的难度。Model2消除了Model1的缺点。

1.4. 回顾Servlet

  1. 新建一个Maven工程当做父工程! pom依赖!

    junit junit 4.12 org.springframework spring-webmvc 5.1.9.RELEASE javax.servlet servlet-api 2.5 javax.servlet.jsp jsp-api 2.2 javax.servlet jstl 1.2
  2. 建立一个Moudle:springmvc-01-servlet , 添加Web app的支持!

  3. 导入servlet 和 jsp 的 jar 依赖

    javax.servlet servlet-api 2.5 javax.servlet.jsp jsp-api 2.2
  4. 编写一个Servlet类,用来处理用户的请求

    package com.kuang.servlet;

    //实现Servlet接口
    public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //取得参数
    String method = req.getParameter("method");
    if (method.equals("add")){
    req.getSession().setAttribute("msg","执行了add方法");
    }
    if (method.equals("delete")){
    req.getSession().setAttribute("msg","执行了delete方法");
    }
    //业务逻辑
    //视图跳转
    req.getRequestDispatcher("/WEB-INF/jsp/hello.jsp").forward(req,resp);
    }

    复制代码
     @Override
     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         doGet(req,resp);
     }

    }

  5. 编写Hello.jsp,在WEB-INF目录下新建一个jsp的文件夹,新建hello.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>

    Kuangshen ${msg}
  6. 在web.xml中注册Servlet



    HelloServlet
    com.kuang.servlet.HelloServlet


    HelloServlet
    /user

  7. 配置Tomcat,并启动测试

    • localhost:8080/user?method=add
    • localhost:8080/user?method=delete

MVC框架要做哪些事情

  1. 将url映射到java类或java类的方法。
  2. 封装用户提交的数据。
  3. 处理请求--调用相关的业务处理--封装响应数据。
  4. 将响应的数据进行渲染 . jsp / html 等表示层数据。

说明:

常见的服务器端MVC框架有:Struts、Spring MVC、ASP.NET MVC、Zend Framework、JSF;常见前端MVC框架:vue、angularjs、react、backbone;由MVC演化出了另外一些模式如:MVP、MVVM 等等...

相关推荐
我命由我123456 小时前
人脸识别 - 人脸识别选帧
java·人工智能·python·算法·安全·java-ee·人脸识别
宠友信息6 小时前
IM系统开发技术路线分析,即时通讯源码助力快速搭建聊天应用
java·spring boot·redis·websocket·mysql·uni-app·vue
long3167 小时前
封装(Encapsulation)
java·人工智能·ai·ai编程
yaoxin5211237 小时前
502. Java 反射 - 编写 MessageInterceptor 类
java·开发语言
风流 少年7 小时前
Spring AI 2.0:阿里云百炼平台(工作流应用)
java·后端·spring
长谷深风1117 小时前
AI Tool 设计:粒度、参数与错误恢复怎么做
java·大数据·人工智能·ai agent·agent工作流·智能体设计·ai产品设计
QQ_21696290968 小时前
【项目编号:project95315】SpringBoot公共自习室管理系统:座位预约、房间管理、签到核销、公告规则完整实战
java·spring boot·后端
嵌入式阿蔡8 小时前
面试高频考点 01:volatile / 中断 / 堆栈 八股精讲
java·面试·职场和发展·嵌入式实时数据库
秋饼9 小时前
LangChain4j + Java 实现企业级 Text-to-SQL 智能问数系统:从自然语言到安全可控的数据洞察
java·ai·技术分享·后端开发
Escalating_xu9 小时前
【C++ STL简介】从六大组件到容器、迭代器与算法协作
java·c++·算法