• 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

  • 相关阅读:
    逆波兰表达式解数学运算(c#)
    杂文
    WebDriverExtensionsByC#
    cookie使用
    Discuz
    重构中学习
    生活知识
    js和 jquery对象
    jquery中is的用法
    html下select追加元素,IE下错误
  • 原文地址:https://www.cnblogs.com/Mufasa/p/15974453.html
Copyright © 2020-2023  润新知