前言:

本文内容:学习方法说明、回顾MVC架构、回顾Servlet

推荐免费SpringMVC基础教程视频:【狂神说Java】SpringMVC最新教程IDEA版通俗易懂_哔哩哔哩_bilibili

学习方法说明

SSM: Mybatis+Spring+SpringMVC (MVC三层架构)

学习过程:

  • JavaSE:老师带领学习
  • JavaWeb:老师带领学习
  • SSM框架:研究官方文档,锻炼自学能力,锻炼笔记能力,锻炼项目能力

之后还要学的内容:SpringMVC+Vue+SpringBoot+SpringCloud+JVM+JUC并发+POI+Linux+Git+MybatisPlus+MQ+Redis+ElasticSearch+Docker

学习重点:

  • Spring重点:IOC 和 AOP

  • SpringMVC重点:SpringMVC执行流行

  • SSM框架的整合

SpringMVC官方文档:Servlet Stack 上的 Web (spring.io)

回顾MVC架构

回顾什么是MVC

  • MVC即模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范
  • 将业务逻辑、数据、显示的代码分离
  • MVC降低了视图与业务逻辑之间的双向耦合
  • MVC不是一种设计模式,而是一种架构模式,不同的MVC之间存在差异

Model:数据层和业务层(Dao,Service)

View:试图层,为用户展示的界面(JSP等)

Controller:控制层,接受用户的输入并调用模型和视图去完成用户的需求(Servlet)

拓展

项目框架是不断演进的,而并非直接设计好的

去IOE的重要性

回顾Servlet

  1. 新建Maven工程当作父工程(删除src),引入pom依赖

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.19</version>
    </dependency>
    <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
    </dependency>
    <dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.1</version>
    </dependency>
    <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
    </dependency>
  2. 建立一个Module:springmvc-01-servlet,添加Web支持

  3. 导入servlet和jsp的jar依赖(父类导入的话,这里也可以不导入)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
    </dependency>
    <dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.1</version>
    </dependency>
  4. 编写一个Servlet类,用来处理用户请求

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    package com.jokerdig.servlet;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;

    /**
    * @author Joker大雄
    * @data 2022/5/30 - 14:34
    **/
    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/test.jsp").forward(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    doGet(req,resp);
    }
    }
  5. 编写页面代码

    test.jsp

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
    <title>Title</title>
    </head>
    <body>
    <h1>${msg}</h1>
    </body>
    </html>

    form.jsp

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
    <title>Title</title>
    </head>
    <body>

    <form action="/hello" method="post">
    <input type="text" name="method">
    <input type="submit">
    </form>

    </body>
    </html>
  6. 添加Tomcat,测试运行

    1
    2
    3
    4
    http://localhost:8080/servlet/hello?method=add
    执行了add方法
    http://localhost:8080/servlet/hello?method=delete
    执行了delete方法

小结

  • 将URL映射到Java类或Java类的方法
  • 封装用户提交数据
  • 处理请求–调用相关的业务处理–封装响应数据
  • 将响应的数据进行渲染,在页面展示