<SpringMvc>入门二 常用注解
1.@RequestMapping
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
String name() default "";
@AliasFor("path")
String[] value() default {};
@AliasFor("value")
String[] path() default {};
RequestMethod[] method() default {};
String[] params() default {};
String[] headers() default {};
String[] consumes() default {};
String[] produces() default {};
}
可以看出requestMapping可以作用在类和方法上
1.value和path是一样的,并且默认值就是路径,下面是测试,请求成功
<a href="/hello/sayHello" >入门程序</a>

2.method,规定了该方法的请求类型,如果写了,前端的请求类型一致才能访问到该方法
如果不写,则根据前端自动适应
public enum RequestMethod {
GET,
HEAD,
POST,
PUT,
PATCH,
DELETE,
OPTIONS,
TRACE;
private RequestMethod() {
}
}
此时还是使用get方法进行请求,但是设置了该方法的访问为post,则会报错405


3.params:意思是前端必须传递一个参数过来
第一种情况:
例如:

如果使用
<a href="/hello/sayHello" >入门程序</a>
则会报错

所以应该修改为带有username的参数
<a href="/hello/sayHello?username=hehe" >入门程序</a>
第二种情况:
规定了必须传递username=haha

我们传递一个username=hehe
<a href="/hello/sayHello?username=hehe" >入门程序</a>
依然会报400的错误;所以需要传递username=haha
加入我们传入多个参数呢?
<a href="/hello/sayHello?username=haha&pwd=123" >入门程序</a>
这样也是可以的,所以只要带了 params 里应该有的参数,就可以访问成功。
4.headers:浏览器的请求头里必须带哪些信息,才可以请求到


如果设置了其他头信息,普通的浏览器访问就会报错
5.consumers和produces
consumers:指定请求提交内容的类型(Content-Type),例如application/json,text/html等
例如我们希望前台传递过来是applicaton/json数据

但是我们用get请求,传递的参数类型是text/html

则会出现415的报错

使用postman发送application/json格式的数据去访问,则访问成功


producers:可以指定返回值的类型及其编码,例如

但是必须要和@ResponseBody注解一起使用才可以,不加@ResponseBody注解相当于按照和返回String同名jsp页面解析自然就会报错。
如果返过来,不加produces属性,只有@ResponseBody注解的话也是没有问题的,只是在浏览器中直接访问的时候有区别:
情况1:


情况2:


总的来说produces有两个好处:一个是浏览器查看方便(json自动格式化,带搜索),另一个可以防止中文乱码。
2. @RequestParam
如果想要获得参数的封装,页面属性和后台属性名字一致才能封装上,否则需要加@RequestParam

value和name一样,都是对应页面的属性
required:默认是true,意思就是写了这个注解,前端必须传入注解value里对应的属性
defaultValue:默认值,当required为false时,没传入,则显示默认值


控制台输出

3.@RequestBody
@requestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,
比如说:application/json或者是application/xml等。一般情况下来说常用其来处理application/json类型。


4.@PathVariable
作用:拥有绑定url中的占位符的。例如:url中有/delete/{id},{id}就是占位符
Restful风格的URL


5.@RequestHeader
获取指定请求头的值 ,不常用
6.@CookieValue
获取服务器端发来的cookie值,不常用
7.@ModelAttribute
测试1.测试先后顺序



可以看出,当作用在方法上,该controller中,@ModelAttribute会优先执行,并且按照顺序执行
测试2.修饰的方法有返回值



测试3.修饰的方法没有返回值



8.@SessionAttribute
用于控制器方法间的参数共享
Model对象存的值在request域里,如果想存入session域中,则需要该注解


存入session中



