Spring Boot 中的 @Controller 注解:原理、用法与示例

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: Spring Boot 中的 @Controller 注解:原理、用法与示例

Spring Boot 中的 @Controller 注解:原理、用法与示例


前言


Spring Boot 是一个快速开发 Spring 应用程序的框架,它提供了很多有用的功能和特性。其中,@Controller 注解是一个常用的注解,它可以将一个 Java 类标记为 Spring MVC 中的控制器。本文将介绍 Spring Boot 中 @Controller 注解的原理、用法和示例。


image.png


@Controller 注解的原理


在 Spring MVC 中,@Controller 注解用于标识一个 Java 类是一个控制器。控制器负责接收请求、处理请求,并返回响应。具体来说,使用 @Controller 注解的类将会被 Spring MVC 自动扫描,并注册为一个控制器。


@Controller 注解的作用和 @Component 注解类似,都是将一个类标记为 Spring 的组件。但是,@Controller 注解还有以下特性:


  • 自动映射 URL。@Controller 注解可以自动将请求映射到控制器的方法上。
  • 支持视图解析。@Controller 注解可以将方法的返回值解析为视图,并渲染到客户端。


@Controller 注解的用法


使用 @Controller 注解的步骤如下:


1. 创建控制器类


首先,需要创建一个 Java 类,并使用 @Controller 注解来标注这个类。


@Controller
public class HelloController {
    @GetMapping("/hello")
    public String hello() {
        return "hello";
    }
}


2. 编写控制器方法


在控制器类中,需要编写控制器方法。控制器方法处理请求,并返回响应。控制器方法可以使用 Spring MVC 提供的注解来指定请求的 URL、请求方法和其他参数。


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

上面的代码中,@GetMapping 注解用于指定请求的 URL,即 /hello。方法的返回值为 “hello”,表示要渲染名为 “hello” 的视图。


3. 配置视图解析器


在 Spring MVC 中,控制器方法的返回值可以是一个视图名称,也可以是一个 ModelAndView 对象。为了将视图名称解析为实际的视图,需要配置一个视图解析器。

@Bean
public ViewResolver viewResolver() {
    InternalResourceViewResolver resolver = new InternalResourceViewResolver();
    resolver.setPrefix("/WEB-INF/views/");
    resolver.setSuffix(".jsp");
    return resolver;
}

上面的代码中,创建了一个 InternalResourceViewResolver 对象,并将前缀设置为 /WEB-INF/views/,后缀设置为 .jsp。这样,当控制器方法返回 “hello” 时,Spring MVC 将会解析为 /WEB-INF/views/hello.jsp。


4. 启动应用程序


最后,需要启动应用程序,并访问 http://localhost:8080/hello,就可以看到 “hello” 视图的内容了。

@SpringBootApplication
public class MyApp {
    public static void main(String[] args) {
        SpringApplication.run(MyApp.class, args);
    }
}


@Controller 注解的示例


下面是一个使用 @Controller 注解的示例项目。


1. 创建项目


使用 Spring Initializr 创建一个新的 Spring Boot 项目,添加以下依赖:


  • Spring Web
  • Thymeleaf


2. 创建控制器类


创建一个 GreetingController 类,并使用 @Controller 注解来标注这个类。


@Controller
public class GreetingController {
    @GetMapping("/greeting")
    public String greeting(@RequestParam(name = "name", required = false, defaultValue = "World") String name, Model model) {
        model.addAttribute("name", name);
        return "greeting";
    }
}

上面的代码中,@GetMapping 注解用于指定请求的 URL,即 /greeting。方法的参数中,@RequestParam 注解用于指定请求参数。如果请求中没有传递 name 参数,则使用默认值 “World”。方法的返回值为 “greeting”,表示要渲染名为 "greeting"的视图。


3. 创建视图模板


在 src/main/resources/templates 目录下,创建一个名为 greeting.html 的 Thymeleaf 模板文件。


<!DOCTYPE html>
<html>
<head>
    <title>Greeting</title>
</head>
<body>
    <h1>Hello, [[${name}]]!</h1>
</body>
</html>

上面的代码中,[[${name}]] 表示 Thymeleaf 表达式,用于获取控制器方法中传递的 name 参数的值。


