Springmvc 中的注解 @Controller @RequestMapping

首先看一下spring里面注解是怎么被引入的
工作流程
扫描所有的注解–> 映射器–>适配器–>视图解析器

<!-- spring可以自动去扫描base-pack下面的包或者子包下面的java文件,
    如果扫描到spring的相关注解的类,则把这些类注册为spring的bean -->
    <context:component-scan base-package="org.fkit.controller"/>
    <!--1 配置annotation类型的处理映射器 
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>-->
    <!--2 配置annotation类型的处理器适配器
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/> -->
    <!--3 视图解析器
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/> -->
    <!-- 以上是在springmvc 框架在运行的过程中的一个  先后顺序 -->

@Controller注解
用于标记一个类,使用它标记的类就是一个springmvc controller对象,即一个控制器。
Spring使用扫描机制查找应用程序中所有基于注解的控制器类。
分发处理器会扫描使用了该注解的累的方法,并检测该方法是否使用了@RequestMapping注解,而使用了@RequestMapping注解的方法才是真正处理请求的处理器。
在Spring mvc 中用于参数绑定的注解有很多,都在org.springframework.web.bind.annotation包中,根据他们处理的request的不同的内容可以分为四类(如下主要是常用类型)

1 处理requestbody部分的注解:@RequestParam @RequestBody
2 处理request uri 部分的注解:@PathVariable
3 处理 request header部分的注解:@RequestHader @CookieValue
4 处理attribute类型的注解:@SessionAttribute @ModelAttribute

@RequestMapping注解
开发者需要在控制器内部为每一个请求动作开发相应的处理方法。org.web.bind.annotation.RequestMapping注解类型指示Spring用哪一个类或方法来处理请求动作,该注解可用于类或方法。
@RequestMapping可以用来注释一个控制器,在这种情况下,所有的方法都将映射为相对于类级别的要求,表示该控制器处理的所有所有请求都被映射到value属性所指示的路径下。
@RequestMapping注解支持的属性

1 value属性

@RequestMapping(value= "/hello")//value去掉的话默认为value
public ModelAndView Hello(){
    return ……;
}

2 method属性
该属性用来指示该方法仅仅处理哪些HTTP请求方式。

@RequestMapping(value="/hello",method=RequestMethod.POST)
//或者是
@RequestMapping(value="/hello",method={RequestMethod.POST,RequestMethod.GET})

3 consumes属性
该属性指定处理请求的提交内容类型(Content-Type)

@RequestMapping(value="/hello",method=RequstMethod.POST,sonsumes="application/json")

4 produces属性
该属性指定返回的内容类型,返回的内容类型必须是request请求头(Accept)中所包含的类型。

@RequestMapping(value="/hello",method=RequestMethod.POST,producecs="application/json")

5 params属性
该属性指定request中必须包含某些参数值时,才让该方法处理

@RequestMapping(value="/hello",method=RequestMethod.POST,params="myParam=myValue")

该方法仅处理器名为“myParam”值为“myValue”的请求


6 headers属性
该属性指定request中必须包含某些指定的header值,才能让该方法处理请求。

@RequestMapping(value="/hello",method=RequestMethod.POST,headers="Referer=http://www.fkit.org/"

方法仅处理request的header中包含了指定Referer请求头和对应的值为http://www.fkit.org的请求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值