@Controller
SpringMVC中, @Controller注解, 作用于类上, 标明当前类是一个Controller, 即业务层对象,
这个注解, 可以简单理解为, 标明一个类为 Servlet, 此注解无属性
和SpringBoot中相似, 仅有这个注解, 并没有什么意义, 原因是它必须配合其他注解一起使用, 比如使用了@RequestMapping, 它才是真正的请求处理器
@RequestMapping
此注解, 作用于类, 或者方法上, 用于处理请求
简单理解为, 原 WebServlet注解, 不过区别还是很大的
仅使用 @Controller 和 @RequestMapping, 无法直接返回数据, 例如
@Controller
public class HelloController {
@RequestMapping(value="/hello",method= RequestMethod.GET)
public String sayHello(){
return "hello";
}
}
这是因为, SpringMVC 需要配上视图解析器, 而视图解析器仅支持以下模板
- FreeMarker
- Groovy
- Thymeleaf (Spring 官网使用这个)
- Velocity
- JSP
对于前后端分离, 还需要@RequestBody, 这样它才能直接返回
requestMapping的属性如下:
- name –> 相当于servlet中的name
- path –> 相当于servlet中的urlPattern
- value –> 相当于servlet的value, 一个参数时默认
- params –> 相当于servlet的params
- method –> 指定请求的方式
- header –> 指定请求头
- consumers –> 指定请求参数的格式
- produces –> 指定响应的格式, 即contentType
注解用于类上时, 会叠加到方法上, 比如类上path=user, 那么此方法内的所有方法都会添加到方法路径添加一个user起始路径