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

版权声明: https://blog.csdn.net/that_is_cool/article/details/79949007

    上文我们简单地介绍了一下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;
    }
}

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



    

阅读更多

没有更多推荐了,返回首页