如何在 Spring Boot 中使用 WebMvc

news2024/12/30 3:34:35

如何在 Spring Boot 中使用 WebMvc

引言

Spring Boot 是一个快速、简单的开发框架,可以帮助我们快速地搭建一个基于 Spring 的 Web 应用程序。在 Spring Boot 中,我们可以使用 WebMvc 来构建 Web 应用程序。WebMvc 是 Spring 框架中的一个模块,它提供了 MVC 模式的支持,包括控制器、视图解析器、拦截器等功能。在本文中,我们将介绍如何在 Spring Boot 中使用 WebMvc。

在这里插入图片描述

创建 Spring Boot Web 应用程序

首先,我们需要创建一个 Spring Boot Web 应用程序。可以使用 Spring Initializr 来快速创建一个 Spring Boot 项目。在创建项目时,选择 Web 依赖,如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b4qGdlb6-1687746462750)(null)]

创建项目后,我们可以在 pom.xml 文件中看到 Spring Boot 的 Web 依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

创建控制器

在 Spring Boot 中,我们可以使用 @Controller 注解来创建控制器。控制器是处理请求和响应的核心组件。以下是一个简单的控制器:

@Controller
public class HelloController {
 
    @RequestMapping("/hello")
    @ResponseBody
    public String hello() {
        return "Hello, world!";
    }
}

在上面的代码中,我们使用 @Controller 注解来标识这个类是一个控制器。使用 @RequestMapping 注解来指定处理的请求路径和请求方法。使用 @ResponseBody 注解来指定返回的内容类型。

视图解析器

在 Spring Boot 中,我们可以使用视图解析器来解析视图。视图解析器将逻辑视图名称解析为实际视图的 URL。Spring Boot 默认使用 Thymeleaf 作为视图解析器。以下是一个简单的 Thymeleaf 模板:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Example</title>
</head>
<body>
    <h1 th:text="${message}"></h1>
</body>
</html>

在上面的代码中,我们使用 Thymeleaf 的语法来设置视图内容。使用 th:text 属性来设置文本内容。在控制器中,我们可以使用 ModelAndView 来设置模型数据和视图名称:

@Controller
public class HelloController {
 
    @RequestMapping("/hello")
    public ModelAndView hello() {
        ModelAndView modelAndView = new ModelAndView("hello");
        modelAndView.addObject("message", "Hello, world!");
        return modelAndView;
    }
}

在上面的代码中,我们使用 ModelAndView 来设置模型数据和视图名称。视图名称是 “hello”,对应了上面的 Thymeleaf 模板。

拦截器

在 Spring Boot 中,我们可以使用拦截器来拦截请求并进行处理。拦截器可以用于实现日志记录、安全认证、性能监控等功能。以下是一个简单的拦截器:

@Component
public class LoggerInterceptor implements HandlerInterceptor {
 
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("Request URL: " + request.getRequestURL());
        return true;
    }
 
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("Response Status: " + response.getStatus());
    }
}

在上面的代码中,我们创建了一个 LoggerInterceptor 类,并实现了 HandlerInterceptor 接口。在 preHandle 方法中,我们打印了请求的 URL。在 postHandle 方法中,我们打印了响应的状态码。

在 Spring Boot 中,我们需要将拦截器注册到 WebMvcConfigurer 中:

@Configuration
public class WebConfig implements WebMvcConfigurer {
 
    @Autowired
    private LoggerInterceptor loggerInterceptor;
 
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(loggerInterceptor);
    }
}

在上面的代码中,我们创建了一个 WebConfig 类,并实现了 WebMvcConfigurer 接口。在 addInterceptors 方法中,我们将 LoggerInterceptor 注册到了拦截器列表中。

总结

在本文中,我们介绍了如何在 Spring Boot 中使用 WebMvc。我们创建了一个控制器来处理请求和响应,使用了视图解析器来解析视图,使用了拦截器来拦截请求并进行处理。Spring Boot 的 WebMvc 模块为我们提供了方便的 MVC 模式的支持,使得我们可以快速地构建 Web 应用程序。

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

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

