srpingMVC基本使用

文章目录

  • 1. springMVC基本功能
    • (1) maven坐标导入
    • (2) 编写表现层
    • (3) springMVC配置类编写
    • (4) 部署tomcat访问
  • 2. 各种请求方法
    • get请求
    • post请求
    • put请求
    • delete请求
    • 请求参数提取
  • 3. 请求参数接收
    • (1) param参数接受
      • 封装到对象中
    • (2) 路劲参数接收
    • 集合接受
    • 时间类型接收
    • json参数接收
      • maven导包
      • 开启功能
      • 接收数据
  • 4. 响应数据
  • 5. 全局异常处理
  • 6. springMvc拦截器(Interceptor)

1. springMVC基本功能

与servlet技术功能相等,实现表现层开发:

(1) maven坐标导入

  <dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>6.0.11</version></dependency><dependency><groupId>jakarta.servlet</groupId><artifactId>jakarta.servlet-api</artifactId><version>5.0.0</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency></dependencies>

(2) 编写表现层

@Controller         // 使用controller定义bean
public class test {@GetMapping("/hello")@ResponseBody		// 直接返回给浏览器public String testMVC(){System.out.println("接收到请求");return "hello world!";}
}

(3) springMVC配置类编写

容器配置:

package com.xjy.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan({"com.xjy.controller"})
public class MvcConfig {
}

定义 Spring MVC应用程序的初始化器:

package com.xjy.config;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;
public class MvcContainerInit extends AbstractDispatcherServletInitializer {
//创建DispatcherServlet的应用程序上下文(ApplicationContext)@Overrideprotected WebApplicationContext createServletApplicationContext() {AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();ctx.register(MvcConfig.class);return ctx;}//指定DispatcherServlet的映射路径@Overrideprotected String[] getServletMappings() {return new String[]{"/"};}@Overrideprotected WebApplicationContext createRootApplicationContext() {return null;}public WebApplicationContext context(){return this.createServletApplicationContext();}
}

(4) 部署tomcat访问

注意对应的版本:
在这里插入图片描述

部署tomcat程序:
在这里插入图片描述
启动程序后浏览器访问:
在这里插入图片描述

2. 各种请求方法

get请求

    @GetMapping("/get") // 接受get请求@ResponseBodypublic String get(){System.out.println("接受到请求");return "get";}

post请求

        @PostMapping("/post")@ResponseBodypublic String post(){System.out.println("接受到请求");return "post";}

put请求

    @PutMapping("/put")@ResponseBodypublic String put(){System.out.println("接受到请求");return "put";}

delete请求

    @DeleteMapping("/delete")@ResponseBodypublic String delete(){System.out.println("接受到请求");return "delete";}

请求参数提取

@Controller
@RequestMapping("/user")
public class userController {@RequestMapping("/hello")@ResponseBodypublic String save(){System.out.println("接受到请求");return "hello word!";}}

访问:
在这里插入图片描述

3. 请求参数接收

(1) param参数接受

直接参数接收:

    @GetMapping("/get")@ResponseBodypublic String get(int id){System.out.println("接受到请求"+id);return "get";}

在这里插入图片描述

封装到对象中

    @GetMapping("/get")@ResponseBodypublic String get(student stu){System.out.println("接受到请求"+stu.getName()+stu.getAge());return "get";}

发送请求:
在这里插入图片描述
在这里插入图片描述

(2) 路劲参数接收

    @GetMapping("/get/{id}")@ResponseBodypublic String get(@PathVariable int id){System.out.println("接受到路劲参数:"+id);return "get";}

发送请求:
在这里插入图片描述
在这里插入图片描述

集合接受

    @PostMapping("/post")@ResponseBodypublic String post(@RequestParam List<Integer> list){System.out.println("接受到请求"+list.get(0));return "ok";}

发送请求:
在这里插入图片描述

时间类型接收

    @GetMapping("/get")@ResponseBodypublic String get(@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate date){System.out.println("接受到时间参数:"+date);return "get";}

发送:
在这里插入图片描述

json参数接收

maven导包

    <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.13.3</version></dependency>

开启功能

@Configuration
@ComponentScan({"com.xjy.controller"})
@EnableWebMvc
public class MvcConfig {
}

接收数据

    @PostMapping("/post")@ResponseBodypublic String post(@RequestBody student stu){System.out.println("接受到请求"+ stu.getName());return "{'status','ok'}";}

发送数据:
在这里插入图片描述

4. 响应数据

方法中直接return

