- , 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);
}