0054 Spring MVC的@Controller和@RequestMapping注解

时间:2022-02-08 06:03:20

@Controller注解

该注解用来指示一个类是一个控制器,在Spring的配置xml文件中开启注解扫描

<context:conponent-scan base-package="包路径" />

后,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注解,这篇博文写得比较详细,可以仔细看看:http://www.cnblogs.com/best/p/5659596.html