【Spring 篇】走进SpringMVC的世界:舞动Web的激情

2024-01-14 19:28

本文主要是介绍【Spring 篇】走进SpringMVC的世界:舞动Web的激情,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

嗨,亲爱的小白们!欢迎来到这篇关于SpringMVC的博客,让我们一起探索这个舞动Web的框架,感受它带来的激情和便利。在这个世界里,我们将学到SpringMVC的概述、开发步骤以及如何快速入门,一切都是如此的令人兴奋。

踏上舞台:SpringMVC概述

在我们深入了解SpringMVC之前,让我们先简单了解一下它是什么。SpringMVC是Spring框架的一个模块,用于构建Web应用程序。它采用了经典的MVC(Model-View-Controller)设计模式,将应用程序划分为三个主要的组件:

  • Model(模型):负责处理数据逻辑,与数据库交互,提供数据给View展示。
  • View(视图):负责用户界面的展示,将Model提供的数据呈现给用户。
  • Controller(控制器):负责处理用户请求,调用Model获取数据,并将数据传递给View展示。

SpringMVC通过这种分层的方式,使得我们能够更清晰地组织和管理代码,提高了应用程序的可维护性。

舞动的步伐:SpringMVC开发步骤

1. 项目初始化

首先,我们需要创建一个新的SpringMVC项目。可以使用Spring Initializr(https://start.spring.io/)来初始化一个基本的Spring Boot项目。选择你需要的配置,点击"Generate"下载项目压缩包,解压后导入到你喜欢的集成开发环境中。

2. 添加SpringMVC依赖

pom.xml文件中,添加SpringMVC的依赖:

<dependencies><!-- ...其他依赖 ... --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>

这个依赖包含了构建基本的SpringMVC应用所需的一切。

3. 创建一个简单的Controller

src/main/java/com/example/demo目录下,创建一个名为DemoController.java的类,用于处理Web请求:

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;@Controller
public class DemoController {@GetMapping("/hello")public String hello(Model model) {model.addAttribute("message", "Hello, SpringMVC!");return "hello";}
}

这个简单的Controller定义了一个/hello的GET请求,返回一条简单的问候语。

4. 创建一个显示结果的View

src/main/resources/templates目录下,创建一个名为hello.html的HTML文件,用于展示Controller返回的数据:

<!DOCTYPE html>
<html>
<body><h2 th:text="${message}"></h2></body>
</html>

5. 启动应用

在项目的根目录下执行以下命令启动应用:

./mvnw spring-boot:run

或者在集成开发环境中直接运行DemoApplication.java中的main方法。

打开浏览器访问:http://localhost:8080/hello,你将看到页面上显示着"Hello, SpringMVC!"。

至此,我们已经成功完成了一个简单的SpringMVC应用的开发。接下来,让我们更深入地了解一下SpringMVC的一些核心概念。

感受激情:快速入门SpringMVC

1. 请求映射

在SpringMVC中,我们通过@RequestMapping注解来定义Controller处理的请求映射。例如,我们想要处理一个路径为/greet的GET请求,可以这样写:

@GetMapping("/greet")
public String greet() {return "greet";
}

这里,我们使用了@GetMapping注解,表示处理GET请求。返回值为字符串"greet",它将会被解析为视图名称,系统将会找到名为greet.html的模板文件。

2. 请求参数

在处理请求时,我们常常需要从URL中获取参数。SpringMVC提供了多种方式来接收请求参数,最简单的方式是直接将参数添加到方法的参数中:

@GetMapping("/greet")
public String greet(@RequestParam String name, Model model) {model.addAttribute("message", "Hello, " + name + "!");return "greet";
}

在这个例子中,我们通过@RequestParam注解将name参数绑定到方法的参数中。当我们访问/greet?name=John时,name参数将被设置为"John"。

3. 路径变量

有时候,我们希望从URL路径中提取参数。这时,我们可以使用路径变量(Path Variable)。例如,我们想要处理类似/greet/{name}的URL:

@GetMapping("/greet/{name}")
public String greetWithPathVariable(@PathVariable String name, Model model) {model.addAttribute("message", "Hello, " + name + "!");return "greet";
}

在这个例子中,我们使用@PathVariable注解将路径中的name提取出来,传递给方法参数。当我们访问/greet/John时,name参数将被设置为"John"。

4. 请求体

有时候,我们需要从请求体中获取数据。例如,处理POST请求时,我们可以通过@RequestBody注解将请求体的内容绑定到方法参数:

@PostMapping("/update")
public String update(@RequestBody User user) {// 处理User对象return "update-success";
}

在这个例子中,我们期望客户端发送一个JSON格式的User对象到/update路径。SpringMVC将自动将请求体中的JSON数据转换为User对象,传递给方法。

5. 视图解析器

SpringMVC使用视图解析器来将Controller返回的逻辑视图名称解析为实际的视图。默认情况下,Spring Boot使用Thymeleaf作为模板引擎,所以我们可以在src/main/resources/templates目录下创建相应的HTML文件,Spring Boot会自动识别并渲染。

6. 拦截器

拦截器允许我们在Controller处理请求前或者请求后执行一些额外的逻辑。我们可以创建一个拦截器类,实现HandlerInterceptor接口,并在配置中注册。

public class DemoInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {// 在请求到达Controller之前执行System.out.println("Pre Handle method is Calling");return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {// 在请求处理之后但视图未渲染前执行System.out.println("Post Handle method is Calling");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {// 在视图渲染之后执行System.out.println("Request and Response is completed");}
}

在配置类中注册拦截器:

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {@Beanpublic DemoInterceptor demoInterceptor() {return new DemoInterceptor();}@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(demoInterceptor());}
}