返回json: @ResponseBody 加上注解
@RestController -> @controller + @ResponseBody
在这里插入图片描述

5. 全局异常处理

注解需要配包扫描:

@RestControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(Exception.class)public String exceptionHandler(Exception ex){System.out.println("处理到异常");return "err";}
}

模拟异常:
在这里插入图片描述

6. springMvc拦截器(Interceptor)

自定义拦截:


public class interceptorDo implements HandlerInterceptor {@Override // 拦截方法public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("拦截到请求");return true;//返回true放行,返回不放行;}@Override  //资源运行后执行public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);}@Override  //视图渲染完毕后执行public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {HandlerInterceptor.super.afterCompletion(request, response, handler, ex);}
}

配置拦截器:


@Configuration
@ComponentScan({"com.xjy.controller"})
@EnableWebMvc       
public class MvcConfig implements WebMvcConfigurer {@Beanpublic interceptorDo getInteceptor(){return new interceptorDo();}@Autowiredprivate interceptorDo interceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(interceptor).excludePathPatterns("/long");//过滤登录拦截}
}

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

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

相关文章

1.C++入门(上)

目录 1.C关键字 2.命名空间 作用域方面的优化 a.命名空间定义 b.命名空间使用 3.C 输入&输出 1.C关键字 C有63个关键字&#xff0c;C语言有32个关键字&#xff0c;存在重叠如荧光笔标出 2.命名空间 作用域方面的优化 如果变量&#xff0c;函数和类的名称都存在于全…

java 词法分析练习

