SpringMVC请求、响应与异步请求

news2024/11/16 9:54:47

文章目录

  • SpringMVC核心架构的具体流程步骤
  • 一、SpringMVC请求与响应
    • 1、SpringMVC Handle原理与应用
      • 1.1 概念
      • 1.2 Spring MVC Handler的三种写法
    • 2、SpringMVC 视图解析器
      • 2.1 概念
      • 2.2 配置视图解析器
  • 二、SpringMVC异步请求
    • 1、 Ajax基本配置
    • 2、 异步与同步
      • 优缺点:
      • 如何设置异步或者同步
    • 3、局部刷新


上篇:SpringMVC的配置及概念

SpringMVC核心架构的具体流程步骤

  • 首先用户发送请求——>DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行 处理,作为统一访问点,进行全局的流程控制;
  • DispatcherServlet——>HandlerMapping, HandlerMapping 将会把请求映射为 HandlerExecutionChain 对象(包含一 个Handler 处理器(页面控制器)对象、多个HandlerInterceptor 拦截器)对象,通过这种策略模式,很容易添加新 的映射策略;
  • DispatcherServlet——>HandlerAdapter,HandlerAdapter 将会把处理器包装为适配器,从而支持多种类型的处理器, 即适配器设计模式的应用,从而很容易支持很多类型的处理器;
  • HandlerAdapter——>处理器功能处理方法的调用,HandlerAdapter 将会根据适配的结果调用真正的处理器的功能处 理方法,完成功能处理;并返回一个ModelAndView 对象(包含模型数据、逻辑视图名);
  • ModelAndView 的逻辑视图名——> ViewResolver,ViewResolver 将把逻辑视图名解析为具体的View,通过这种策 略模式,很容易更换其他视图技术;
  • View——>渲染,View 会根据传进来的Model 模型数据进行渲染,此处的Model 实际是一个Map 数据结构,因此 很容易支持其他视图技术;
  • 返回控制权给DispatcherServlet,由DispatcherServlet 返回响应给用户,到此一个流程结束。

在这里插入图片描述

一、SpringMVC请求与响应

依赖

  <dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.10.RELEASE</version>
    </dependency>
  </dependencies>

1、SpringMVC Handle原理与应用

1.1 概念

  • Handler是一个Controller的对象和请求方式的组合的一个Object对象

  • HandleExcutionChains是HandleMapping返回的一个处理执行链,它是对Handle的二次封装,将拦截器关联到一起。然后,在DispatcherServlert中完成了拦截器链对handler的过滤。

  • DispatcherServlet要将一个请求交给哪个特定的Controller,它需要咨询一个Bean——这个Bean的名字为“HandlerMapping”。HandlerMapping是把一个URL指定到一个Controller上,(就像应用系统的web.xml文件使用将URL映射到servlet)。

Handler 中文意思叫操作者,它的主要作用是用于处理映射。
Controller 中文意思叫控制器,一般来说Controller就是一种Handler,但是并非所有Handler的都是Controller。通常我们Controller当中采用的映射处理策略是/或者是方法对应的HTTP客户端请求,这是基于请求的URL地址与HTTP方法来完成的,这种采用的就是我们上面概念提到的HandlerMapping的Bean来进行处理。

1.2 Spring MVC Handler的三种写法

  • 1、Spring开发模式
  @RequestMapping("映射路径")

  public ModelAndView hello(){

    ModelAndView mv = new   ModelAndView();

    mv.addObject("msg","hello   world!");

    mv.setViewName("index.jsp");

    return mv;

  }
  • 2.原生Servlet开发方式
 @RequestMapping("映射路径")

  public void   xx(HttpServletRequest request,HttpServletResponse response) throws   ServletException, IOException{

    request.setAttribute("msg",   "操作成功");

    request.getRequestDispatcher("/index.jsp").forward(request,   response);

  }
  • 3.返回视图
 public String yy(Model model){

    model.addAttribute("msg",   "success");

    return   "forward:/index.jsp";//forward写不写都是转发,redirect代表重定向.

  }

}

