对于只使用@Controller注解控制器,必须配套有模板(如JSP),否则报404错误 而使用@RestController注解则不须配有模板
只使用@Controller注解
须添加模板,此处为如Spring官方的Thyemleaf模板(替代JSP的好东西),添加jar包
目录结构:
模板文件:index.heml
<h1>hello Spring Boot!
</h1>
控制器类:
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
/**
* Created by Shusheng Shi on 2017/5/3.
*/
@Controller
public class HelloController {
@RequestMapping(value =
"/hello", method = RequestMethod.GET)
public String
say() {
return "index";
}
}
运行结果
现在流行前后端分离,后端只需要提供rest接口,返回一些json格式给前端,不需要模板,会影响性能
若将控制器类里的方法写成如下所示(即无method属性)
@RequestMapping(
value =
"/hello")
public String
say() {
return girlProperties.getCupSize();
}
那么使用GET/POST方式访问皆可.不过并不推荐如此写法,毕竟两种方法适合于不同需求
控制器方法
@RequestMapping(
value =
"/{id}/say", method = RequestMethod.GET)
public String
say(@
PathVariable("id")
int id) {
return "id: " + id;
}
运行结果
控制器方法
@RequestMapping(
value =
"/say", method = RequestMethod.GET)
public String
say(@
RequestParam("id")
int myId) {
return "id: " + myId;
}
运行结果
设置id默认值
@RequestMapping(
value =
"/say", method = RequestMethod.GET)
public String
say(@
RequestParam(
value =
"id", required =
false, defaultValue =
"0")
int myId) {
return "id: " + myId;
}
运行结果
另替代写法
// @RequestMapping(
value =
"/say", method = RequestMethod.GET)
@GetMapping(
value =
"/say")
公众号-JavaEdge
认证博客专家
博客专家
慕课网认证作者
腾讯云 最佳作者
1.经历:19届双一流本科,曾在百度、携程、华为等大厂搬金砖2.涉猎领域:Java生态各种中间件原理、框架源码、微服务、中台等架构设计及落地实战,只生产硬核干货!3.开源社区荣誉:阿里云栖社区博客专家、腾讯云+社区2019年度最佳作者、慕课网认证作者、百万流量万粉博客专家,简书优秀创作者兼《程序员》专题管理员4.著作:在牛客网著有《Java源码面试解析指南》,目前已有上千人在学习,已助众多读者成功拿到满意offer~