今天我们来研究一下@Controller和@RestController的用法
@Controller
1.Controller可以用来跳转页面,并且必须配合模板来使用。
@Controller
//@ResponseBody
public class LoginController { @RequestMapping(value = "/login", method=RequestMethod.GET)
public String login() {
return "hello world!!";
}
}
上面的代码如果直接在浏览器地址栏中输入:http://localhost:8080/login会出现下面得错误:
出现这种情况的原因在于没有使用模版。即@Controller 用来响应页面,@Controller必须配合模版来使用。
SpringBoot支持多种模板包括:
1.FreeMarker
2.Groovy
3.Thymeleaf (Spring 官网使用这个)
4.Velocity
5.JSP (貌似Spring Boot官方不推荐,创建项目会在src/main/resources 下有个templates 目录,这里就是让我们放模版文件的,然后并没有生成诸如 SpringMVC 中的webapp目录)
@RestController
@RestController注解相当于@ResponseBody + @Controller合在一起的作用。
如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。在@Restcontroller中,返回的应该是一个对象,即return一个user对象,这时,在没有页面的情况下,也能看到返回的是一个user对象对应的json字符串,而前端的作用是利用返回的json进行解析渲染页面,java后端的代码比较自由。