import parser.Parser;import java.util.ArrayList; import java.util.Arrays; import java.util.List;public class Main {public static void main(String[] args) {// 关键词List<String> keyList new ArrayList<>(Arrays.asList("int","String…

鸿蒙APP开发页面组件之间的属性关系

我们将对于多页面以及更多有趣的功能展开叙述&#xff0c;这次我们对于 HarmonyOS 的很多有趣常用组件并引出一些其他概念以及解决方案、页面跳转传值、生命周期、启动模式&#xff08;UiAbility&#xff09;&#xff0c;样式的书写、状态管理以及动画等方面进行探讨 页面之间…

mac 教程 终端如何拆墙

一直觉得自己写的不是技术&#xff0c;而是情怀&#xff0c;一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的&#xff0c;希望我的这条路能让你们少走弯路&#xff0c;希望我能帮你们抹去知识的蒙尘&#xff0c;希望我能帮你们理清知识的脉络&#xff0…

【Paddle】PCA线性代数基础 + 领域应用:人脸识别算法(1.1w字超详细:附公式、代码)

【Paddle】PCA线性代数基础及领域应用 写在最前面一、PCA线性代数基础1. PCA的算法原理2. PCA的线性代数基础2.1 标准差 Standard Deviation2.2 方差 Variance2.3 协方差 Covariance2.4 协方差矩阵 The Covariance Matrix2.5 paddle代码demo①&#xff1a;计算协方差矩阵2.6 特…

4.8 Python dict字典

Python dict字典详解 Python字典&#xff08;dict&#xff09;是一种无序的、可变的序列&#xff0c;它的元素以“键值对&#xff08;key-value&#xff09;”的形式存储。相对地&#xff0c;列表&#xff08;list&#xff09;和元组&#xff08;tuple&#xff09;都是有序的序…

【Android12】Bugreport实现原理

Bugreport实现原理 Bugreport Bugreport介绍 Android Bugreport是一个用于记录和收集 Android设备上系统信息、日志和调试信息的工具。 系统发生某些问题时&#xff0c;可以通过bugreport把系统当前时刻点&#xff08;运行BugRepot的时刻&#xff09;的系统相关的状态和信息…

HarmonyOS 实战开发-MindSpore Lite引擎进行模型推理

场景介绍 MindSpore Lite 是一款 AI 引擎&#xff0c;它提供了面向不同硬件设备 AI 模型推理的功能&#xff0c;目前已经在图像分类、目标识别、人脸识别、文字识别等应用中广泛使用。 本文介绍使用 MindSpore Lite 推理引擎进行模型推理的通用开发流程。 基本概念 在进行开…

YOLOv5利用Labelimg标注自己数据集

目录 一、Labelimg介绍二、Labelimg下载三、Labelimg安装四、Labelimg使用1、准备2、开始标注 一、Labelimg介绍 LabelImg是一款开源的图片标注工具&#xff0c;使用Python编写&#xff0c;基于PyQt5框架。它提供了一个直观的图形用户界面&#xff0c;方便用户对图片进行标注&…

axios——503响应超时重复多次请求——技能提升

今天在写后台管理系统时&#xff0c;遇到一个问题&#xff0c;就是每天早上一启动项目&#xff0c;接口会提示503超时&#xff0c;因此项目运行必须重新刷新请求成功后才可以正常使用。 后端同事说请求超时了&#xff0c;需要前端处理一下&#xff0c;如果是503的状态码&#…

Golang特殊init函数

介绍 init()函数是一个特殊的函数&#xff0c;存在一下特性 不能被其它函数调用&#xff0c;而是子main()函数之前自动调用不能作为参数传入不能有传入参数和返回值 作用&#xff1a; 对变量进行初始化检查/修复程序状态注册运行一次计算 以下是<<the way to go>>…

Web APIs 学习归纳1---Web API概述简单的元素获取

JS基础中我们学习了JS的基本语句&#xff0c;这些是后续学习中的基础。 有了上述JS的基础以后&#xff0c;我们就可以开始学习交互效果的实现方法。这里很多时候直接调用JS封装好的API即可。 一、Web APIs 和 JS 基础关联性 这里有一张图很好的解释了这个问题&#xff1a; 我们…

python高校贫困学生资助奖学金管理系统vue+django

我们根据项目文档&#xff0c;包括规格说明、文档及在设计过程中形成的测试大纲、测试内容及测试的通过准则、再次全面熟悉系统&#xff0c;做好测试准备。为了保证测试的质量&#xff0c;我们将测试过程分为几个阶段。第一阶段&#xff0c;在单元测试阶段我们对每个子模块进行…

可视化+多人协同技术原理和案例分享

前言 hi&#xff0c;大家好&#xff0c;我是徐小夕&#xff0c;之前和大家分享了很多可视化低代码的技术实践&#xff0c;最近也做了一款非常有意思的文档搭建引擎——Nocode/Doc&#xff1a; 也做了一些分享&#xff1a; Nocode/Doc&#xff0c;可视化 零代码打造下一代文件编…

SpringBoot+vue开发记录(二)

说明&#xff1a;本篇文章的主要内容为SpringBoot开发中后端的创建 项目创建: 1. 新建项目&#xff1a; 如下&#xff0c;这样简单创建就行了&#xff0c;JDK什么的就先17&#xff0c;当然1.8也是可以的&#xff0c;后面可以改。 这样就创建好了&#xff1a; 2. pom.xml…

ChatGPT全方位指导:学术论文写作从零开始,轻松搞定高质量论文!

目录 文末福利 一、论文选题的深度探讨 二、撰写摘要的艺术 三、关键词的精选 四、引言的构建 五、正文的结构设计 六、撰写结论的策略 七、致谢的编写 八、附录的有效利用 九、参考文献的整理 文末有福利哦 撰写一篇高质量的学术论文是一项既复杂又耗时的任务。这个…

MongoDB数据恢复—拷贝MongoDB数据库文件后无法启动服务的数据恢复案例

服务器数据恢复环境&#xff1a; 一台Windows Server操作系统服务器&#xff0c;服务器上部署MongoDB数据库。 MongoDB数据库故障&检测&#xff1a; 工作人员在未关闭MongoDB数据库服务的情况下&#xff0c;将数据库文件拷贝到其他分区。拷贝完成后将原MongoDB数据库所在分…

8个拿来即用的Python自动化脚本!

每天你都可能会执行许多重复的任务&#xff0c;例如阅读新闻、发邮件、查看天气、清理文件夹等等&#xff0c;使用自动化脚本&#xff0c;就无需手动一次又一次地完成这些任务&#xff0c;非常方便。而在某种程度上&#xff0c;Python 就是自动化的代名词。 今天分享 8 个非常…

医学影像增强:空间域方法与频域方法等

医学影像图像增强是一项关键技术,旨在改善图像质量,以便更好地进行疾病诊断和评估。增强方法通常分为两大类:空间域方法和频域方法。 一、 空间域方法 空间域方法涉及直接对医学影像的像素值进行操作,以提高图像的视觉质量。以下是一些常用的空间域方法: 对比度调整:通过…

《逍遥游·六十八拐》

五月阳光映大观&#xff0c;艳丽队服身上穿。海埂西门集合后&#xff0c;蓝光城外相谈欢。 松茂水库映蓝天&#xff0c;阳宗镇上舞蹁跹。 六十八拐道崎岖&#xff0c;一鼓作气意志坚。 宜良宿&#xff0c;夜幕深&#xff0c;梦中山水情相牵。待破晓&#xff0c;新日升&#xf…