spring中对于servlet API的封装---springWeb

news2024/11/12 14:50:42

目录

一.springweb概述

二.springweb的特点

三.springweb的运行流程

 四.springweb组件

五.springweb的搭建

1.导包

 2.配置 DispatcherServlet

 3.开启 springweb 注解

 4.处理器的搭建

六.springweb注解

 七.springweb拦截器

1.拦截器概述

 2.拦截器的实现

(1)添加 servelt api 依赖

 (2)拦截器的使用

 (3)注册拦截器

总结


一.springweb概述

     SpringWeb 是 spring 框架中的一个模块,基于 Servlet API 构建的 web 框架。springWeb 是 Spring 为 web 层开发提供的一整套完备的解决方案。在 web 层框架历经 Strust1,WebWork,Strust2 等诸多产品的历代更选之后,目前业界普遍选择了 springWeb 作为 Java EE 项目 web 层开发的首选方案。

早期的 ssmspring + struts2(对web层进行的封装) + mybatis 

现在的 ssmspring + springweb + mybatis

二.springweb的特点

SpringWEB 是 spring 家族原生产品,与 IOC 容器等基础设施无缝对接.

1.基于原生的 Servlet,提供了一个前端控制器 DispatcherServlet ,开发者无须额外开发控制器对象。

2.可以自动绑定用户输入,并正确地转换数据类型。

3.代码清新简洁,大幅度提升开发效率。

4.内部组件化程度高,可插拔式组件即插即用。

5.性能卓著,尤其适合现代大型、超大型互联网项目要求。

三.springweb的运行流程

用户发送出请求到前端控制器 DispatcherServlet。

1.DispatcherServlet 收到请求调用 HandlerMapping(处理器映射器)。

2.HandlerMapping 找到具体的处理器(可查找 xml 配置或注解配置),生成处理器对象及处理器拦截器(如果有),再一起返回给 DispatcherServlet。

3.DispatcherServlet 调用 HandlerAdapter(处理器适配器)。

4.HandlerAdapter 经过适配调用具体的处理器(Handler/Controller)。

5.Controller 执行完成向前端响应结果。

 四.springweb组件

1.前端控制器DispatcherServlet(不需要程序员开发),由框架提供,在web.xml 中配置。

作用:统一处理请求和响应,整个流程控制的中心,由它调用其它组件处理用户的请求.

2.处理器映射器HandlerMapping(不需要程序员开发),由框架提供。

作用:根据请求的 url 查找 Handler(处理器/Controller)

3.处理器适配器:HandlerAdapter(不需要程序员开发),由框架提供。

作用:按照特定规则(HandlerAdapter 要求的规则)去执行 Handler。

4.处理器:Handler(也称之为 Controller,需要工程师开发)。

注意:编写 Handler 时按照 HandlerAdapter 的要求去做,这样适配器才可以去正确执行 Handler。

作用:接受用户请求信息,调用业务方法处理请求,也称之为后端控制器。

五.springweb的搭建

1.导包

首先需要通过 maven pom.xml 文件中导入springweb所需要使用的 .jar 包。

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

 2.配置 DispatcherServlet

web.xml 中配置DispatcherServlet配置 spring 核心请求分发器

<servlet>
    <servlet-name>application</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring.xml</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
</servlet>
<!-- 请求映射 -->
<servlet-mapping>
    <servlet-name>application</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

 3.开启 springweb 注解

spring.xml 中开启 springweb 注解

<mvc:annotation-driven></mvc:annotation-driven>

 4.处理器的搭建

对于web层的类,我们程序员一般都会以--Controller 来命名,这也就是我们自定义的处理器。

eg:

 对于自定义处理器的对象的创建,我们当然还是要将 new 对象的权力交给spring去管理。

所以就需要在类名前面加上: @RestController ,和@Service @Component @Repository用法是一样的。

六.springweb注解

获得请求数据使用的注解:

在springweb中给每个类每个方法都定义了地址,这样就可以精准地找到对应的地址了。当然,每个类对应的地址都是不一样的,并且一个类中的多个方法的地址也是不能相同的,保证精确性。

@RequestMapping( path =" /地址 " ,method = RequestMethod.POST/GET)  使用在类名和方法名前,因为请求的方式有 get 和 post 请求,该注解中还有 method 属性用来区分请求方式。

@GetMapping( path = " /地址 " )  此注解专门用于 GET 请求,用在方法前。

@PostMapping( path =" /地址 " )  此注解专门用于 POST 请求,用在方法前。