相关文章

【案例实战】SpringBoot整合Redisson实现RedLock分布式锁同步

思考&#xff1a;生产环境下Redis集群环境&#xff0c;怎么保证锁的同步&#xff1f; 我们先来回顾一下分布式锁的作用&#xff1a;就是保证同一时间只有一个客户端可以对共享资源进行操作。 当我们集群环境部署的时候&#xff0c;假如节点一在主节点获取分布式锁成功。Redis…

【微服务架构模式】构建应用程序的顶级微服务设计模式

在当今市场上&#xff0c;微服务已成为构建应用程序的首选解决方案。众所周知&#xff0c;它们可以解决各种挑战&#xff0c;但是&#xff0c;熟练的专业人员在使用此架构时经常面临挑战。因此&#xff0c;相反&#xff0c;开发人员可以探索这些问题中的常见模式&#xff0c;并…

简单的Image Picker:使用Jetpack Compose无需权限申请

简单的Image Picker&#xff1a;使用Jetpack Compose无需权限申请 学习如何在Android应用中轻松选择、存储和加载本地图像&#xff0c;无需繁琐的权限处理。 作为一名Android开发者&#xff0c;我知道在应用中实现本地图像选择时处理权限可能会让人感到沮丧。这就是为什么我想…

Juc04_阻塞队列概述、方法、实现类、Linked和Array区别、注意事项

文章目录 ①. 什么是阻塞队列②. BlockingQueue的主要方法③. BlockingQueue的实现类④. Linked和Array区别⑤. 不推荐使用快捷的线程池 ①. 什么是阻塞队列 ①.阻塞队列:从名字可以看出,它也是队列的一种,那么它肯定是一个先进先出FIFO的数据结构。与普通队列不同的是,他支持两…

Flask新手教程

Flask简介 Flask是一个轻量级的可定制框架&#xff0c;使用Python语言编写&#xff0c;较其他同类型框架更为灵活、轻便、安全且容易上手。 Flask 可以很好地结合MVC模式进行开发&#xff0c;开发人员分工合作&#xff0c;小型团队在短时间内就可以完成功能丰富的中小型网站或…

正点原子uboot分析

知识点 为终端不输出command line&#xff1a;终端输入如果变量quiet为空的话&#xff0c;整个命令都会输出。 如果变量 quiet为“ quiet_”的话&#xff0c;仅输出短版本。 如果变量 quiet为“ silent_”的话&#xff0c;整个命令都不会输出。sinclude&#xff1a;读取的文件…

Java通过JNI调用dll动态库详细步骤

目录 目标具体示例1、编写java代码&#xff1a;定义native接口2、根据java编写的native接口生成.h头文件3、使用Visual Studio编写c代码实现头文件接口并生成dll文件4、将生成的jni.dll文件放入jdk bin下5、编写java测试类&#xff0c;调用dll 附&#xff1a;问题java测试类执行…

上门家教app小程序源码开发的前景如何?

随着我国生活水平的提高&#xff0c;教育方面的问题也越来越受到家长们的重视&#xff0c;很多家庭都开始通过家教以及辅导班等方式增强学生的学业知识&#xff0c;因此家教app开发是拥有很大一部分用户市场的。那么家教app开发主要适合什么行业呢&#xff1f; 上门家教服务或…

Zabbix-客户端部署全过程

本文已收录于专栏 《中间件合集》 目录 概念说明什么是Zabbix 功能介绍配置过程1.在linux下的admin文件夹下创建zabbix文件夹2.把agent端压缩包放置到home/admin/zabbix路径下3.解压安装包4.创建zabbix日志文件5.进入到conf文件夹下&#xff0c;修改配置文件&#xff0c;与serv…

Linux系统下网络性能监控指令(iftop、nload)

文章目录 iftop参数快捷键iftop界面说明&#xff1a; nload参数示例 iftop 参数 -i 设定监测的网卡&#xff0c;如&#xff1a;# iftop -i eth1 -B 以bytes为单位显示流量(默认是bits)&#xff0c;如&#xff1a;# iftop -B -n 使host信息默认直接都显示IP&#xff0c;如&…

