当前位置: 首页 > news >正文

Spring--4

SpringWeb

概念

是Spring框架的一个模块,基于Servlet的一个原始Web框架。

SpringWEB 运行流程

描述:前端用户请求发送的后端以后,先经过前端控制器DispatcherServlet(再次之前也可能有过滤器的存在),经过前端控制器解析后,到达处理器映射器HandlerMapping,经过拦截器找对对应的处理器适配器HandlerAdapter区执行自定义处理器Handler来响应前端。

前端控制管理器:接收前端发送的所有请求,调用HandlerMapping解析请求中的地址以及当HandlerMapping解析出有对应的HandlerAdapter时,调用HandlerAdapter去处理请求

处理器映射器:解析请求中的地址,是否有对应的处理器,如果有调用时有拦截器,则进行拦截器相应处理。

拦截器:经过处理器映射器之后可能会进入拦截器,拦截器可以决定请求是否进入处理器适配器

处理器适配器:按照特定规则去执行handler

自定义处理器Handler: 自己写的,处理请求响应数据。

Web搭建

1.导入依赖 

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

2.配置DispatcherServlet

配置Spring核心分发器(web.xml)

<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.开启springMVC注解

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

获取请求数据

后三种参数名不一致会报错

1. 使用 request 对象接收(HttpServletRequest request

request.getParameter

2.Spring自动封装

String userName,Integer age

3.参数不一致使用别名

@RequestParam("userName") String name

@RequestParam 注解还有两个属性:

1. required:参数是否必须。代表页面是否必须传递该参数。如果该值为

true,但没有传递参数,会报错。

2. defaultValue:默认值。代表如果页面没有传递该参数,使用 defaultValue

的值代替。

@RequestParam(value = "userName", required = true,defaultValue = "jim") String name

4.直接使用对象接收

补充

格式化时间

@DateTimeFormat(pattern = "yyyy-MM-dd") 

返回JSON

 导入依赖

添加标签@ResponseBody

中文乱码

web.xml

<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>

拦截器 

类似于 Servlet 中的过滤器(Filter), 它主要用于拦截用户请求并作相应的处理。
过滤器在进去sservlet之前,拦截器在进去处理器后拦截

预处理方法介绍

预处理方法,实现处理器方法的预处理,就是在处理器方法执行之前这个方法会
被执行,相当于拦截了处理器方法,框架会传递请求和响应对象给该方法,第三
个参数为被拦截的处理器。如果 preHandle 方法返回 true 表示继续流程(如调
用下一个拦截器或处理器方法),返回 false 表示流程中断,不会继续调用其他
的拦截器或处理器方法,此时我们需要通过 response 来产生响应;

实现流程 

1.创建一个拦截器类实现HandlerInterceptor接口,重写preHandle方法
2.配置拦截器

spring.xml

    <!--配置拦截器--><mvc:interceptors><mvc:interceptor><mvc:mapping path="/**"/><mvc:exclude-mapping path="/loginCtl/login"/><mvc:exclude-mapping path="/loginCtl/test2"/><bean id="demo" class="com.ffyc.ssm.util.DemoInterceptor"></bean></mvc:interceptor></mvc:interceptors>

 

相关文章:

Spring--4

SpringWeb 概念 是Spring框架的一个模块&#xff0c;基于Servlet的一个原始Web框架。 SpringWEB 运行流程 描述&#xff1a;前端用户请求发送的后端以后&#xff0c;先经过前端控制器DispatcherServlet(再次之前也可能有过滤器的存在)&#xff0c;经过前端控制器解析后&…...

django celery 定时任务 Crontab 计划格式

Celery 定时任务教程 Celery 是一个强大的异步任务队列/作业队列基于分布式消息传递的开源项目。它广泛用于处理各种类型的后台任务&#xff0c;例如发送电子邮件、处理图像、数据分析和视频转换等。 本文将介绍如何使用 Celery 实现定时任务&#xff0c;包括&#xff1a; 安…...

动态应用程序安全测试 (DAST) 工具 Fortify WebInspect

Fortify WebInspect 是一种动态应用程序安全测试 (DAST) 工具&#xff0c;可识别所部署的Web 应用程序和服务中的应用程序漏洞。 OpenText™ 推出的 Fortify WebInspect 是一种自动化DAST 解决方案,可提供全面的漏洞检测能力并有助于安全专业人士和 QA 测试人员识别安全漏洞和…...

深入解析东芝TB62261FTG,步进电机驱动方案

TB62261FTG是一款由东芝推出的两相双极步进电机驱动器&#xff0c;采用了BiCD工艺&#xff0c;能够提供高效的电机控制。这款芯片具有多种优秀的功能&#xff0c;包括PWM斩波、内置电流调节、低导通电阻的MOSFET以及多种步进操作模式&#xff0c;使其非常适合用于需要精确运动控…...

Vue 常用的狗钩子函数

beforeCreate(){ console.log(刚刚创建实例); },created(){console.log(实例创建完成);},beforeMount(){console.log(模板编译之前 ); },mounted(){/* 请求数据&#xff0c;操作Dom时常用 */console.log(实力挂载完成);},beforeUpdate(){console.log(更新前)},update…...

【机器学习基础】激活函数

激活函数 1. Sigmoid函数2. Tanh&#xff08;双曲正切&#xff09;函数3. ReLU函数4. Leaky ReLU函数 1. Sigmoid函数 观察导数图像在我们深度学习里面&#xff0c;导数是为了求参数W和B&#xff0c;W和B是在我们模型model确定之后&#xff0c;找出一组最优的W和B&#xff0c;使…...

nnMamba用于糖尿病视网膜病变检测测试

1.代码修改 源码是针对3D单通道图像的&#xff0c;只需要简单改写为2D就行&#xff0c;修改nnMamba4cls.py代码如下&#xff1a; # -*- coding: utf-8 -*- # 作者: Mr Cun # 文件名: nnMamba4cls.py # 创建时间: 2024-10-25 # 文件描述&#xff1a;修改nnmamba&#xff0c;使…...

【Spring MVC】创建项目和建立请求连接

我的主页&#xff1a;2的n次方_ 1. MVC MVC 是 Model View Controller 的缩写&#xff0c;它是软件⼯程中的⼀种软件架构设计模式&#xff0c;它把软件系统分为模型、视图和控制器三个基本部分。 View (视图)&#xff1a; 指在应⽤程序中专⻔⽤来与浏览器进⾏交互&…...

台达A2伺服

驱动器&#xff1a; L 外接脉冲 U 在L的基础上增加DI E ethercat总线 F 台达 M CANopen总线 电机&#xff1a; ECMA-C A 0604 SS...

ReactOS系统中搜索给定长度的空间地址区间中的二叉树

搜索给定长度的空间地址区间 //搜索给定长度的空间地址区间 MmFindGap MmFindGapTopDown PVOID NTAPI MmFindGap(PMADDRESS_SPACE AddressSpace,ULONG_PTR Length,ULONG_PTR Granularity,BOOLEAN TopDown );PMADDRESS_SPACE AddressSpace,//该进程用户空间 ULONG_PTR Length,…...

Postgresql中和时间相关的字段类型及其适用场景

PostgreSQL 提供了多种数据类型来表示时间和日期&#xff0c;适用于不同的场景和需求。以下是常用的时间类型及其适用场景&#xff1a; 1. TIMESTAMP WITH TIME ZONE (TIMESTAMPTZ) 用途: 表示一个包含时区信息的日期和时间。 使用场景: 适合存储需要考虑时区变化的全球化应用…...

储能蓝海:技术革新与成本骤降引爆市场

在当今全球能源转型的大背景下&#xff0c;储能项目的前景无疑呈现出前所未有的乐观态势。其快速增长的装机规模、持续的技术创新与成本降低、政策的强力支持以及市场的迫切需求&#xff0c;共同绘制了一幅充满机遇与挑战的壮丽画卷。 快速增长的装机规模&#xff1a;储能市场的…...

java抽象类和接口

前言&#xff1a; 在 Java 编程中&#xff0c;抽象类和接口是面向对象编程&#xff08;OOP&#xff09;中的重要概念。它们都是用来定义抽象类型的机制&#xff0c;来帮助程序员构建更加灵活、可维护和可扩展的软件系统。 但是随着软件系统规模的不断扩大和复杂度的增加&…...

法治在沃刷积分-刷文章浏览数

最近有一个任务&#xff0c;需要通过浏览文章来获取积分&#xff0c;一个个手点文章太麻烦&#xff0c;专业的事情还得专业的来。 法1&#xff1a;模拟发包 抓包发现&#xff0c;是通过接口来使积分增长&#xff0c;那直接模拟发包即可。 至于info_id的获取&#xff0c;可以通…...

【深度学习实验七】 自动梯度计算

目录 一、利用预定义算子重新实现前馈神经网络 (1)使用pytorch的预定义算子来重新实现二分类任务 (2)完善Runner类 (3) 模型训练 (4)性能评价 二、增加一个3个神经元的隐藏层,再次实现二分类,并与1做对比 三、自定义隐藏层层数和每个隐藏层中的神经元个数,尝…...

JAVA毕业设计192—基于Java+Springboot+vue的个人博客管理系统(源代码+数据库+万字论文+开题+任务书)

毕设所有选题&#xff1a; https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootvue的个人博客管理系统(源代码数据库万字论文开题任务书)192 一、系统介绍 本项目前后端分离&#xff0c;分为用户、管理员两种角色&#xff0c;角色菜单可自行…...

must be ‘pom‘ but is ‘jar‘解决思路

这个错误信息表明在 Maven 的 pom.xml 文件中&#xff0c;定义的父 POM 的 packaging 类型设置不正确。具体来说&#xff0c;它应该是 pom 类型&#xff0c;但当前设置为 jar。这个问题通常会导致构建失败。以下是解决这个问题的步骤。 解决步骤 检查父 POM 的 packaging 类型…...

STM32启动文件浅析

目录 STM32启动文件简介启动文件中的一些指令 启动文件代码详解栈空间的开辟堆空间的开辟中断向量表定义&#xff08;简称&#xff1a;向量表&#xff09;复位程序对于weak的理解对于_main函数的分析 中断服务程序用户堆栈初始化 系统启动流程 STM32启动文件简介 STM32启动文件…...

h5页面与小程序页面互相跳转

小程序跳转h5页面 一个home页 /pages/home/home 一个含有点击事件的元素&#xff1a;<button type"primary" bind:tap"toWebView">点击跳转h5页面</button>toWebView(){ wx.navigateTo({ url: /pages/webview/webview }) } 一个webView页 /pa…...

探索 JavaScript 事件机制(四):React 合成事件系统

前言 在前端开发中&#xff0c;事件处理是不可或缺的一部分。在众多的前端框架中&#xff0c;React 凭借其高效和灵活性受到众多开发者的喜爱。React 的事件处理系统&#xff0c;即“合成事件系统”&#xff0c;是其性能优化的一大亮点。 本文将带你深入浅出地探索 React 的合…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...