在方法中,通常需要接收前端发送到后端的数据,(前后端接收的参数的名字必须一致),如果前后端的参数名字不一致的话,就需要使用 @RequestParam(" 前端参数名 ") ,此注解使用在方法的参数前,如果是要拿到请求头中的数据的话还需要用到 @RequestHeader 。

 当前端通过 json 的形式发送到后端,后端用对象来接收 需要在对象前使用 @RequestBody 注解(接收到数据的前提是导入了 json 的.jar包)

返回 json: 

如果在前端输入的 json 格式的字符串中有日期属性,就需要在模型类中对日期属性的接收格式做出规定,使用 @DataTimeFormat( pattern = " " ),还有一个注解:@JsonFormat( pattern = " " )此注解用于后端向前端做出相应时规定日期的格式,eg:

 七.springweb拦截器

1.拦截器概述

springweb拦截器类似于在servlet中的过滤器 Filter,它主要用于拦截用户请求并做出相关处理。

区别

Spring 中的拦截器与过滤器有着本质的区别,过滤器是 servlet 规范中定义并实现的,在进入servlet 之前截获请求.而拦截器是 spring 中定义的一种拦截机制,是对进入到处理器的请求进行拦截.

 

 2.拦截器的实现

(1)添加 servelt api 依赖

<!--servlet-->

<dependency>

        <groupId>javax.servlet</groupId>

        <artifactId>javax.servlet-api</artifactId>

        <version>4.0.1</version>

        <scope>provided</scope>

</dependency>

 (2)拦截器的使用

 对于拦截器的使用,我们需要定义一个类去实现  HandlerInterceptor 接口,重写接口中 preHandle 方法,此方法返回值是spring规定好的,为 true/false ,所以我们想要向前端做出相应时,就只能使用 response,eg:

 (3)注册拦截器

想要拦截器生效,还需要在 spring.xml 中去注册拦截器:


总结

     同学们,springweb的内容就到此告一段落,本篇博客讲述了spring中对于web层的封装--springweb框架,详细指出springweb的运行流程,其中使用的组件,springweb的搭建以及对springweb中参数接收拦截器的学习内容和小细节,我们认真学习springweb之后,我们就可以将spring框架--springweb--mybatis融汇贯通,串联。

制作不易,希望可以多多三连支持博主,博主会继续努力的!!!

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

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

相关文章

开源 AI 智能名片链动 2+1 模式 O2O 商城小程序在社群活动中的应用与时机选择

摘要&#xff1a;本文探讨了开源 AI 智能名片链动 21 模式 O2O 商城小程序在社群经济中的重要性&#xff0c;着重分析了如何借助该小程序适时举办大型活动以维持和引爆社群活跃度。通过对活动时机选择的研究&#xff0c;强调了针对社群用户量身定制活动时机的必要性&#xff0c…

基于python+django+vue的外卖管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于pythondjangovueMySQL的外…

C/C++笔记

C/CPP笔记 杂记 struct msg_train和typedef struct msg_train 大小不一样 cstdio和stdio #include <stdio.h>int main() {printf("Hello, World!\n");return 0; } #include <cstdio>int main() {std::printf("Hello, World!\n");return 0; } 命…

20个Python入门基础语法要点

今天&#xff0c;我们将聚焦于Python的20个基础语法要点&#xff0c;让你的编程之旅更加顺畅。 第一部分&#xff1a;环境搭建与基本概念 1. Hello, World! 你的第一行代码&#xff1a;这是编程旅程的传统起点。 这行代码告诉Python显示文本&#xff0c;print是关键函数&…

常耀斌:AI赋能企业数字化转型(清华社发行)

新书地址&#xff1a; 清华出版社&#xff1a;清华大学出版社-图书详情-《AI赋能企业数字化转型》 京东&#xff1a;《AI赋能企业数字化转型 常耀斌 清华大学出版社 9787302669081》【摘要 书评 试读】- 京东图书 内容简介&#xff1a; 在数字经济时代&#xff0c;企业发…

曲线图如何绘制美观,曲线图10种美化方法

曲线图是比较常用的图形&#xff0c;本文以二维曲线图为例&#xff0c;展示曲线的图的不同美化方法&#xff0c;如图1所示&#xff0c;是一个标准的曲线图&#xff0c;横坐标为x&#xff0c;纵坐标为y, 图1 标准曲线图 调整方法1 首先可以通过改变线的颜色&#xff0c;不同…

从零开始学PostgreSQL (十四):高级功能

