SpringMVC技术总结(待完结)

SpringMVC技术总结

1,什么是MVC

  • MVC 模型(dao、service)、视图(jsp)、控制器(servlet),是一种软件设计规范
  • 将业务逻辑、数据、显示分离的方法来组织代码
  • MVC主要作用是降低 视图业务逻辑间的双向耦合
  • MVC不是一种设计模式,MVC是一种构架模式

1.1,Model(模型)

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

1.2,View(视图)

​ 复杂进行模型的展示,一般就是见到的用户界面,前端需要的东西

1.3,Controller(控制器)

​ 接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。(调度员)

扩展=》pojo:实体类对象;vo:视图层对象;dto:数据传输的对象

image-20220120204854045

1.4,model1时代

只分为两层,视图层和模型层

jsp的本质就是一个servlet

image-20220120205145502

优点:架构简单,小型项目开发(当前应该不如springBoot)

缺点:JSP职责不单一,不便于维护

扩展:架构是设计好的还是演进的?演进的,例如微服务=>集群

alibaba(php)=>高并发(java)=>王坚(去IOE)=>mysql(alisql\aliredis)=>微服务

1.5,model2

分为视图、控制、模型三层

image-20220120205622698

1,用户发起请求

2,servlet接收请求,并调用对应的业务逻辑

3,业务处理完毕,返回并更新数据给servlet

4,servlet转向JSP,由JSP来渲染页面

5,响应给前端更新后的页面

  • controller层

1,取得表单数据

2,调用业务逻辑

3,转向自动的页面

  • model层

1,业务逻辑

2,保存数据的状态

  • view层

1,显示页面

​ model2时代时,不仅提高代码的复用率与项目的扩展性,且大大降低了项目的维护成本。model1模式的实现比较简单,适用于快速开发小规模的项目,model1中的JSP页面身兼View和controller两种角色,将控制和视图混杂,导致代码复用性差,增加扩展和维护的难度

2,回顾servlet

1,maven依赖(父级项目)

        <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>

2,add Framework Support

image-20220120212439002

3,导入sevlet依赖

        <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>

4,编写一个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方法");
        }
        //业务逻辑
        System.out.println("业务执行");

        //视图跳转
//        resp.sendRedirect("");
        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,注册servlet包

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>com.activeclub.servlet.HelloServlet</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/hello111</url-pattern>
    </servlet-mapping>

<!--    <session-config>-->
<!--        <session-timeout>15</session-timeout>-->
<!--    </session-config>-->
<!--    -->
<!--    <welcome-file-list>-->
<!--        <welcome-file>index.jsp</welcome-file>-->
<!--    </welcome-file-list>-->
</web-app>

6,jsp前端

hello.jsp

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

7,配置tomcat

MVC框架做的事情:

1,将url映射到java类或者java类的方法中

2,封装用户提交的数据

3,处理请求-调用相关的业务处理-封装响应数据

4,将响应的数据进行渲染.jsp/html等表示层数据

扩展:

​ 常见的服务端MVC框架有:struts、struts2、springMVC、ASP.NET MVC、Zend Framework、JSF;

​ 常见的前端MVC框架有:vue、angularjs、react、backbone;

​ 由MVC演化出的另外一些模式如:MVP、MVVM()等

3,SpringMVC技术

1,轻量级,简单易学

2,高效,基于请求响应的MVC框架

3,与Spring无缝结合

4,约定优于配置

5,功能强大:RESTful(使用/号分割)、数据验证、格式化、本地化、主题

6,简洁灵活

​ Spring的web框架围绕DispatcherServlet【调度servlet】设计

​ DispatcherServlet的作用是将请求分发到不同的处理器,从spring2.5开始,使用java5或者以上版本的用户可以采用基于注解的形式进行开发,简洁!!!

​ 正式因为SpringMVC简单、便捷、易学,天生的和Spring无缝衔接(SpringIOC和AOP),使用约定优于配置,能够进行简单的junit测试,支持。。。,所以使用的公司很多。

3.1,中心控制器

​ Spring MVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架。

image-20220120205014276

image-20220121000045491

image-20220121000247991

2,Ajax技术

​ Ajax即Asynchronous Javascript And XML(异步JavaScript和XML)在 2005年被Jesse James Garrett提出的新术语,用来描述一种使用现有技术集合的‘新’方法,包括: HTMLXHTML, CSS, JavaScript, DOM, XML, XSLT, 以及最重要的XMLHttpRequest。 [3] 使用Ajax技术网页应用能够快速地将增量更新呈现在用户界面上,而不需要重载(刷新)整个页面,这使得程序能够更快地回应用户的操作。 [3]

​ 使用Ajax技术可以创建更接近本地桌面应用的直接、高可用、更丰富的WEB页面

例如:百度的搜索页就是这种

image-20220119223554629

posted on 2022-03-07 08:57  周健康  阅读(160)  评论(0编辑  收藏  举报

导航