@Controller注解
该注解用来指示一个类是一个控制器,在Spring的配置xml文件中开启注解扫描
后,DispatcherServlet会扫描使用该注解的类的方法,再检测是否使用了@RequestMapping注解,使用了该注解才会将处理方法映射到对应的请求上
类似于@Controller的注解还有这些:
@Controller:表明这是一个控制器组件 @Service:表明这是一个业务组件,一个请求往往需要服务器进行很多个操作,这些操作就集中放在一个service里面,给controller调用 @Repository:表明这是一个持久化组件,就是跟数据库打交道的 @Component:其他组件使用@Controller注解的类,不需要实现Controller接口,不需要重写ModelAndView handleRequest(request,response)方法,返回值也一定是ModelAndView,参数也可以是其他
请求处理方法值可以是:
ModelAndView Model Map<k,v> View String HttpEntity或者ResponseEntity Callbale DeferredResult void请求处理方法的参数可以是:
HttpServletRequest、HttpServletResponse、HttpSession Model、ModelMap WebRequest、NativeWebRequest Locale InputStream、Reader OutputStream、Writer Principal HttpEntity Map RedirectAttributes Errors BingdingResult SessionStatus UriComponentBuilder 注解:@PathVariable、@MatrixVariable、@RequestParam、@RequestHeader、@RequestBody、@RequestPart@RequestMapping注解
这个注解可以用在类和方法上
用在类上面:表示这个类下面的方法都映射到该注解的value属性所指定的路径下。该注解有几个属性:
value:默认属性,映射一个请求到一个方法上 method:表明给方法只处理指定的请求。省略则表示可处理任意http请求。RequestMethod.POST(.GET;.HEAD;.PUT;.PATCH;.DELETE;.OPTIONS;.TRACE) consumes:指定处理请求的提交内容类型。也就是Http请求的Content-Type字段 produces:指定返回的内容类型,返回的类型比如是请求头的Accept中所包含的类型 params:指定请求中必须包含某些参数值时,才让该方法处理。比如@RequestMapping(params="k1=v2"),表示请求中包含k1=v2的请求才交由该方法处理 headers:表示请求中必须包含某些特定的header值,才让该方法处理。其他:
关于Spring MVC的控制器,@RequestMapping注解,这篇博文写得比较详细,可以仔细看看: