概述

Spring从2.5版本开始引入注解,虽然版本不断变化,但是注解的特性一直被延续下来并不断进行扩展,这里就来记录一下Spring MVC中常用的注解,本文承接前文继续记录@PathVariable、@RequestHeader和@CookieValue三个注解。

@PathVariable注解

该注解可以方便的获得请求URL中的动态参数。只有一个属性value,类型为String,表示绑定的名称,若省略默认绑定同名参数。

  1 @RequestMapping(value = "/login/{username}")
2 public String login(@PathVariable String username){
3 ...
4 }

若请求的URL为:“http://localhost:8080/user/login/jack”,通过该注解将jack绑定到username参数上。

@RequestHeader注解


该注解用于将请求头信息数据映射到功能处理方法的参数。

@RequestHeader注解支持的常用属性:

属性 类型 说明
name String 指定请求头绑定的名称
value String name属性的别名
required boolean 参数是否必须绑定
defaultValue String 没有传递参数时,参数的默认值


@CookieValue注解


该注解用于将请求的Cookie数据映射到功能处理方法的参数。

@CookieValue注解支持的常用属性:

属性 类型 说明
name String 指定请求头绑定的名称
value String name属性的别名
required boolean 参数是否必须绑定
defaultValue String 没有传递参数时,参数的默认值


注解示例程序


示例程序在前文项目SpringMVCProject的基础上进行完善编写。

在com.snow.dcl.controller包下创建DataBindController类文件,编写如下程序:

  1 @Controller
2 public class DataBindController {
3 private static final Log LOGGER = LogFactory.getLog(DataBindController.class);
4
5 @RequestMapping("/PathVariableTest/{userId}")
6 public void pathVariableTest(@PathVariable Integer userId) {
7 LOGGER.info("通过@PathVariable获取数据" + userId);
8 }
9
10 @RequestMapping("/RequestHeaderTest")
11 public void requestHeaderTest(@RequestHeader("User-Agent") String userAgent) {
12 LOGGER.info("通过@RequestHeader获取数据" + userAgent);
13 }
14
15 @RequestMapping("/CookieValueTest")
16 public void cookieValueTest(@CookieValue(defaultValue = "DCLSNOWID") String sessionId) {
17 LOGGER.info("通过@CookieValue获取数据" + sessionId);
18 }
19 }
20

启动TomcatServer,启动完成后,打开浏览器输入:http://localhost:8080/PathVariableTest/1001,虽然浏览器页面会报404的错误,是因为没有返回的jsp文件,但是看控制台打印的日志信息即可。

  1 信息 [http-nio-8080-exec-6] com.snow.dcl.controller.DataBindController.pathVariableTest 通过@PathVariable获取数据1001



在浏览器中重新输入:http://localhost:8080/RequestHeaderTest,查看控制台信息。

  1 信息 [http-nio-8080-exec-9] com.snow.dcl.controller.DataBindController.requestHeaderTest 通过@RequestHeader获取数据Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36