目录 1. 简介 2. 视图 3. 外键 4. 事务 5. 窗口函数 6. 继承 7. 结论 简介 PostgreSQL是一个强大且开源的关系型数据库管理系统&#xff0c;以其稳定性、功能丰富性和对SQL标准的广泛支持而闻名。它不仅提供了传统的关系型数据库功能&#xff0c;如事务处理、外键约束和视图&am…

递归基础训练-路径总和

路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 我们可以把之前的…

【图虫创意-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

R语言统计分析——散点图2(散点图矩阵、高密度散点图)

参考资料&#xff1a;R语言实战【第2版】 1、散点图矩阵 pairs()函数可以创建基础的散点图矩阵。下面代码用于绘制一个散点图矩阵&#xff0c;包含mtcars数据集中的mpg、disp、drat和wt四个变量&#xff1a; pairs(~mpgdispdratwt,datamtcars,main"Basic Scatter Plot M…

输煤传送带异物识别检测数据集 yolo数据集 2400张

输煤传送带异物识别检测数据集 yolo数据集 2400张 输煤传送带异物识别检测数据集介绍 数据集名称 输煤传送带异物识别检测数据集&#xff08;Conveyor Belt Foreign Object Detection Dataset&#xff09; 数据集概述 该数据集专为输煤传送带上的异物识别检测设计&#xff0…

Unity携程Coroutine用法

一.携程概述 官方的解释是&#xff0c;携程允许你可以在多个帧中执行任务。在Unity中&#xff0c;携程是一个可以暂停并在后续帧中从暂停处继续执行的方法。 二.携程写法 下面示例使用携程和Update打印前5帧的时间间隔&#xff0c;展示了携程的基础写法 using System.Colle…

vmware + ubuntu + 初始配置(超级用户权限、vim安装、ssh登陆、共享文件夹、git)

1 VMware Ubuntu下载与安装 下载与安装 2 使用超级用户权限 &#xff08;1&#xff09;执行命令&#xff1a;sudo passwd root 然后在弹出的密码中输入密码即可&#xff0c;具体如下&#xff1a; 第一个密码是当前用户密码 后面两个是root用户密码 //推荐使用一个密码 3 vi…

SEMIDRIVE X9E Flash 调试要点

一、前言 客户采用芯驰 X9E 平台做的 T-BOX 产品&#xff0c;因为客户选用的 Flash 型号不在 SemiDrive_Memory 支持列表里面&#xff0c;出现机器能烧录不能启动的问题。接下来我们对这个问题进行调试。 二、SEMIDRIVE X9E Flash 调试要点 ① 客户的板子 Flash 型号为 GD25LQ…

43集 ESP32 编译调试出错的解决方法汇总

43集 ESP32 编译调试出错的解决方法汇总 1、提示找不到如下头文件&#xff0c;分别对应adf的component #include “esp_peripherals.h” esp_peripherals #include “audio_element.h” audio_pipeline #include “audio_common.h” audio_pipeline 这几个头文件都是esp-adf里…

【全网首发】2024华为OD机试 E卷D卷抽中题库清单(全真题库,持续更新)含考点说明

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;E卷D卷A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加…

Git 原理(提交对象)(结合图与案例)

Git 原理&#xff08;提交对象&#xff09; 这一块主要讲述下 Git 的原理。 在进行提交操作时&#xff0c;Git 会保存一个提交对象&#xff08;commit object&#xff09;&#xff1a; 该提交对象会包含一个指向暂存内容快照的指针&#xff1b; 该提交对象还包含了作者的姓…

【MYSQL中数据库的约束以及表的设计】

MYSQL中数据库的约束和表的设计 一、数据库的约束1.1 NULL约束1.2 UNIQUE&#xff1a;唯一约束1.3 DEFAULT&#xff1a;默认值约束1.4 PRIMARY KEY&#xff1a;主键约束1.5 FOREIGN KEY &#xff1a;外键约束1.6 CHECK 约束 二、表的设计2.1 第一范式&#xff08;1NF&#xff0…

Python面试宝典第49题:字符串压缩

题目 给你一个字符数组chars &#xff0c;请使用下述算法进行压缩。 1、从一个空字符串s开始&#xff0c;对于chars中的每组连续重复字符 &#xff1a; &#xff08;1&#xff09;如果这一组长度为1 &#xff0c;则将字符追加到s中。 &#xff08;2&#xff09;否则&#xff0c…

易灵思FPGA开发(一)——软件安装

一、资料下载 VF-T20F256-深圳市奥唯思科技有限公司_FPGA图像开发_MIPI (szovs.com) 二、软件安装 安装USB下载器驱动 双击第一个.msi文件进行安装 奥唯思FPGA网盘汇总 (szovs.com) 下载Gtkwave软件