初识SpringBoot(二):Controller类的使用

本文详细介绍SpringBoot中Controller的使用方法,包括@RestController与@Controller的区别、@RequestMapping注解的应用、通过@PathVariable和@RequestParam获取URL及参数等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    上文我们简单地介绍了一下SpringBoot的简单项目构建,本文我们来开始介绍Controller的使用。

    说到Controller,我们很容易想到SpringMvc中的Controller,事实上,两者区别不大。首先我们来说说Controller类的注解,SpringMvc中,@Controller是我们经常使用的一个Controller注解,但是在前文中我们给Controller的注解为@RestController注解,两者的区别在于,@RestController是@Controller和@ResponseBody的结合,支持快捷的返回一个JSON对象,我们可以试着将上文中的@RestController改为@Controller,会发现页面报错,如下图:


    因为我们知道,@Controller的返回String类型,是要配合视图解析器才能返回JSP页面,而@RestController则是将返回的String内容直接给前台。

    再就是RequestMapping注解使用,使用方式和SpringMVC一模一样,value表示映射URL,method表示请求类型,如果不写则默认为get和post皆响应。一般我们可以将@GetMapping和@PostMapping来替代method使用。RequestMapping中value可以写成数组的形式,来用一个方法处理多个URL,也可以加在类上,作为命名空间。

    Mapping方法中的参数,可以用来获取请求的url以及请求的参数,先说获取URl,Controller方法的代码如下:

package com.example.first;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.naming.Name;

@RestController
public class Hello {
    @Autowired
    private Boy boy;
    @RequestMapping(value = "/{id}/hello")
    public Boy hello(@PathVariable("id")int id)
    {
        System.out.println(id);
        return boy;
    }
}

     浏览器输入URL以及控制台截图如下:



    在requestMapping注解中的value内需要加上一个美元符号,标记参数,对应着@PathVariable中的值,加在参数前面,完成对URL的获取。

    当然还有最最传统的URL传值方式,此时我们需要用另外一个注解获取参数,代码如下:

package com.example.first;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.naming.Name;

@RestController
public class Hello {
    @Autowired
    private Boy boy;
    @RequestMapping(value = "/hello")
    public Boy hello(@RequestParam("id") int id)
    {
        System.out.println(id);
        return boy;
    }
}

    浏览器截图和控制台截图如下:



    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值