Version: Next

1. 回顾MVC

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

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

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

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

2. 回顾Servlet

  • 新建Maven项目,把src删了

    • junit
    • Spring
    • Servlet
    • JSTL和EL
    • JSP
    <dependencies>
    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.1.9.RELEASE</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.2</version>
    </dependency>
    <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
    </dependency>
    </dependencies>
  • 新建空maven模块,springmvc-01-servlet



  • 编写Servlet类

    public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //1.获取前端参数
    String method = req.getParameter("method");
    if ("add".equals(method)) {
    req.getSession().setAttribute("msg", "执行了add方法");
    }
    if ("delete".equals(method)) {
    req.getSession().setAttribute("msg", "执行了delete方法");
    }
    //2.调用业务层
    //3.视图转发或者重定向
    req.getRequestDispatcher("/WEB-INF/jsp/test.jsp").forward(req, resp);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    doGet(req, resp);
    }
    }
  • web.xml注册servlet

    <servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>com.bsx.servlet.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
    </servlet-mapping>
  • test.jsp和form.jsp

    • form.jsp

      <%@ 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>
    • test.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
    <title>Title</title>
    </head>
    <body>
    ${msg}
    </body>
    </html>
  • 配置Tomcat

  • 访问http://localhost:8080/hello?method=add

3. MVC框架要做那些事情

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

MVC -> MVVM ( Model View ViewMidel双向绑定)

4. 为什么学习SpringMVC

  1. 轻量级,简单易学
  2. 高效,基于请求响应的MVC框架
  3. 与Spring兼容性好,无缝结合
  4. 约定优于配置
  5. 功能强大:RESTful、数据验证、格式化、本地化、主题等
  6. 简洁灵活

Spring的Web框架围绕DispatcherServlet(调度Servlet)设计,其作用是将请求分发到不同的处理器