在上篇的App中index方法表示网站的首页,而遵守单一职责原则,最好不要在App中添加其他接口,最好引入专门的控制器来提供服务,操作如下:
1. 添加HomeController控制器
2. 在HomeController类上添加@Controller注解和RequestMapping("/home")注解,并添加index方法;
package com.lvniao.blog.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/home") public class HomeController { @RequestMapping("/") public String index(Model model) { model.addAttribute("hello", "Hello, main index!"); return "home/index"; } }
因为HomeController类所在的包是App类所在包下的controller包下的,而@SpringBootApplication注解使用@ComponentScan注解的,所以项目启动后会自动扫描所在报下的包,这样也就能后发现被Controller注解的HomeController;而通过@RequestMapping("/home")注解的类,其下的方法的路径也就自动添加了/home前缀,这样实际上访问index的url路径也就是:http://localhost:8080/home/;而index方法返回的是"home/index",这样视图解析器就会在template/home目录下找视图文件。相关视图文件如下:
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <title>vue demo</title> 5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 6 </head> 7 <body> 8 <h1 th:text="${hello}"></h1> 9 </body> 10 </html>
这样添加控制器是遵守springboot约定的,所以除了@Controller类外无需其他配置就可以添加控制器,也就大大便利了开发。