框架--SpringWeb

2023-11-15

一、springweb

1.概述

​SpringWeb就是spring框架中的一个模块,对web层进行封装,使用起来更加方便。

参数接收框架进行封装(方便)

MVC架构:也是后端的架构,是jsp时代的称呼。mvc的概念在前后端分离的时代不存在了

(Cotroller 控制层 servlet 接收 处理 响应)

(Model 数据模型 dao model)

(View 视图 jsp 用于将数据添加到html中 然后进行响应 --现在不学这个模块)

现在的ssm(spring springweb mybatis)

SprngMVC运行流程:
1.用户发起请求
2.DispatcherServlet 负责分发控制的servlet

​ service–>doget–>dopost

(1)DispatcherServlet 是一个总调度,负责控制接收所有的请求,然后调用映射处理器,适配器 ====(ip+port/项目名/处理器地址–》(2))((1–》(4)))

(2)Handler Mapping 映射处理器 解析请求中的处理器地址 看项目中有没有对应的处理器(如果有拦截器,会执行对应的拦截器)(–》(1))

(3)Handler spring中自己封装的处理器 自定义的处理器,可以配置映射地址,以便于spring框架找到自己 ====(最终执行的部分 数据响应 这部分是自己写的,其他的框架帮我们完成)

(4)HandlerAdapter 适配器 封装请求中的参数((4)–》(3))

2.springWeb层搭建

1.导入jar

<!--springweb--><dependency>    <groupId>org.springframework</groupId>    <artifactId>spring-webmvc</artifactId>    <version>5.2.2.RELEASE</version></dependency>

2.web.xml中配置 DispatcherServlet

  <!--      配置DispatcherServlet(请求分发servservlet)  负责接收前端所有的请求 -->  <servlet>      <servlet-name>application</servlet-name>      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>     <!-- 配置读取spring配置文件-->      <init-param>          <param-name>contextConfigLocation</param-name>          <param-value>classpath:spring.xml</param-value>      </init-param>      <!-- 控制servlet创建 初始化的时间 -1第一次访问时创建 >=0是服务器启动时创建-->      <load-on-startup>0</load-on-startup>  </servlet><!--  请求映射-->  <servlet-mapping>      <servlet-name>application</servlet-name>      <url-pattern>/</url-pattern>  </servlet-mapping>

3.添加spring配置文件开启 SpringMVC 注解

<!--配置开启使用springweb中的注解-->
    <mvc:annotation-driven></mvc:annotation-driven>

4.创建定义自己的处理器

总结:1.用户发起请求 ip:端口/项目名/类地址/方法地址

​ 所有请求都可以到达DispatcherServlet

2.DispatcherServlet请求分发 核心的SpringWeb底层用的就是一个servlet 接收用户所有的请求,并分发给对应的映射处理器,适配器

3.HandlerMapping 映射处理器,用来解析请求中的地址,有没有对应的处理器类 如果本次请求有对应的拦截器,会执行相应的拦截器

4.HandlerAdapter 处理适配器 封装请求中的参数

5.到达自己创建的处理器,接收参数 处理响应

springweb层的控制器类中如何使用

web 层六字方针: 接收 处理 响应

3.请求中的地址如何定义

@RestController 修饰控制器类

@RequestMapping(path = “/loginCtl”) 可以在类和方法上使用

在类上面使用,整个项目中必须是唯一的 ,不能重复

在方法上定义时,同一个类中地址必须是唯一的

可以使用path/value定义地址

  • @RequestMapping(path = “/test”,method = RequestMethod.POST)
    method定义那种请求可以访问此方法

  • @RequestMapping(path = “/test”) 没有定义请求方式get/post请求都可以访问

  • @GetMapping(path = “/test”) get请求

  • PostMapping(path = “/test”) post请求

4.如何接收请求中的数据

1.使用request对象接收 req.getparameter()

2.直接在参数列表中定义形参接收,还可以帮我们进行类型转换

3.请求中的键名称与形参名一致 直接接收;否则,通过注解标签进行绑定

5.直接使用对象接收

400 请求的数据类型有问题

lombok 自动生成set get方法

6.post请求中文乱码处理