① addObject(String attributeName, Object attributeValue)方法中的两个参数分别表示,第一个参数表示设置模型对象的名字,类似于我们声明变量的变量名一样,便于我们后期在页面获取模型对象,如果添加两次重名的模型对象,后者会覆盖前者的值。第二个参数表示具体模型对象的值,它可以是任何一种类型。
② addAll0bjects(Map modelMap)也是添加我们模型数据的方法,只不过它的参数是一个Map类型的集合
③ setView(String viewName)方法,参数填写一个视图的名称,如果我们没有配置视图解析器的话,默认是从WebApp/WebContent路径下面去寻找页面,如找不到页面则会出现404的错误。

2、SpringMVC 视图解析器

2.1 概念

视图解析器的作用是将逻辑视图转为物理视图,所有的视图解析器都必须实现ViewResolver接口。

SpringMVC为逻辑视图名的解析提供了不同的策略,可以在Spring WEB上下文中配置一种或多种解析策略,并指定他们之间的先后顺序。每一种映射策略对应一个具体的视图解析器实现类。程序员可以选择一种视图解析器或混用多种视图解析器。可以通过order属性指定解析器的优先顺序,order越小优先级越高,SpringMVC会按视图解析器顺序的优先顺序对逻辑视图名进行解析,直到解析成功并返回视图对象,否则抛出ServletException异常。

2.2 配置视图解析器

<bean    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property   name="prefix" value="/WEB-INF/jsp/"></property>
        <property   name="suffix" value=".jsp"></property>
 </bean>
  • prefix:表示前缀,简而言之就是返回视图的时候,会在返回路径的前面加上前缀

  • suffix:表示后缀,与前缀同理,会在返回路径的后面加上后缀

关于重定向,一般情况下,控制器方法返回字符串类型的值会被当成逻辑视图名处理,但如果返回的字符串中带forward:或redirect:前缀时,SpringMVC会对它们进行特殊处理:将forward: 和redirect: 当成指示符,其后的字符串作为URL 来处理。

二、SpringMVC异步请求

1、 Ajax基本配置

Ajax本章节我们采用的JQuery给我们封装好的Ajax方法,所以第一步我们需要导入JQuery的库。在我们视图页面(JSP、HTML等)导入我们的JQuery的库。


<!-- 本地JQuery库   -->

<script   src="jquery-1.10.2.min.js" ></script>

<!-- 网络引入 -->

<script   src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">


2、 异步与同步

  • 同步:发送一个请求,等待返回,然后再发送下一个请求

  • 异步:发送一个请求,不等待返回,随时可以再发送下一个请求

优缺点:

  • 同步:可以避免出现死锁,读脏数据的发生,一般共享某一资源的时候用,如果每个人都有修改权限,同时修改一个文件,有可能使一个人读取另一个人已经删除的内容,就会出错,同步就会按顺序来修改。

  • 异步:可以提高效率了,现在cpu都是双核,四核,异步处理的话可以同时做多项工作,当然必须保证是可以并发处理的。

如何设置异步或者同步

在我们JQuery的Ajax方法中,我们只需要设置一个属性就可以设置同步或者异步了。默认JQuery中Ajax是使用的是异步处理(即sync:true)。如需改成同步状态,需要在Ajax方法中放入sync:false。即可变成同步状态。

3、局部刷新

局部刷新是指无需重新加载整个网页的情况下,通过ajax的回调函数更新部分网页的技术。在JQuery中Ajax方法中可以在回调的success 或者error回调方法中对页面部分控件进行局部修改,达到局部刷新的目的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/22988.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于TMI8421的3D打印机步进电机解决方案

打印机一直是工作中不可缺少的一部分&#xff0c;当下&#xff0c;随着3D打印技术的推广&#xff0c;3D打印机逐渐进入我们的生活与工作当中。每个人都期望可以在办公室环境下安静快速的打印&#xff0c;更高效地完成每项打印工作&#xff1b;更生动逼真的重现理想的3D模型。而…

