springMVC理解

springMVC是一种思想,将软件划分为,模型Model,视图View,控制器Controller。

MVC的工作原理:用户通过前端视图页面,发送请求到服务器,在服务器中请求被Controller接收,Controller调用相应的Model层处理请求,处理完毕返回到Controller,再根据请求处理的结果找到对应的视图,经过渲染数据后响应给浏览器。

springMVC基于servlet,封装了servlet的操作,构造了DispatcherServlet前端管理器,对请求和响应统一进行管理。

一、准备工作

1.使用

        创建maven项目,并添加web模块,定义打包方式为war包,在pom文件引入对应依赖坐标。

2. 配置web.xml

        注册前端管理器DispatcherServlet:定义<servlet>和<servlet-mapping>

                <url-pattern>定义了路径模型,当请求符合该路径,就会被DispatcherServlet进行处理

        这里使用     "   /   "  意思是除了jsp页面以外的所有请求,都会被拦截处理

        而jsp页面需要被tomcat的默认servlet来处理,前端控制器无法处理,所以使用"  /  "

<init-param>是上下文配置路径,也就是加载spring MVC配置文件的路径

<;oad-on-startup>默认是第一次访问时进行初始化servlet,将该值设置为1,表示在服务器启动时就开始初始化DispatcherServlet

3. 创建请求控制器

        请求控制器就是一个个普通的pojo类,但需要@Controller声明为控制层组件bean,交给ioc容器,SpringMVC才识别的到。

4. 创建SpringMVC的配置文件,配置好web服务器后就可以了

        springMVC的配置文件默认处于WEB-INF目录下,但我们都会放到resources目录,

且名字是<servlet-name>-servlet.xml

        在配置文件中,定义组件扫描component-scan来扫描控制层组件

        然后配置thymeleaf的视图解析器,通过逻辑视图来实现页面的重定向和转发。这里使用其他的也可以

二、自定义控制层Controller

        1.在控制层定义方法,通过注解@RequestMapping定义请求路径参数,或者按照Resuful风格,定义注解@GetMapping,@PostMapping,@DeleteMapping,@PutMapping,用法类似

        2.@RequestMapping标识的位置

        可以标识在类上,表示设置请求路径的基础信息,即抽取出相同的请求路径,这样方法中就不用再写出了

        可以标识在单个方法上标识,表示设置请求路径的具体信息。

           @RequestMapping的属性

                value:数组类型,意思是可以设置多个请求路径,也就是一个控制器方法可以处理若干个请求

                method:规定控制器方法在请求路径匹配的情况下,继续匹配请求方式get,post等等

                params:

                headers:

        3.ant风格的请求路径

使用         ?        表示任意的单个字符,除了它本身

使用         *        表示当前目录任意的0个或多个字符  

使用         **       表示任意层数的任意目录

        

        4.springMVC中获取请求参数的方式

               4.1 通过原生servletAPI:定义HttpServlet的形参,调用getParameter方法等等。

                4.2 在springMVC中,只要控制器方法的参数列表和请求的参数保持一致,就可以自动完成接收。

注意参数名称不一致的话,可以使用注解@RequestParam,表示给形参起别名,从而完成映射。

还有两个类似的注解:@RequestHeader用来将请求头的信息和控制器方法的形参绑定@CookieValue:将cookie数据和控制器方法的形参绑定。

                4.3 通过pojo类型获取参数,实际上和5.2一样,定义的pojo类,其中的属性名称必须和请求参数保持一致。

                4.4 接收PathVariable 路径参数

在路径中使用占位符 {} 动态表示,在控制器方法的参数列表用加上@PathVariable注解的形参进行接收,注意保持名称一致

                4.5 接收数组集合参数

                4.6 接收日期参数

                4.7 接收JSon数据

        5. springMVC的响应参数

                5.1 @ResponseBody

                5.2 统一响应结果

        定义一个Result类,该类的对象将来会转为json格式的字符串,作为响应结果返回给前端-- 

        6. 向请求域中共享数据

                6.1 使用原生servlet的setAttribute方法

                6.2 使用ModelAndView类进行共享,使用Model的功能向请求域共享数据,再使用View的视图功能设置逻辑视图,并且控制器方法一定要返回ModelAndView的对象作为返回值。

                6.3 使用Model,ModelMap,Map

        Model:Model是接口类型,addAttribute和上面的addObject用法一样,定义一个属性名称和属性的值

        ModelMap:

        Map:使用键值对的方式把属性名称和属性值存到map集合

        7. springMVC实现文件的上传和下载