SpringMVC 中已经为我们提供了这个过滤器,只需要在 web.xml 中配置好即可

<!--配置spring框架中提供的编码过滤器-->
<filter>   
 <filter-name>characterEncodingFilter</filter-name>    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
 <init-param>   
  <param-name>encoding</param-name>  
    <!--设置字符集编码-->   
  <param-value>UTF-8</param-value>
 </init-param>
</filter>
<filter-mapping>    
  	<filter-name>characterEncodingFilter</filter-name>    
  	<url-pattern>/*</url-pattern>
</filter-mapping>

7.Ajax 返回 JSON

控制中返回结果,由于使用@RestController,里面包含@ResponseBody的注解标签,所以方法返回结果默认是json格式,并将json字符串写入到响应体中。返回一个对象时,必须加入一个转json的第三方组件

<!-- 
https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind
 -->
<dependency>    
<groupId>com.fasterxml.jackson.core</groupId>    
<artifactId>jackson-databind</artifactId>    
<version>2.13.3</version>
</dependency>

8.跨域问题

加入依赖 配置过滤器

9.拦截器

过滤器是JavaServlet规范中定义的,是当请求进入servlrt之前,可以对请求进行拦截,可以加入到一些逻辑中。

拦截器是和过滤器有区别的,拦截是spring框架中自己定义的功能,和过滤器位置不同

拦截器只拦截进入到自己控制器中的请求,其余的不拦截

拦截器(HandlerInterceptor)

10.总结

springweb

以前请求都是直接找到servlrt --> service -->doget()/gopost()

1.访问后端:定义了一个servlet映射地址,处理很多事情 通过mark传参,通过参数进行区分
2.在servlet中需要接收前端请求的数据,非常麻烦

springweb对后端三层架构中的web层进行封装.
spring是总管家,集成mybatis数据持久层框架,本身对事物进行管理提供web层的封装
提供了一个DispatcherServlet(请求分发控制器)
接收前端发送的所有请求
然后取调用HandlerMapping(映射处理器),解析请求中的地址(@RequestMapping(path=“/loginCtl”))
接着找到后可以经过对应的拦截器
再去通过HandlerApter(适配器,数据封装)找到自己定义的控制器。
在自己的控制器中处理,响应 直接可以响应json格式的数据

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

框架--SpringWeb 的相关文章

随机推荐

  • 搭建spring、struts、jpa(hibernate)、ibatis框架详解

    搭建spring struts jpa hibernate ibatis框架详解 1 本文选用spring3 06发行版 首先下载spring3 0 6版的jar包 2 下载struts2 3 24版本 struts2的jar可以在stru
  • 虚拟机开机出现dracut_安装CentOS 7的时候出现dracut:/#求解决方法!

    展开全部 安装CentOS 7的时候出现 dracut 解决方法 62616964757a686964616fe59b9ee7ad9431333365643661 1 这是因为安装程序未能找到安装文件 无法加载所致 2 可以在随后出现的 d
  • 基于vue开发一个组件库

    基于vue开发一个组件库 如果团队存在多个不同的项目都会使用一致的组件设计规范 那么搭建组件库无疑是不二选择 接下来我们直接开始实现组件库的搭建 1 首先安装vue cli3并创建一个项目 创建项目 vue create tset 关于vu
  • Mysql中的连接方式

    1 内连接 内连接查询的是两张表的交集 也就是A表和B表都必须有数据才能查询出来 join和on是一起的 select from A join B on A id B id select from A inner join B on A i
  • springboot项目接口给null给前端返回空字符串。

    代码 Configuration public class JacksonConfig Bean public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageCo
  • 使用docker搭建Grafana+influx 实时监控Jmeter压测平台

    准备工作 jmeter 压测工具 产生压测数据 IfluxDB 开源时序数据库 特别适合用于处理和分析资源监控数据 用于存储压测数据 Grafana 度量分析与可视化图标展示工具 可以支持不用种类的数据源 用于将存储于InfluxDB中的数
  • Qt实现图片的简单压缩

    在编程过程中 涉及到网络传输或资源加载时 过大的图片往往是编程人员的噩梦 加载时间过长 体验效果差 特别在即时通讯的发送图片时 大图往往半天加载不出来 于是 先对图片进行压缩 暂时显示模糊图片 然后下载大图最后更新下载的大图 这一过程成为解
  • 任务长期不释放和占用单节点持续的cpu,导致hivesever2本身内存泄漏造成

    任务长期不释放和占用单节点持续的cpu 导致hivesever2本身内存泄漏造成 产生的原因在于 查询过于复杂或者数据量过大 当有复杂的查询或处理大量数据的请求时 HiveServer2可能会出现高负载 这可能涉及大量的计算 IO操作或涉及
  • macm1环境下jdk版本切换

    macm1环境下jdk版本切换 本文目录 macm1环境下jdk版本切换 下载jdk 安装 动态切换jdk 终端生效 全局生效 参考 下载jdk oracle官方源下载地址 https www oracle com java technol
  • 一个新的微型JSON开源框架

    Snack3 一个新的微型JSON框架 一个作品 一般表达作者的一个想法 因为大家想法不同 所有作品会有区别 就做技术而言 因为有很多有区别的框架 所以大家可以选择的框架很丰富 snack3 基于jdk8 60kb 无其它依赖 非常小巧 强
  • OperationalError: (2005, "Unknown MySQL server host 'localhost' (11001)")

    在调试Django时突然报OperationalError 2005 Unknown MySQL server host localhost 11001 这个错误 根据提示信息判断是说mysql server 无法识别 localhost
  • $nextTick的作用和使用场景

    nextTick的作用和使用场景 vue中的nextTick主要用于处理数据动态变化后 DOM还未及时更新的问题 用nextTick就可以获取数据更新后最新DOM的变化 适用场景 第一种 有时需要根据数据动态的为页面某些dom元素添加事件
  • 解决延迟有 Wi-Fi 6 就够了!

    最近二狗子家里的路由器坏了 而家里的数据网络信号又非常差 失去了路由器基本上就等于和世界隔离 所以二狗子打算去附近商城随便买一个新的路由器 结果售货员张口就问 买 Wi Fi 6 的路由器吗 Wi Fi 6 这直接把二狗子问懵了 Wi Fi
  • Serverless Kubernetes 应用部署及扩缩容

    作者 邓青琳 轻零 阿里云技术专家 导读 本文分为三个部分 首先给大家演示 Serverless Kubernetes 集群的创建和业务应用的部署 其次介绍 Serverless Kubernetes 的常用功能 最后对应用扩缩容的操作进行
  • 医学图像分割研究思路

    医学图像分割的主流方法之一是基于水平集 Level Set 的分割方法 目前针对主流的分割方法 我们主体研究思路如下图 在模型凸化以及形状先验两个方面 未开展相关工作 参考文献 部分演示代码 参数随图像需要调整 7 Xiaomeng Xin
  • 重新生成一堆rpm目录的repo库步骤

    createrepo c repo2module s stable modules yaml modifyrepo c mdtype modules modules yaml repodata
  • IntelliJ IDEA插件搜索下载缓慢

    我用的版本是2019 2 1 搜索插件特别慢 有时候加载不出来 看到别人说是用 Setting Appearance Behavior Syetem Setting Updates 将Use secure connection 的勾选去掉
  • java----面向对象和面向过程

    1 面向对象思想 面向对象四星思想就是把关注点放在一件事或一个活动中设计的人或事物上的思想 2 面向过程思想 面向过程思想就是把关注点放在一件事或一个活动中设计的人或事物所涉及的步骤上的思想 3 面向过程关键字 步骤 过程 4 面向对象关键
  • 一周 8k Star 的 Notion 开源替代品 AppFlowy 诞生

    近日 Notion 的开源替代品 AppFlowy 正式发布了 一经发布 在短短一周就获得了近 8k Star 这个成绩对于一个开源项目来说是非常不错的 那么为什么有了 Notion AppFlowy 团队却要从头开始开发一个类似的产品呢
  • 框架--SpringWeb

    文章目录 一 springweb 1 概述 2 springWeb层搭建 3 请求中的地址如何定义 4 如何接收请求中的数据 5 直接使用对象接收 6 post请求中文乱码处理 7 Ajax 返回 JSON 8 跨域问题 9 拦截器 10