在浏览器中重新输入:[ttp://localhost:8080/CookieValueTest,查看控制台信息。

  1 信息 [http-nio-8080-exec-2] com.snow.dcl.controller.DataBindController.cookieValueTest 通过@CookieValue获取数据DCLSNOWID

Spring MVC的注解二的更多相关文章

  1. 2017.3.31 spring mvc教程(二)核心流程及配置详解

    学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...

  2. Spring MVC学习总结(2)——Spring MVC常用注解说明

        使用Spring MVC的注解及其用法和其它相关知识来实现控制器功能. 02     之前在使用Struts2实现MVC的注解时,是借助struts2-convention这个插件,如今我们使 ...

  3. 基于spring mvc的注解DEMO完整例子

    弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件.本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mv ...

  4. spring mvc 基于注解的使用总结

    本文转自http://blog.csdn.net/lufeng20/article/details/7598801 概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Sprin ...

  5. Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作

    详细的Spring MVC框架搭配在这个连接中: Maven 工程下 Spring MVC 站点配置 (一) Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作 这篇主 ...

  6. java spring mvc 全注解

    本人苦逼学生一枚,马上就要毕业,面临找工作,实在是不想离开学校.在老师的教导下学习了spring mvc ,配置文件实在繁琐,因此网上百度学习了spring mvc 全注解方式完成spring的装配工 ...

  7. spring mvc 基于注解 配置默认 handlermapping

    spring mvc 是类似于 Struts 的框架.他们都有一个最主要的功能就是URL路由.URL路由能将请求与响应请求处理逻辑的类(在Struts中即是action,在spring mvc 中即是 ...

  8. Spring MVC 基础注解之@RequestMapping、@Controller、(二)

    我现在学的是spring4.2 今天主要学习了Spring MVC注解 引入注解可以减少我们的代码量,优化我们的代码. @Controller:用于标识是处理器类: @RequestMapping:请 ...

  9. spring MVC之注解开发控制器(二)

    开发表单控制器 在传统的Spring MVC开发方法中,是通过扩展SimpleFormController类来创建简单的表单控制器.这样就定义了基本的表单处理流程,并允许通过覆盖几个生命周期方法来定制 ...

随机推荐

  1. Openstack简述

    1.Openstack项目发展概况: Nova 计算服务 Swift 对象存储服务 Glance   镜像服务 Neturon 网络服务 Keystone   身份认证服务 Celimeter   计 ...

  2. Zabbix Server 3.2

    软件环境 Centos7.3 LAMP Zabbix 3.2  1. Installing repository configuration package Install the repositor ...

  3. AbstractMethodError: abstract method "androidx.databinding.ViewDataBinding androidx.databinding.DataBinderMapper.getDataBinder(androidx.databinding.DataBindingComponent, android.view.View, int)"

    混淆导致的数据绑定库错误 问题摘要 AbstractMethodError: abstract method "androidx.databinding.ViewDataBinding an ...

  4. 面试连环炮系列(四):说说TCP的三次握手过程

    说说TCP三次握手的过程? 第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认. 第二次 ...

  5. python3 TensorFlow训练数据集准备 下载一些百度图片 入门级爬虫示例

    从百度图片下载一些图片当做训练集,好久没写爬虫,生疏了.没有任何反爬,随便抓. 网页: 动态加载,往下划会出现更多的图片,一次大概30个.先找到保存每一张图片的json,其对应的url: 打开调试,清 ...

  6. 如何修改CAD字体颜色?试试这种方法

    CAD中编辑图纸的时候,使用的CAD制图软件来进行绘制,图纸中的CAD字体颜色都是默认的颜色,这样不方便进行查看.这个时候就需要修改CAD字体颜色了,那么如何修改CAD字体颜色呢?具体要怎么来进行操作 ...

  7. Leetcode 之 Mysql(day01)

    大四已经接近一半了,下学期就要准备找工作实习了.为了自己能找到一份比较满意的实习,今天开始要刷一下题目.今天就刷 MySQL 语言.以下就是我今天刷的题目.大家也可以去 leetcode 注册一个账号 ...

  8. Redis面试篇 -- 如何保证缓存与数据库的双写一致性?

    如果不是严格要求“缓存和数据库”必须保证一致性的话,最好不要做这个方案:即 读请求和写请求串行化,串到一个内存队列里面去.串行化可以保证一定不会出现不一致的情况,但会导致系统吞吐量大幅度降低. 解决这 ...

  9. Electron npm install 常见错误(Windows)

    问题一:node_gyp使用版本不对 if not defined npm_config_node_gyp (node "C:\Users\Administrator\AppData\Roa ...

  10. python 装饰器使用总结

    python 装饰器使用总结 by:授客 QQ:1033553122 测试环境 win10 python 3.5 例1:一个简单的例子 #!/usr/bin/env python # -*- codi ...