文件上传:

文件下载:

        8.拦截器interceptor

自定义拦截器类,实现HandlerInterceptor接口,重写里面的三个抽象方法,添加业务逻辑

preHandle:在控制器方法执行前执行,返回值为是否放行,false代表拦截,true为放行

postHandle:在控制器方法执行后执行

afterCompletion:在控制器方法执行后,且视图渲染完毕后执行

然后把拦截器类上交ioc容器管理,作为bean组件

在springmvc的配置文件注册拦截器(记得包扫描):

        1.通过注解成为bean之后可以直接使用默认的bean名称注册

        2.不使用@component,则在xml重新定义一个bean来指定

        3.也可以使用,<mvc:interceptor>子标签,里面添加排除拦截的路径和拦截路径

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

科技助力上亿用户隐私安全保护,合合信息两款产品再获CCIA PIA星级标识

随着互联网技术的飞速发展&#xff0c;个人信息的收集、存储、使用和传输变得日益频繁&#xff0c;其泄露和滥用的风险也随之增加&#xff0c;个人信息保护已成为社会共同关注的热点议题。近期&#xff0c;“中国网络安全产业联盟&#xff08;CCIA&#xff09;数据安全工作委员…

2024/4/15 网络编程day3

一、TCP机械臂测试 通过w(红色臂角度增大)s&#xff08;红色臂角度减小&#xff09;d&#xff08;蓝色臂角度增大&#xff09;a&#xff08;蓝色臂角度减小&#xff09;按键控制机械臂 注意&#xff1a;关闭计算机的杀毒软件&#xff0c;电脑管家&#xff0c;防火墙 1&#…

居中问题:line-height、基线

html5CSS3的居中专题 完整链接&#xff1a; https://pan.baidu.com/s/16IhFoBC2gNPZwosyS6UXxQ 密码: ft2j –来自百度网盘超级会员V7的分享 居中问题 a. 行内元素 水平居中&#xff1a;父标签设置text-align:center&#xff0c; 垂直居中&#xff1a;父标签设置line-heigh…

电脑技巧:Bandicam班迪录屏介绍

目录 一、 软件简介 二、软件功能 2.1 屏幕录制 2.2 游戏录制 2.3 设备录制 2.4实时编辑与截图 2.5 轻量级软件 三、软件用途 3.1 教育培训 3.2 游戏直播与分享 3.3 企业办公 3.4 在线教学与知识分享 四、总结 今天给大家推荐一款非常实用的电脑录屏软件&#xf…

深入浅出学习切片LOD——ArcGIS server模拟缓存切片(影像快显)

一、第一次实践 原理 免切片实现影像服务的模拟切片&#xff0c;主要原理是接收前端传过来的xyz(行列层级)以及切片方案&#xff0c;计算出该请求的切片的四至经纬度信息&#xff0c;通过mapserver的exportImage接口&#xff0c;传入每个模拟切片的四至经纬度信息得到图片返回…

nginxWebUI配置conf

在左边相应位置写入要修改的语句后&#xff0c;依次点击“校验文件”、“替换文件”、“重新装载”即可重启conf

柴油发电机负载原理是怎样的

柴油发电机负载原理是指当发电机在运行过程中&#xff0c;通过外部负载设备&#xff08;如电动机、照明设备等&#xff09;从发电机输出电能&#xff0c;从而使发电机内部的转子产生旋转磁场&#xff0c;进而驱动发电机的定子绕组产生交流电压的过程。这个过程涉及到发电机的工…

Leetcode - 128双周赛

目录 一&#xff0c;3110. 字符串的分数 二&#xff0c;3111. 覆盖所有点的最少矩形数目 三&#xff0c;3112. 访问消失节点的最少时间​编辑 写法一&#xff1a;朴素 Dijkstra&#xff08;适用于稠密图&#xff0c;即边比较多的图&#xff09; 写法二&#xff1a;堆优化 …

海思Hi3519 DV500 部署yolov5并加速优化

本项目代码已开源&#xff0c;见文末 导出onnx模型 yolov5官方地址 利用官方命令导出python export.py --weights yolov5n.pt --include onnx 或者自写代码导出 import os import sys os.chdir(sys.path[0]) import onnx import torch sys.path.append(..) from models.co…

Maui 显示当前时间