这样就可以在多个方法中共享这个数据。
<SpringMvc>入门二 常用注解的更多相关文章
- SpringMVC入门和常用注解
SpringMVC的基本概念 关于 三层架构和 和 MVC 三层架构 我们的开发架构一般都是基于两种形式,一种是 C/S 架构,也就是客户端/服务器,另一种是 B/S 架构,也就 是浏览器服务器.在 ...
- springmvc入门基础之注解和参数传递
一.SpringMVC注解入门 1. 创建web项目2. 在springmvc的配置文件中指定注解驱动,配置扫描器 <!-- mvc的注解驱动 --> <mvc:annotation ...
- springmvc学习笔记(常用注解)
springmvc学习笔记(常用注解) 1. @Controller @Controller注解用于表示一个类的实例是页面控制器(后面都将称为控制器). 使用@Controller注解定义的控制器有如 ...
- css入门二-常用样式
css入门二-常用样式总结 基本标签样式 背景色background-color 高度height; 宽度width; 边框对齐以及详细设定举例 width/*宽度*/: 80%; height/*高 ...
- SpringMVC入门(基于注解方式实现)
---------------------siwuxie095 SpringMVC 入门(基于注解方式实现) SpringMVC ...
- springMVC入门二
一.准备工作 参考springMVC入门一,搭建maven项目如下: 前台结构如下: 项目介绍:使用springMVC实现前后台数据交互,例如controller返回json,页面传入pojo 二.具 ...
- spring boot之入门Controller常用注解
Controller常用注解 @Controller 处理http请求 @RestController Spring4之后新加的注解,原来返回json数据需要@ResponseBody配合@Cont ...
- SpringMVC中的常用注解
RequestParam 作用: 用于 将请求参数区数据 映射到 功能处理方法的参数上. 属性: value 请求参数中的名称 required 请求参数中是否必须提供此参数. 默认值: ...
- SpringMVC入门二: 1规范结构, 2简单整合MyBatis
昨天拿springMVC写的helloworld结构不好, 这次先调整一下体系结构 , 然后简单整合一下MyBatis spring的配置还是以注解为主, 不过MyBatis的映射文件什么的还是拿xm ...
随机推荐
- HDU 5753Permutation Bo
Permutation Bo Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- Linux/Android——Input系统之frameworks层InputManagerService (六)【转】
本文转载自:http://blog.csdn.net/u013491946/article/details/72638954 版权声明:免责声明: 本人在此发文(包括但不限于汉字.拼音.拉丁字母)均为 ...
- mac ox终端显示 bogon的问题
mac终端显示如果正常应该是电脑名称(偏好设置-共享)的,但是细心的我们会发现,当电脑换了网络环境之后,可能就会出现终端上显示为主机名为:bogon,一查bogon这个单词是虚拟.虚伪的意思. ...
- Web安全总结摘录
借助刚才看到的文章,回顾一下常见的Web安全问题:XSS.CSRF.SQL注入漏洞. 一.XSS XSS (Cross Site Script),跨站脚本攻击,因为缩写和 CSS (Cascading ...
- [入门帮助] Kafka入门经典教程
问题导读 1.Kafka独特设计在什么地方?2.Kafka如何搭建及创建topic.发送消息.消费消息?3.如何书写Kafka程序?4.数据传输的事务定义有哪三种?5.Kafka判断一个节点是否活着有 ...
- J20170604-hm
丸める 四舍五入 文字化け 乱码 わきまえる 弁える 辨别,识相 御構い 张罗,招待,款待 お構いなしに 不加考虑 しおり ブックマーク 书签 スタイルシート 样式表
- bzoj 1650: [Usaco2006 Dec]River Hopscotch 跳石子【贪心+二分】
脑子一抽写了个堆,发现不对才想起来最值用二分 然后判断的时候贪心的把不合mid的区间打通,看打通次数是否小于等于m即可 #include<iostream> #include<cst ...
- [Swift]Set(集)转换为Array(数组)
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- c++编程中处理char和wchar_t的好工具
/* ttype.h sdragonx 2015-02-18 18:32:43 这个几个模版函数是为了处理ansi或unicode,使字符串值或者字符串函数能够在模版中使用 2018/7/26 23: ...
- hihocoder #1698 假期计划 (排列组合+费马小定理+乘法逆元)
Description 小Ho未来有一个为期N天的假期,他计划在假期中看A部电影,刷B道编程题.为了劳逸结合,他决定先拿出若干天看电影,再拿出若干天刷题,最后再留若干天看电影.(若干代指大于0) 每 ...