4. 启动应用程序


最后,启动应用程序,并访问 http://localhost:8080/greeting?name=Jack,可以看到 “Hello, Jack!” 的内容。


@SpringBootApplication
public class MyApp {
    public static void main(String[] args) {
        SpringApplication.run(MyApp.class, args);
    }
}


总结


@Contoller 注解是 Spring Boot 中常用的注解之一,它可以将一个 Java 类标记为 Spring MVC 中的控制器。控制器负责接收请求、处理请求,并返回响应。本文介绍了 @Controller 注解的原理、用法和示例,希望可以帮助读者更好地理解和使用这个注解。


相关文章
|
11天前
|
XML Java 数据格式
SpringBoot入门(8) - 开发中还有哪些常用注解
SpringBoot入门(8) - 开发中还有哪些常用注解
29 0
|
29天前
|
Java Spring
在使用Spring的`@Value`注解注入属性值时,有一些特殊字符需要注意
【10月更文挑战第9天】在使用Spring的`@Value`注解注入属性值时,需注意一些特殊字符的正确处理方法,包括空格、引号、反斜杠、新行、制表符、逗号、大括号、$、百分号及其他特殊字符。通过适当包裹或转义,确保这些字符能被正确解析和注入。
|
7天前
|
XML Java 开发者
Spring Boot开箱即用可插拔实现过程演练与原理剖析
【11月更文挑战第20天】Spring Boot是一个基于Spring框架的项目,其设计目的是简化Spring应用的初始搭建以及开发过程。Spring Boot通过提供约定优于配置的理念,减少了大量的XML配置和手动设置,使得开发者能够更专注于业务逻辑的实现。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,为开发者提供一个全面的理解。
18 0
|
18天前
|
XML JSON Java
SpringBoot必须掌握的常用注解!
SpringBoot必须掌握的常用注解!
41 4
SpringBoot必须掌握的常用注解!
|
25天前
|
前端开发 Java 测试技术
深入剖析:Spring Boot Controller中请求处理方法的访问修饰符
【10月更文挑战第21天】 在Spring Boot应用中,Controller类中的请求处理方法通常用于处理HTTP请求。这些方法的访问修饰符(private或public)对方法的行为和可访问性有着重要影响。本文将深入探讨在Controller中使用private和public修饰符的区别,以及它们对Spring MVC框架的影响。
25 8
|
19天前
|
存储 缓存 Java
Spring缓存注解【@Cacheable、@CachePut、@CacheEvict、@Caching、@CacheConfig】使用及注意事项
Spring缓存注解【@Cacheable、@CachePut、@CacheEvict、@Caching、@CacheConfig】使用及注意事项
61 2
|
19天前
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
34 1
|
25天前
|
安全 Java 编译器
springboot 整合表达式计算引擎 Aviator 使用示例详解
本文详细介绍了Google Aviator 这款高性能、轻量级的 Java 表达式求值引擎
|
1月前
|
架构师 Java 开发者
得物面试:Springboot自动装配机制是什么?如何控制一个bean 是否加载,使用什么注解?
在40岁老架构师尼恩的读者交流群中,近期多位读者成功获得了知名互联网企业的面试机会,如得物、阿里、滴滴等。然而,面对“Spring Boot自动装配机制”等核心面试题,部分读者因准备不足而未能顺利通过。为此,尼恩团队将系统化梳理和总结这一主题,帮助大家全面提升技术水平,让面试官“爱到不能自已”。
得物面试:Springboot自动装配机制是什么?如何控制一个bean 是否加载,使用什么注解?
|
14天前
|
存储 安全 Java
springboot当中ConfigurationProperties注解作用跟数据库存入有啥区别
`@ConfigurationProperties`注解和数据库存储配置信息各有优劣,适用于不同的应用场景。`@ConfigurationProperties`提供了类型安全和模块化的配置管理方式,适合静态和简单配置。而数据库存储配置信息提供了动态更新和集中管理的能力,适合需要频繁变化和集中管理的配置需求。在实际项目中,可以根据具体需求选择合适的配置管理方式,或者结合使用这两种方式,实现灵活高效的配置管理。
11 0