1、MainPage.xaml.cs 代码 using System.Threading;namespace Mauitime {public partial class MainPage : ContentPage{private Timer _timer;public MainPage(){InitializeComponent();_timer new Timer(_ > UpdateCurrentTime(), null, 0, 1000);}// 在页面显示时更新当…

CMC学习系列 (10):CMC计算方法介绍

CMC计算方法介绍 0. 引言1. 主要贡献2. 方法2.1 普通CMC2.2 小波CMC2.3 其余方法2.4 预处理增强型CMC 3. 总结欢迎来稿 论文地址&#xff1a;https://www.frontiersin.org/articles/10.3389/fnhum.2019.00100/full 论文题目&#xff1a;Corticomuscular Coherence and Its Appl…

基于springboot的高校教师教学质量评价系统

基于springboot的高校教师教学质量评价系统 前言 随着社会的发展&#xff0c;高校教师教学质量评价系统的管理形势越来越严峻。越来越多的用户利用互联网获得信息&#xff0c;但高校教师教学质量评价系统信息鱼龙混杂&#xff0c;信息真假难以辨别。为了方便用户更好的获得高…

2.SG90舵机模块

当我们输出一段脉冲信号的时候就可以调节舵机的角度 我们可以从原理图可以看到舵机的脚在PA6 从芯片手册我们又可以看到PA6对应TIM3_CH1,并且不用开启部分重映像就能使用 新建Servo.c存放PWM初始化 配置PWM void Servo_TIM3_Init(u16 arr,u16 psc) {//开启TIM3的时钟RCC_APB1…

Docker部署SpringBoot服务(Jar包映射部署)

介绍 项目在docker部署运行以后&#xff0c;每次需更新jar包时&#xff0c;都得重新制作镜像&#xff0c;再重新制作容器。流程及其繁琐&#xff0c;效率极低。 以下步骤是在不更新镜像和容器的前提下&#xff0c;直接更新jar完成项目更新的操作。 不重新制作镜像部署 1. 创…

基于单片机的智能模拟路灯控制系统

摘 要: 随着电力资源的紧缺,以及光污染和雾霾天气的影响,更智能化的路灯设计对人们的日常生活意义重大。本文的智能路灯控制系统是基于单片机的控制器,通过介绍该系统相应的硬件设计和软件设计,实现定时开关和依具体情况是否需要来开关路灯和进行亮度调节,并且具有自检功能…

CESS 受邀出席香港Web3.0标准化协会第一次理事会议,共商行业未来

2024 年 4 月 5 日&#xff0c;CESS&#xff08;Cumulus Encrypted Storage System&#xff09;作为香港 Web3.0 标准化协会的副理事会成员&#xff0c;于香港出席了 2024 年度第一次理事会会议。此次会议汇聚了来自不同领域的知名企业和专家&#xff08;参会代表名单见文末&am…

PaddleOCR训练自己模型(1)----数据准备

一、下载地址&#xff1a; PaddleOCR开源代码&#xff08;下载的是2.6RC版本的&#xff0c;可以根据自己需求下载&#xff09; 具体环境安装就不详细介绍了&#xff0c; 挺简单的&#xff0c;也挺多教程的。 二、数据集准备及制作 &#xff08;1&#xff09;下载完代码及配置…

实时气象水文监测站

TH-SW4随着科技的飞速发展和人类对环境保护意识的日益增强&#xff0c;实时气象水文监测站在水库环境管理中的作用日益凸显。这种在线监测技术不仅为水库的安全运行提供了坚实的技术支撑&#xff0c;也为环境保护和灾害预防提供了及时、准确的数据支持。 一、实时气象水文监测…

酷开科技以用户为中心,搭建强大空间赋能的酷开系统

从市场前景和竞争格局来看&#xff0c;现在人口红利正在消逝&#xff0c;中国刚需类家电消费正在进入饱和期。在目前激烈的市场竞争环境下&#xff0c;智能家电正在成为家居市场新宠儿。酷开科技以用户为中心&#xff0c;为用户搭建智能的酷开系统&#xff0c;具有强大的空间赋…

[C++][算法基础]求最小生成树(Prim)

给定一个 n 个点 m 条边的无向图&#xff0c;图中可能存在重边和自环&#xff0c;边权可能为负数。 求最小生成树的树边权重之和&#xff0c;如果最小生成树不存在则输出 impossible。 给定一张边带权的无向图 G(V,E)&#xff0c;其中 V 表示图中点的集合&#xff0c;E 表示图…