7. 异常处理

在SpringMVC中,我们可以通过@ExceptionHandler注解来处理Controller内部抛出的异常。在全局范围内,我们可以创建一个@ControllerAdvice注解的类,用于集中处理所有Controller的异常。

@ControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(Exception.class)public String handleException(Exception e) {// 处理异常并返回错误页面return "error";}
}

8. 文件上传

处理文件上传是Web应用中常见的需求。SpringMVC提供了MultipartFile类来接收上传的文件,同时我们可以使用@RequestParam注解来绑定文件参数。

@PostMapping("/upload")
public String handleFileUpload(@RequestParam("file") MultipartFile file, Model model) {// 处理文件上传逻辑return "upload-success";
}

9. 表单验证

在SpringMVC中,我们可以使用@Valid@ModelAttribute注解来进行表单验证。定义一个简单的实体类,加上验证注解,如@NotNull@Size等,然后在Controller方法参数上使用@Valid注解。

@PostMapping("/register")
public String register(@Valid @ModelAttribute User user, BindingResult bindingResult) {if (bindingResult.hasErrors()) {// 处理验证失败的逻辑return "registration-form";}// 处理注册逻辑return "registration-success";
}

小结:舞动SpringMVC的激情

在这篇博客中,我们深入学习了SpringMVC的概述、开发步骤和快速入门。通过项目初始化、添加依赖、创建Controller和View,我们成功搭建了一个简单的SpringMVC应用。随后,我们学习了请求映射、请求参数的处理方式,以及如何使用路径变量、处理请求体等高级功能。

除此之外,我们还感受了拦截器的力量,学会了如何处理异常、实现文件上传和表单验证等实用功能。SpringMVC为我们提供了丰富而强大的功能,使得我们能够轻松构建高效、安全且易于维护的Web应用。

希望这篇博客能够激发你对SpringMVC的兴趣,让你在这个舞台上舞动的更加从容。如果你有任何问题或想要分享自己的经验,欢迎在评论区留下你的足迹。让我们一起沉浸在SpringMVC的激情世界,创造出更加出色的Web应用吧!💃🌐

作者信息

作者 : 繁依Fanyi
CSDN: https://techfanyi.blog.csdn.net
掘金:https://juejin.cn/user/4154386571867191

这篇关于【Spring 篇】走进SpringMVC的世界:舞动Web的激情的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使

Java Spring的依赖注入理解及@Autowired用法示例详解

《JavaSpring的依赖注入理解及@Autowired用法示例详解》文章介绍了Spring依赖注入(DI)的概念、三种实现方式(构造器、Setter、字段注入),区分了@Autowired(注入... 目录一、什么是依赖注入(DI)?1. 定义2. 举个例子二、依赖注入的几种方式1. 构造器注入(Con

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

如何在Java Spring实现异步执行(详细篇)

《如何在JavaSpring实现异步执行(详细篇)》Spring框架通过@Async、Executor等实现异步执行,提升系统性能与响应速度,支持自定义线程池管理并发,本文给大家介绍如何在Sprin... 目录前言1. 使用 @Async 实现异步执行1.1 启用异步执行支持1.2 创建异步方法1.3 调用

java内存泄漏排查过程及解决

《java内存泄漏排查过程及解决》公司某服务内存持续增长,疑似内存泄漏,未触发OOM,排查方法包括检查JVM配置、分析GC执行状态、导出堆内存快照并用IDEAProfiler工具定位大对象及代码... 目录内存泄漏内存问题排查1.查看JVM内存配置2.分析gc是否正常执行3.导出 dump 各种工具分析4.

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

Spring Boot 3.x 中 WebClient 示例详解析

《SpringBoot3.x中WebClient示例详解析》SpringBoot3.x中WebClient是响应式HTTP客户端,替代RestTemplate,支持异步非阻塞请求,涵盖GET... 目录Spring Boot 3.x 中 WebClient 全面详解及示例1. WebClient 简介2.

Java中使用 @Builder 注解的简单示例

《Java中使用@Builder注解的简单示例》@Builder简化构建但存在复杂性,需配合其他注解,导致可变性、抽象类型处理难题,链式编程非最佳实践,适合长期对象,避免与@Data混用,改用@G... 目录一、案例二、不足之处大多数同学使用 @Builder 无非就是为了链式编程,然而 @Builder

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

Spring Boot从main方法到内嵌Tomcat的全过程(自动化流程)

《SpringBoot从main方法到内嵌Tomcat的全过程(自动化流程)》SpringBoot启动始于main方法,创建SpringApplication实例,初始化上下文,准备环境,刷新容器并... 目录1. 入口:main方法2. SpringApplication初始化2.1 构造阶段3. 运行阶