Spring Controller

2023-02-22 11:15:49 浏览数 (1)

  • , 23 10月 2021
  • 作者 847954981@qq.com
  • 后端学习
Spring Controller

基本上所以的网页加载都是这样的一个过程。在Spring Boot方案里,一个网页请求到了服务器后,首先我们进入的是Java Web服务器,然后进入Spring Boot应用,最后匹配到某一个Spring Controller ,然后路由到具体某一个Bean的方法,执行完后返回结果,输出到客户端来。

Spring Controller 技术有三个核心:

  • Bean的配置:Controller注解运用
  • 网络资源的加载:加载网页
  • 网址路由的配置:RequestMapping注解运用

首先Controller本身也是一个Spring Bean,需要在类上提供一个@Controller注解

代码语言:javascript复制
@Controller
public class HelloControl {


}

Spring Boot中我们一般把网页存放在 src/main/resources/static

代码语言:javascript复制
@Controller
public class HelloControl {

    public String say(){
        return "hello.html";
    }

}

由于resouces属于classpath类型文件,Spring会自动加载,所以返回值只需要写hello.html就可。

当然如果存放在 /resources/static/html 下,则需要 return "html/hello.html";

同时Spring MVC简化了路由配置只需要添加 @RequestMapping 就可以完成路由

代码语言:javascript复制
@RequestMapping("/hello")
    public String say(){
        return "html/hello.html";
    }

同时,如果想要如下带参数的地址:

代码语言:javascript复制
https://域名/songlist?id=xxxx

并使其参数传入可以在方法参数上添加 @RequestParam(“xx”) 来表示参数传入 如:

代码语言:javascript复制
 @RequestMapping("/songlist")
    public String index( @RequestParam("id") String id){
        return "html/songList.html";
    }

这里也可以添加@RequestBody表示前端传递来的JSON数据

如果要输出JSON字符串,可以添加 @ResponseBody 注解如:

代码语言:javascript复制
@GetMapping("/api/user")
  @ResponseBody
  public User getUser(@RequestParam("id") String id) {
    return users.get(id);
  }

0 人点赞