02-SpringMVC的学习总结:常用注解

SpringMVC的常用注解


1.@Controller

  标注在一个类上,表示该Java类是controller控制层,负责处理由DispatcherServlet 分发的请求。
在SpringMVC中,@Controller通常与@RequestMapping搭配使用。

注意单单使用@Controller注解标注在类上并没有什么作用,需要让Spring认识它。有两种方式:

1)在SpringMVC的配置文件中装配该controller类的bean对象。
2)在SpringMVC的配置文件中告诉Spring该去哪里找标有@Controller注解的controller类。

 <!--方式1:将HelloController对象装配到Spring容器中-->
    <bean id="helloController" class="com.zm.controller.HelloController"></bean>
    <!--方式2:告诉Spring该去哪里找标有注解为@Controller的controller类。-->
    <context:component-scan base-package="com.zm.controller"></context:component-scan>

2.@RequestMapping

作用:@RequestMapping可以用来处理请求地址的映射。

2.1@RequestMapping注解的常用属性:

1)value,method
 value:指定请求的实际地址。该属性默认是省略的,但是当有其他属性需要设置时,value不可省略
 method:指定请求的method类型(get、post、put、delete)。

2)consumes、produces
 consumes:指定请求的提交内容类型(Context-Type)。如:application/json。
 produces:指定响应的内容类型。仅当request请求头中的(Accept)类型中包含该指定类型才返回。

3)header、params
 header:指定request中必须包含指定的header值,才能让该方法处理请求。
 params:指定request中必须包含某些参数值时,才让该方法处理。

2.2 @RequestMapping的位置

可以加在类上或者方法上;或者同时加载这两个位置上;最终的路径是这两个位置的路径的组合。
在这里插入图片描述
2.3 @RequestMapping的请求方式

get、post、put、delete
在这里插入图片描述
注意:如果不指定method,可以接受任何类型的请求;如果请求方式不正确,会报告405的错误。

2.4 @RequestMapping中请求参数和请求头表达式的设置
在这里插入图片描述
通过表达式精确映射请求

params和header支持简单的表达式
1、param1:表示请求中必须包含名为param1的请求参数;
2、param1 != value1:表示请求中包含请求名为param1的请求参数,但其值不能为value1;
3、{“param1=value1”,“param2”}:表示请求中包含请求名为param1和param2的请求参数,其中请求名为param1的值必须为value1。

2.5 ant风格的路径
ant风格的资源地址支持三种匹配符

1)?:匹配文件名中的一个字符
2)*:匹配文件名中的任意字符
3)**:匹配多层路径

@RequestMapping支持ant风格的url。

在这里插入图片描述

3.@RequestParam

1)作用:常用来处理简单类型的绑定。
2)该注解有三个属性
value:指定要传入的值的名称;required:表示参数是否可选。默认值为true;defaultValue:设置参数的默认值。
3)使用

>自动的参数匹配(post/get)
表单中空间name属性的值与controller中方法的参数名一致,则可以自动匹配。
在这里插入图片描述
>通过@RequestParam注解匹配参数(post/get)
在这里插入图片描述
>url路径的参数匹配(get)

…/user/list?currentPage=1&pageSize=10

 /*url地址参数匹配
    * @param currentPage 当前页
    * @param page 每页的记录数
    * */
    @RequestMapping(value = "/list",method = RequestMethod.GET)
    public String listUrl(Integer currentPage,Integer pageSize){
        System.out.println("listUrl……");
        System.out.println("currentPage:"+currentPage);
        System.out.println("pageSize:"+pageSize);
        return "list";
    }

controoler层的方法中,参数列表名与url中所带的参数名一致,可自动匹配获取url中的参数值。
currentPage——》Integer currentPage;pageSize——》Integer pageSize

>使用defaultValue属性设置参数的默认值
在这里插入图片描述
>使用reqired属性设置参数是否可选
在这里插入图片描述
注意:当参数是基本类型时,若request属性的值是true,参数为空值时,会报400( Required int parameter ‘currentPage’ is not present)的错误;若request属性的值是false,参数为空值时,会报500(Optional int parameter ‘currentPage’ is not present but cannot be translated into a null value due to being declared as a primitive type)的错误,表示不能将不存在的值转换为null。

>>controller中的参数为基本类型时,必须将类型写为它所对应的包装类类型,以避免不必要的错误!

4.@PathVariable

作用:将 URL 中占位符参数绑定到控制器处理方法的入参中,以获取占位符中所传递的参数。
在这里插入图片描述

5.@CookieValue

作用:获取cookie中的值。
在这里插入图片描述

6.@RequestHeader

作用:获取请求头中的信息。
在这里插入图片描述
7.@SessionAttributes

1)作用:对session进行管理,在多个请求之间共享数据。它可以定义在类或者接口上。

2)相关属性
value:通过属性名指定需要放到会话中的属性;types:指定哪些类型需要放到会话中。例如:@SessionAttributes(value={“user1”,“user2”},types={Dept.class}) 将model中属性名为user1和user2以及类型为Dept的属性添加到会话中。

types与value之间是并集的关系。

需要注意的问题
@SessionAttributes需要清除时,使用SessionStatus.setComplete();来清除。但是,它只清除@SessionAttributes的session,不会清除HttpSession的数据。

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值