实战:如何优雅地扩展Log4j配置?

前言 Log4j 日志框架我们经常会使用到&#xff0c;最近&#xff0c;我就遇到了一个与日志配置相关的问题。简单来说&#xff0c;就是在原来日志配置的基础上&#xff0c;指定类的日志打印到指定的日志文件中。 这样讲述可能不是那么好理解&#xff0c;且听我从需求来源讲起。…

【10】leetcode note

题目&#xff1a; 799. 香槟塔 个人总结 799. 香槟 我们把玻璃杯摆成金字塔的形状&#xff0c;其中 第一层 有 1 个玻璃杯&#xff0c; 第二层 有 2 个&#xff0c;依次类推到第 100 层&#xff0c;每个玻璃杯 (250ml) 将盛有香槟。 从顶层的第一个玻璃杯开始倾倒一些香槟&…

基于铁犀牛ironrhino平台的税务档案管理系统

目录 摘要 2 引言 5 1.1 选题背景 6 1.2 国内外研究现状 7 1.3课题研究的重要性 8 2. 系统的需求与分析 8 2.1 系统的功能介绍 9 2.1.1 业务信息描述 9 2.1.2 系统功能说明 10 2.1.3 系统的开发目标 11 2.2 系统分析 12 2.2.1 铁犀牛的功能 12 2.2.2 铁犀牛工作原理 13 2.2.3 铁…

翻阅必备----Java窗口组件,容器,布局,监听,事件 API大全

---------------------------------------------------------------------------------------- &#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 秩沅 原创 收录于专栏 java ⭐Jav…

将存在课题的过程可视化,丰田的“自工程完结”是什么?

将存在课题的过程可视化&#xff0c;丰田的“自工程完结”是什么? “全日本的公司是不是都发生了奇怪的事情呢?人们常说日本人很勤劳。所以要拼命努力。但是&#xff0c;有很多人拼命努力却毫无成果。(中略)这样才不会有动力。明明很努力却没有成果&#xff0c;我认为这才是奇…

将SpringBOOT项目 打成 war 包 并 部署到 Tomcat

当前环境&#xff1a;Windows Tomcat版本&#xff1a;tomcat8.5 SpringBoot版本&#xff1a; 2.2.3 1. pom.xml 修改打包方式 <packaging>war</packaging> 2.加入SpringBoot打包插件&#xff08;pom.xml&#xff09; <build><plugins><plugin&g…

Jmeter的使用说明

一、安装Jmeter工具 链接&#xff1a;https://pan.baidu.com/s/1ZYc15eq9DO-r0ChKHxMXlg?pwdckcd 提取码&#xff1a;ckcd --来自百度网盘超级会员V5的分享二、Jmeter的常用元器件说明 jmeter八大元件件&#xff1a;取样器&#xff0c;前置处理器&#xff0c;后置处理器&a…

计算机网络——第六章笔记(1)

传输层 传输层是层是整个协议栈(TCP/IP)的核心。 任务&#xff1a;是提供可靠的、高效的数据传输。 面向连接的服务 1、端到端的连接管理 建立连接 数据传输 释放连接 2、流控制 3、差错控制 传输环境&#xff1a;通信子网、物理信道。 传输服务和网络服务的两个主…

网络了解编程五层协议

