Spring MVC的注解二
概述
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的注解二的更多相关文章
- 2017.3.31 spring mvc教程(二)核心流程及配置详解
学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...
- Spring MVC学习总结(2)——Spring MVC常用注解说明
使用Spring MVC的注解及其用法和其它相关知识来实现控制器功能. 02 之前在使用Struts2实现MVC的注解时,是借助struts2-convention这个插件,如今我们使 ...
- 基于spring mvc的注解DEMO完整例子
弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件.本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mv ...
- spring mvc 基于注解的使用总结
本文转自http://blog.csdn.net/lufeng20/article/details/7598801 概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Sprin ...
- Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作
详细的Spring MVC框架搭配在这个连接中: Maven 工程下 Spring MVC 站点配置 (一) Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作 这篇主 ...
- java spring mvc 全注解
本人苦逼学生一枚,马上就要毕业,面临找工作,实在是不想离开学校.在老师的教导下学习了spring mvc ,配置文件实在繁琐,因此网上百度学习了spring mvc 全注解方式完成spring的装配工 ...
- spring mvc 基于注解 配置默认 handlermapping
spring mvc 是类似于 Struts 的框架.他们都有一个最主要的功能就是URL路由.URL路由能将请求与响应请求处理逻辑的类(在Struts中即是action,在spring mvc 中即是 ...
- Spring MVC 基础注解之@RequestMapping、@Controller、(二)
我现在学的是spring4.2 今天主要学习了Spring MVC注解 引入注解可以减少我们的代码量,优化我们的代码. @Controller:用于标识是处理器类: @RequestMapping:请 ...
- spring MVC之注解开发控制器(二)
开发表单控制器 在传统的Spring MVC开发方法中,是通过扩展SimpleFormController类来创建简单的表单控制器.这样就定义了基本的表单处理流程,并允许通过覆盖几个生命周期方法来定制 ...
随机推荐
- 超级详细Mysql安装步骤图解
数据库忘记装了,然后今天才装上.刚开始有点蒙蔽,进入mysql官网一堆英文,小声逼逼没有学号英语的我.废话不都说,直接上图 1.输入网址 https://www.mysql.com/downloads ...
- 【BZOJ 3771】Triple
Problem Description 给出 \(n\) 个物品,第 \(i\) 个物品体积为 \(a_i\) . 对于每个体积 \(V\) ,求选出 \(3\) 个物品,体积之和为 \(V\) 的方 ...
- C# 只读模式读取txt文件内容
读取txt文件时,提示异常: 文件“..\Log\all_info.txt”正由另一进程使用,因此该进程无法访问此文件 原因: 日志文件通过lognet生成的日志文件(C#使用log4net记录日志) ...
- 探索JAVA并发 - 可重入锁和不可重入锁
本人免费整理了Java高级资料,涵盖了Java.Redis.MongoDB.MySQL.Zookeeper.Spring Cloud.Dubbo高并发分布式等教程,一共30G,需要自己领取.传送门:h ...
- System.InvalidOperationException: The binary operator NotEqual is not defined for the types 'Microsoft.EntityFrameworkCore.Storage.ValueBuffer' and 'Microsoft.EntityFrameworkCore.Storage.ValueBuffer'.
.netcore 2.1使用左表连接时报错,原因是对数据库中实体 DateTimeOffset date做查询判断时,将数据库中date转为string进行了判断,这样判断是错误的,并且效率低,应该是 ...
- django补充CBV和FBV模式
django补充CBV和FBV模式FBV模式---函数:经常用的方式CBV模式---类CBV中url连接时函数名后面要接.as_view()class index(views.View): @... ...
- 《Hands-On System Programming with Go》之目录操作
开一个新书<Hands-On System Programming with Go>,系统的了解一下, 这方面的东东,以前用C语言实现过, 现在用GO,重新来!! package main ...
- Java题库——Chapter15 事件驱动编程和动画
Chapter 15 Event-Driven Programming and Animations Section 15.2 Events and Event Sources1. A Java ...
- [debug] 解决pycharm中无法import自己建立的模块问题
修改文件夹属性,将其改为"resource",就可以来import了.
- C#扩展方法学习笔记
C#扩展方法,简单的理解是不修改原来类的源代码的情况下,为某个类添加某个方法.扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的.它们的第一个参数指定该方法作用于哪个类型,并且该参数以 th ...