今天给大家安利几款非常好用的文件迁移工具

文件迁移是我们平时经常需要处理的问题之一。在日常生活中&#xff0c;我们可能需要将一些文件从电脑上的一个位置迁移到另一个位置&#xff0c;或者将文件转移到外部硬盘或云端存储空间。而为了更加高效地完成这项任务&#xff0c;使用一款好用的文件迁移工具显得尤为重要。今…

基于smardaten无代码开发解决光伏电站项目

文章目录 前言一、事故背景二、解决方案三、工具加持四、配置要点解析1、光伏导航菜单搭建2、运行监控组件布局3、员工填报表单创建4、数据接入清洗5、复杂数据展示5、地图大屏组装6、定制页面集成 五、挖掘更多惊喜1、模拟数据生成2、智能分析结果3、草图智能识别4、日期排班设…

el-dialog设置滚动条不生效记录【草稿版,待优化】

目录 前言一、scrollTop是什么&#xff1f;二、解决步骤总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 技术栈 element-plus vue3 js 记录el-dialog的弹窗中&#xff0c;通过js控制滚动条不生效。 我这次的需求是这样的&#xff0c;点击某个按钮…

SSM-Spring项目使用Tomcat:7插件运行项目注意事项

文章目录 配置Tomcat:7插件&#xff08;注意Path&#xff09;运行tomcat:7第一种方式第二种方式 测试路径&#xff08;注意&#xff09;正确请求方式&#xff08;注意路径&#xff09; 配置Tomcat:7插件&#xff08;注意Path&#xff09; 作为演示&#xff0c;我这里特别配置了…

中学生台灯怎么选比较好?精选真正适合中学生的台灯!

现在孩子的近视率很高&#xff0c;尤其是儿童青少年居多&#xff0c;从上了小学开始作业就变多了&#xff0c;经常挑起夜灯学习的&#xff0c;而中学生负担则更重。家长重视教育质量的同时也要注意孩子学习时的光线适合学习吗&#xff1f;用眼过度和不适合的光源容易导致近视&a…

Sangfor华东天勇战队:jeecg-boot登录分析

realkey获取 7evs1680077379806 可以看到代码逻辑如下&#xff0c;md5(小写验证码checkKey)&#xff0c;这里checkKey是时间戳 然后继续往下看 这里checkcode取值为空&#xff0c;这是为什么呢&#xff0c;是因为redisUtil中没有获得&#xff0c;登录的时候会存到redis中&a…

SLAM之反求运动和地图点(对极几何)

简介 前面的文章介绍了如何在已知空间点的情况下在不同坐标系中的表示&#xff08;刚体的坐标变换&#xff09;&#xff0c;以及如何将空间中的点投影到相机中生成图像&#xff0c;但是现实中的情况却是相反的情况&#xff08;空间点以及坐标系之间的变换未知&#xff09;&…

【裸机开发】定时器按键消抖(EPIT)

实际工程中&#xff0c;不能直接通过延时来消抖 ! 这里我们采用定时器来消抖&#xff0c;这也是内核处理消抖的一种方式。 目录 一、基本原理 1、延时消抖的弊端 2、定时器消抖原理 二、按键消抖实现 1、按键中断 2、定时器中断 三、附加&#xff1a;按键 / 定时器中断初…

前后端分离开发跨域问题总结

前后端分离开发跨域问题总结 一、什么是跨域访问二、解决跨域问题1、Vue前端配置代理解决跨域2、SpringBoot后端配置解决跨域2.1 跨域配置类CorsConfig&#xff08;常用&#xff09;2.2 Controller添加CrossOrigin注解2.3 添加CORS过滤器CorsFilter&#xff08;常用&#xff09…

selenium之鼠标操作

首先导入ActionChains类&#xff0c;该类可以完成鼠标移动&#xff0c;鼠标点击事件&#xff0c;键盘输入、内容菜单交互等交互行为。 from selenium.webdriver.common.action_chains import ActionChains 操作语法&#xff1a; 第一步&#xff1a;初始化ActionChains类&…