一:了解 1.了解一下网络: 局域网(LAN),一个上课的机房,多个连在同一个路由器上的设备,就是在一个局域网中---打游戏 (局域网内的主机之间能方便的进行网络通信&#xff0c;又称为内网&#xff1b;局域网和局域网之间在没有连接的情况下&#xff0c;是无法通信的) 广域网(WAN) ,…

无线 LAN 服务概述

无线 LAN 服务是 Windows Server 2008 R2 和 Windows Server 2008 中的一项功能&#xff0c;可用于启用无线 WLAN 自动配置服务&#xff0c;以及配置 WLAN 自动配置以自动启动。一旦启用后&#xff0c;WLAN 自动配置会动态选择计算机将自动连接的无线网络&#xff0c;并配置无线…

项目管理的四大模型,PM必懂的事半功倍模型!

瀑布模型、迭代模型、增量模型、原型模型&#xff0c;是项目管理常见的四种模型。每种模型都有其优缺点和适用的项目类型。项目经理针对不同的项目用对模型&#xff0c;才能起到事半功倍的作用。 今天就讲讲这四种模型及其优缺点&#xff1a; 如果你需要项目管理相关资料可拉…

代码质量与安全 | “吃狗粮”能够影响到代码质量?来了解一下!

“dogfooding”是什么&#xff1f;乍一看&#xff0c;这就是“吃狗粮”的意思&#xff0c;但其实这来源于一句俚语&#xff1a;“Eat your own dog food”&#xff0c;直译过来就是“吃自己的狗粮”&#xff0c;常用于描述公司使用自己产品的这一种情况。 “吃自己的狗粮”实践…

(更新中)【后端入门到入土!】Java+Servlet+JDBC+SSM+SpringBoot+SpringCloud 基础入门

目录 第一部分&#xff1a;Java 基础语法&#xff08;已完结&#xff09; 第二部分&#xff1a;Java 高级&#xff08;已完结&#xff09; 第三部分&#xff1a;Servlet&#xff08;待更新……&#xff09; 第四部分&#xff1a;JDBC&#xff08;待更新……&#xff09; 第…

如何搭建一套指标体系?

一、引言 (1)为什么指标体系这么重要? (2)什么是指标体系? (3)指标体系的衡量标准是什么? (4)如何去搭建一套好好的指标体系? 只要弄清楚了这4个问题,指标体系的搭建工作就迅速地开展、快速地落地,精准地产生业务价值。以上是对于数据同学而言的工作。此外,对于…

漏洞练习环境搭建笔记

Docker 安装&#xff08;ubuntu&#xff09; 1.常归删除操作 sudo apt-get autoremove docker docker-ce docker-engine docker.io containerd runc 2. 删除docker其他没有没有卸载 dpkg -l | grep docker dpkg -l |grep ^rc|awk ‘{print $2}’ |sudo xargs dpkg -P # 删除无…

雷神MixBook Air笔记本系统故障怎么重装?

雷神MixBook Air笔记本系统故障怎么重装&#xff1f;有用户使用的雷神MixBook Air笔记本系统出现了故障&#xff0c;导致无法正常的使用电脑了。这个情况我们可以使用U盘来重装一个系统&#xff0c;恢复正常的使用。那么具体要怎么去进行操作&#xff0c;看看具体的方法吧。 准…

python多维数组切片

1、数组a第0个元素&#xff08;二维数组&#xff09;下的所有子元素&#xff08;一维数组&#xff09;的第一列 import numpy as np bnp.arange(24) ab.reshape(2,3,4) print a print a[0,:,0] 2、取所有二维数组下的每个二维数组的第0个元素&#xff08;一维数组&#xff09; …

会计部门通过数字化工作流程提高生产力

会计部门通过数字化工作流程提高生产力 基于纸张的会计流程令人担忧&#xff0c;在一些企业中&#xff0c;基于纸张的会计流程正在削弱企业的竞争力。 现在&#xff0c;企业高管们比以往任何时候都更想知道哪些技术在数字业务战略中作用最大&#xff0c;在简化会计流程方面&…

机器学习模型评价指标

前文&#xff1a;https://www.cnblogs.com/odesey/p/16902836.html 如果图不能加载&#xff0c;请查看原文&#xff1a;https://www.cnblogs.com/odesey/p/16907351.html 介绍了混淆矩阵。本文旨在说明其他机器学习模型的评价指标。 1. 准确率&#xff08;Accuracy-Acc&#xf…