SpringMVC系列之技术点定向爆破一

对SpringMVC的技术点进行逐个拆解,定向爆破。

DispatcherServlet详解

  • DispatcherServlet中init-param的配置

DispatcherServlet负责接收除“.jsp”外的所有请求并交给Spring处理。因此DispatcherServlet需要优先启动。同时需要加载spring容器的配置,目的是为了让SpringMVC中相关bean也能被初始化。如何实现Spring容器的配置加载呢?需要在init-param中指明。

<init-param><param-name>contextConfigLocation</param-name><param-value>classpath:mvc.xml</param-value></init-param>

当然,如果不做这一块的配置,SpringMVC也会默认去找web-inf文件夹中的名为当前DispatcherServlet的Servlet名字的[servletname]-servlet.xml文件作为默认的Spring容器配置文件。

  • DispatcherServlet的映射路径:

路径符号匹配内容
/匹配除了.jsp以为的所有路径
/*匹配所有请求
.action或 .do匹配url以.do或 .action为结尾的路径
/request/*只匹配以“/request”路径前缀的请求

SpringMVC的运行流程

  • 客户端发送请求

  • tomcat接收对应的请求

  • SpringMVC的核心调度器DispatcherServlet接收到所有请求

  • 请求地址与@RequestMapping注解进行匹配,定位到具体的类和具体的处理方法(封装在Handler中)

  • 核心调度器找到Handler后交给HandlerAdapter执行具体的Handler

  • 执行后Controller将具体的执行结果(ModelAndView)返回给HandlerAdapter

  • 核心调度器吧ModelAndView交给视图解析器,视图解析器找到具体的jsp封装到View对象中

  • View视图把jsp转换成html内容再交给核心调度器

  • 核心调度器把html内容返回给客户端。

RequestMapping注解

在Controller中通过RequestMapping注解来定义匹配请求的URL。

  • RequestMapping注解可以定义在类的上方,作为类的中多个方法的统一URL前缀。

  • RequestMapping注解定义在方法的上方,作为此次请求具体要执行的方法的限定。

/**
@Author: 索尔
*/
@Controller //声明这是一个控制器
@RequestMapping("/hello") //访问路径,等价于url-pattern
public class HelloController {@RequestMapping("/test1") //访问路径public String hello1(){System.out.println("hello world");//具体的业务逻辑return "redirect:/index.jsp"; //跳转:/index.jsp}
}

RequestParam注解

RequestParam注解往往和RequestMapping注解配合使用,用来绑定请求参数和处理方法的参数。

我们来看下RequestParam注解的源码:

@Target({ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestParam {@AliasFor("name")String value() default "";@AliasFor("value")String name() default "";boolean required() default true;String defaultValue() default "\n\t\t\n\t\t\n\ue000\ue001\ue002\n\t\t\t\t\n";
}

通过返回的测试我们得出以下结论:

  • @RequestParam(required = false/true,value = “参数名”,defaultValue = “”) 其中name和value等效这里用value,推荐使用value。

  • value:用于重命名参数,若使用了value,则前端请求时该参数必须与value相同。

  • required:用来制定该参数是否必须传入

    • true:默认值,前端请求时默认必须传入,否则会报400异常。

    • false:前端请求时可以不传,不传时后端收到的是null

  • defaultValue:如果设置了defaultValue,则required不会使用默认值true,而自动为false。当没有穿参数时,就使用默认值。

总结

这一篇文章我们攻克了SpringMVC的四大技术难点,下一期我们将继续对SpringMVC作详细拆解。

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

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

相关文章

找出将要运行的命令的版本

which 回想一下whereis命令&#xff0c;以及用-b选项只查询KWord的二进制文件信息时发生的情况。 $ whereis -b kword kword: /usr/bin/kword /usr/bin/X11/kword 在两个位置都有KWord的可执行文件。但是哪一个文件会先运行呢&#xff1f;运行which命令就可以得到答案。 $ whi…

导入conda虚拟环境的lib

用 conda 虚拟环境跑代码&#xff0c;import scipy 时报错&#xff1a; ImportError: /lib64/libstdc.so.6: version GLIBCXX_3.4.29 not found (required by /data/itom/miniconda3/envs/cu116_pt1131/lib/python3.9/site-packages/scipy/spatial/_ckdtree.cpython-39-x86_64…

人工智能对网络安全的影响

技术的快速发展带来了不断增长的威胁环境&#xff0c;网络犯罪分子和恶意行为者利用我们互联世界中的漏洞。在这个数字时代&#xff0c;数据泄露和网络攻击呈上升趋势&#xff0c;仅靠传统的安全措施已经不够了。人工智能 &#xff08;AI&#xff09; 的进步彻底改变了网络安全…

165. 小猫爬山(DFS之剪枝与优化)

165. 小猫爬山 - AcWing题库 翰翰和达达饲养了 N 只小猫&#xff0c;这天&#xff0c;小猫们要去爬山。 经历了千辛万苦&#xff0c;小猫们终于爬上了山顶&#xff0c;但是疲倦的它们再也不想徒步走下山了&#xff08;呜咕>_<&#xff09;。 翰翰和达达只好花钱让它们…

LeetCode 1671. 得到山形数组的最少删除次数

一、题目 1、题目描述 我们定义 arr 是 山形数组 当且仅当它满足&#xff1a; arr.length > 3存在某个下标 i &#xff08;从 0 开始&#xff09; 满足 0 < i < arr.length - 1 且&#xff1a; arr[0] < arr[1] < ... < arr[i - 1] < arr[i]arr[i] > …

SQL Server动态化列名数据

SQL Server动态化列名数据 DECLARE ColumnName NVARCHAR(100) SET ColumnName 总数 CAST(DATEPART(HOUR, GETDATE()) AS NVARCHAR) 点前派单 DECLARE Sql NVARCHAR(MAX) SET Sql SELECT COUNT(1) AS QUOTENAME(ColumnName) FROM MBHZJ_GD WHERE "SN码" IS N…

LeetCode 21 合并两个有序链表

题目描述 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4]示例 2&#xff1a; 输入&#xff1a;l1 [],…

由浅入深走进Python异步编程【多进程】(含代码实例讲解 || multiprocessing、异步进程池、进程通信)

写在前面 从底层到第三方库&#xff0c;全面讲解python的异步编程。这节讲述的是python的多线程实现&#xff0c;纯干货&#xff0c;无概念&#xff0c;代码实例讲解。 本系列有6章左右&#xff0c;点击头像或者专栏查看更多内容&#xff0c;陆续更新&#xff0c;欢迎关注。 …

高镍正极材料湿法回收除硼树脂

#高镍正极材料湿法回收除硼树脂 锂离子电池高镍正极材料具备高能量密度&#xff0c;能够满足现有电动交通工具对于高续航里程的要求&#xff0c;是现在市场中最受青睐的正极材料之一&#xff0c;然而&#xff0c;组分中高镍含量给材料带来高容量的同时也使材料稳定性变差&#…

大模型ChatGLM下载、安装与使用

在人工智能领域&#xff0c;清华技术成果转化的公司智谱AI启动了支持中英双语的对话机器人ChatGLM内测。ChatGLM是一个初具问答和对话功能的千亿中英语言模型&#xff0c; 并针对中文进行了优化&#xff0c;现已开启邀请制内测&#xff0c;后续还会逐步扩大内测范围。 ChatGLM…

MyBatis Mapper中必须使用$导致SQL Injection 如何修复

在某些特定情况下&#xff0c;你可能确实需要在MyBatis Mapper中使用 $ 符号进行动态SQL拼接&#xff0c;这可能会导致SQL注入的风险。如果你必须使用 $ 符号&#xff0c;并且无法避免SQL注入问题&#xff0c;以下是一些可以降低风险的策略&#xff1a; 手动转义特殊字符&#…

根据IP查找城市 (80%用例)C卷

某业务需要根据终端的IP地址获取该终端归属的城市,可以根据公开的IP地址池信息查询归属城市。地址池格式如下城市名=起始IP,结束IP,起始和结束地址按照英文逗号分隔,多个地址段采用英文分号分隔 比如 City1=1.1.1.1,1.1.1.2;City1=1.1.1.11,1.1.1.16;City2=3.3.3.3,4.4.4.4;…

4 errors detected in the compilation of “render_utils_kernel.cu“

部署环境&#xff1a; 平台&#xff1a;Windows 10 Python&#xff1a;3.10.13 Torch&#xff1a;1.12.1 Cuda&#xff1a;11.7 通过nvcc编译render_utils_kernel.cu的时候会返回以下错误信息 render_utils_kernel.cu(441): error: calling a __host__ function("std::con…

【数据结构和算法】最大连续1的个数 III

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一&#xff1a;滑动窗口 2.2 滑动窗口解题模板 三、代码 3.1 方法一&#xff1a;滑动窗口 四、…

头歌—衍生密码体制

# 第1关&#xff1a;Rabin密码体制 题目描述 任务描述 Rabin密码体制是RSA密码体制的一种。 本关任务&#xff1a;使用Rabin密码体制对给定的明文进行加密。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;Rabin密码体制。 Rabin密码体制 在本关中&#x…

rk3588多模型检测部署quickrun

quickrun 是一款rk3588 rknn多模型高效高并发部署软件 软件框架 采用session思想&#xff0c;可以定义多个session满足不同模型的义务需求。比如充电桩检测&#xff0c;垃圾分类&#xff0c;悬崖检测&#xff0c;模型共用一个摄像头&#xff0c;采用yolov5的模型。 采用消息…

C语言之初识C语言

文章目录 前言一、什么是C语言二、第一个C语言程序三、数据类型四、变量&#xff0c;常量1、变量1.1 变量的命名1.2 变量的分类1.3 变量的使用1.4 变量的作用域和生命周期2、变量 五、字符串1. 概念2. 求解字符串的长度【strlen】3. 转义字符【含笔试题】 六、注释七、选择语句…

UE5 Landscape 制作GIS卫星图地形

1. 总体想法&#xff1a; 制作GIS地形&#xff0c;使用Landscaping MapBox是一个好方法&#xff0c;但是区域过大&#xff0c;会占用很多内存 https://blog.csdn.net/qq_17523181/article/details/135029614 如果采用QGis&#xff0c;导出卫星图&#xff0c;在UE5里拼合出地形…

Prometheus实战篇::什么是Exporter

欢迎各位关注下我的微信公众号:全干程序员demo 回复 “java面试” 获取[java精品面试题] 回复 “idea” 获取[idea2023最新版破解至2099年] 回复"自媒体" 获取个人自媒体笔记:玩转字节跳动平台(可以联系我催更,有时可能因为工作或者发布文章没空更新,因为笔记都是我自…