首页 > 其他分享 >实现一个自定义MVC

实现一个自定义MVC

时间:2024-03-21 15:55:56浏览次数:27  
标签:自定义 实现 处理 MVC 类中 页面

  在Spring核心思想之 AOP:在自定义容器基础上实现AOP功能的容器上实现类似SpringMVC的功能。先分析下SpringMVC功能,在Spring MVC快速搭建初体验中:

    1、web.xml配置的功能被实现了WebApplicationInitializer的类替代,即不用解析web.xml配置文件直接执行WebApplicationInitializer实现类即可。

    2、关于访问路径与页面的匹配,直接在控制类中实现,也不用进行xml文件相关配置。

    3、使用@EnableWebMvc使WebMvc可用。其中使用Java Bean的方式,配置了页面路径、处理方式等相关内容。

  本质就是处理url匹配应用服务,如何匹配的问题。自定义实现中通过LFDispatcherServlet,其实现关系图如下:

   在看看其类图:

                

  其中:

      1)handlerMappings(list)保存控制类中关于requestMapping的解析内容;

      2)handlerAdapters(map)保存handlerMapping与handler(实际处理业务逻辑)的映射;

      3)viewResolvers(list)保存渲染页面的resolver——即处理页面相关内容。

   以上关于配置文件及页面等资源文件的处理结束后,就是等待用户访问请求。

  接受访问请求:重写Servelet中的doPost的方法,具体内容如下:

                

  这个方法的作用就是访问的url与handlerMappings中的匹配,如果匹配获取handlerAdapters中的处理对象,利用这个对象中的处理逻辑得到处理页面和模块,最后返回给客户端。

  这个过程中就体现了dispatch,看下图:

                

  最早使用Servelet时在配置文件中需要将servelet与其对应执行类一一映射,访问请求没问题就直接调用执行对象了。而MVC中映射在控制类中配置,同时多了一步就是将所有的映射全部保存在一个servelet中DispatcherServlet,这样一个全局的servelet就可以处理接受到的所有请求。

   SpringMVC就是在表现层干了这么一件事,却优势多多——是不是精兵简政了。

  看看@EnableWebMvc:

                    

              

   看类中的方法是不是与自定义中的类似。在这个类中还有很多其他方法,比如addInterceptors(Spring MVC拦截器(Interceptor)使用)等增加额外的功能。

 

  实现源码及测试代码:https://gitee.com/duckinpool/homework_2021/tree/master/1.3_springmvc

标签:自定义,实现,处理,MVC,类中,页面
From: https://www.cnblogs.com/ilovebath/p/18087077

相关文章

  • react router v6实现嵌套路由
    做一个简单的笔记有两种方式可以实现使用标签BrowserRouter来实现使用APIcreateBrowserRouter来实现注意:createBrowserRouter是6.4版本才引入的这是官方文档注意,这两个是不兼容的使用标签BrowserRouter来实现创建路由//src/router/index.tsxconstrouter=[......
  • ElasticSearch中使用ik分词器进行实现分词操作
    简介:在默认的情况下,ES中只存在Stander分词器,但是这个分词器往往不满足我们的分词需求,这里通过ik分词器进行自定义我们的分词操作1、第一步将ik分词器进行下载下载地址:https://github.com/medcl/elasticsearch-analysis-ik需要注意,需要选择和自己的ES版本对应的版本2、将ik分词......
  • 若依基本框架内容介绍、多数据源配置、命令、自定义打包脚本
    若依是一个能够帮助我们快速搭建一个管理平台的开发框架官网地址:https://doc.ruoyi.vip/ruoyi/ 一、基本框架内容介绍二、多数据源配置三、命令、自定义打包脚本 一、基本框架内容1.文件结构Common:用的比较多的是utils包中的工具(处理字符串、日期、获取ip、发送请求、......
  • m基于FPGA的电子钟verilog实现,可设置闹钟,包含testbench测试文件
    1.算法仿真效果本系统进行Vivado2019.2平台的开发,测试结果如下所示:   2.算法涉及理论知识概要       电子钟是现代生活中常见的计时工具,其准确性和功能性不断提高。基于FPGA的电子钟设计不仅具有灵活的可定制性,还能通过集成其他功能(如闹钟)来增强实用性。Verilog......
  • 基于rust的区块链实现
    在开源框架Substrate中构建核心区块链基础设施的初学者友好教程。substrate是一个强大的区块链框架,它允许开发者构建自定义的区块链。Substrate提供了大量的模块化组件,使得开发者可以选择和定制这些组件以满足他们的特定需求,从而极大地加快了区块链开发的速度和灵活性。Subst......
  • Springboot实现qq邮件的发送
    一、打开必要的邮件设置首先登录qq邮箱官网登录之后,在设置中将传输协议给打开,我们需要用这个秘钥作为发件人的邮箱授权。这里开启之后,记住这个秘钥。二、代码编写首先我们将作为发送邮件的账户信息写入配置文件。spring:mail:host:smtp.qq.comusername......
  • Flutter实现贪吃蛇小游戏
    **Flutter实现贪吃蛇小游戏**在这个小游戏中,玩家需要操纵一条小蛇来吃掉屏幕上的食,随着吃食物的数量增加,小蛇的身体也会不断变长,游戏的难度也会随之增加。首先,使用Flutter来完成这个小游戏的编译需要使用到、Flutter提供的一些基本组......
  • 自定义修饰语
    此功能允许使用示例图像添加自定义修饰符,而不仅仅是使用文本值。在EasyDiffusion安装文件夹中,查找一个modifiers文件夹-如果不存在则创建它。您将在此处复制自定义修改器图像。要保留纵横比,请生成512x512的示例图像。如果图像直接位于其中,modifiers那么它将被添加到“修改......
  • 自定义模型
    什么是StableDiffusion模型?EasyDiffusion使用“models”来创建图像。这些模型使用许多图像和图像描述进行训练。在安装过程中,会下载默认模型,即sd-v1-5模型。还存在其他模型。其中一些模型使用sd-v1-5作为基础,然后在其他图像上进行训练,而其他模型则从头开始训练。根......
  • 使用元类实现Django的ORM
    一、ORM基本介绍ORM是python编程语言后端web框架Django的核心思想,“ObjectRelationalMapping”,即对象-关系映射,简称ORM。二、实现目标创建一个实例对象,用创建它的类名当做数据表名,用创建它的类属性对应数据表的字段,当对这个实例对象操作时,能够对应MySQL语句如图:三、......