基于springmvc之常用注解,操作传入参数
作者:Code神之手 发布时间:2023-03-17 20:49:52
标签:springmvc,注解,传入参数
springmvc常用注解,操作传入参数
@RequestParam
一般用于jsp参数名和后台方法参数指定,对应
/*
* value=name 当jsp的参数和方法上的参数对应不上,可以指明
* required() default true;默认true 有参数则必须传
* */
public String testRequestParam(@RequestParam(name = "name",required = false) String username){
System.out.println("执行了..........");
System.out.println(username);
return "success";
}
<body>
<a href="anno/testRequestParam" rel="external nofollow" rel="external nofollow" >testRequestParam</a>
</body>
不传参数,required()设置为false,方法有参数
测试
@RequestBody
一般用于获取post请求的方法体,jsp参数格式为键值对,即 key-value
该注解不适应于get请求,一般用于post请求,例如表单提交
如果要用于get请求,则需
@RequestBody(required = false)
否则报错,此时方法参数为null
@RequestMapping(path = "testRequestBody")
public String testRequestBody(@RequestBody(required = false) String body){
System.out.println("执行了..........");
System.out.println(body);
return "success";
}
<body>
<%--<a href="anno/testRequestParam" rel="external nofollow" rel="external nofollow" >testRequestParam</a>--%>
<form action="anno/testRequestBody" method="post">
用户名:<input type="text" name="username"/><br>
密码:<input type="text" name="password"/><br>
<input type="submit" value="提交"/><br>
</form>
</body>
测试
@PathVariable
URL的占位符,restful风格,传参格式 url地址后/10
restful请求方式: get,post,put 配合注解@RequestMapping设置请求方式
@RequestMapping(path = "testPathVariable/{sid}",method = RequestMethod.GET)
@RequestMapping(path = "testPathVariable/{sid}",method = RequestMethod.GET)
/*
* {sid}表示URL的占位符
* boolean required() default true;默认参数必须传
* */
public String testPathVariable(@PathVariable("sid") String id){
System.out.println("执行了..........");
System.out.println(id);
return "success";
}
<a href="anno/testPathVariable/10" rel="external nofollow" >testPathVariable</a>
可以下载postman客户端,模拟发送不同的请求方式
测试:
@RequestHeader
获取请求头的某些属性值 如浏览器类型、版本等 不常用
@RequestMapping(path = "testRequestHeader",method = RequestMethod.GET)
/*获取请求头的某些属性值 如浏览器类型、版本等*/
public String testRequestHeader(@RequestHeader(value = "Accept") String head){
System.out.println("执行了..........");
System.out.println(head);
return "success";
}
<a href="anno/testRequestHeader" rel="external nofollow" >testRequestHeader</a>
@CookieValue
获取JSESSIONID的值
@RequestMapping(path = "testCookieValue",method = RequestMethod.GET)
public String testCookieValue(@CookieValue(value = "JSESSIONID") String JSESSIONID){
System.out.println("执行了..........");
System.out.println(JSESSIONID);
return "success";
}
<a href="anno/testCookieValue" rel="external nofollow" >testCookieValue</a><br>
@ModelAttribute
用于封装的数据不全补全数据,或者检查封装数据等场景
可作用于方法和参数
修饰方法,方法入参需和控制器方法同参类型,该方法优先于控制器之前执行,且分类有返回值和无返回值
有返回值,则该方法的返回值和控制器的入参相同相同
无返回值,则该方法的参数除了和控制器的入参相同外,还需加一个map类型参数map<string,objct>
例子:
注解修饰的方法有返回值写法
@RequestMapping(path = "testModelAttribute")
public String testModelAttribute(User user){
System.out.println("执行了..........");
System.out.println(user);
return "success";
}
@ModelAttribute
//修饰方法,该方法优先于控制器之前执行
public User showUser(User user){
/*模拟jsp传的user封装数据不全,
通过名字查询数据库对应的信息
返回全的user对象*/
user.setBirthday(new Date());
return user;
}
<form action="anno/testModelAttribute" method="post">
用户名:<input type="text" name="uname"/><br>
年龄:<input type="text" name="age"/><br>
<input type="submit" value="提交"/><br>
</form>
注解修饰的方法无返回值写法
@RequestMapping(path = "testModelAttribute")
public String testModelAttribute(@ModelAttribute("key") User user){
System.out.println("执行了..........");
System.out.println(user);
return "success";
}
@ModelAttribute
//修饰方法,该方法优先于控制器之前执行
public void showUser(User user, Map<String,User> userMap){
/*模拟jsp传的user封装数据不全,
通过名字查询数据库对应的信息
返回全的user对象*/
user.setBirthday(new Date());
userMap.put("key",user);
}
测试
@SessionAttributes
注解只能作用于类,用于存取数据到session域对象中,实现方法数据共享
实现方式:从request域对象中复制数据到session域中
/**
* @Date 2019/9/12 2:05
* by mocar
*/
@Controller
@RequestMapping(path = "/anno")
@SessionAttributes(names = {"msg"})//从request域对象中复制到session域对象
public class annoController {
@RequestMapping("/setRequest")//存入
public String setRequest(ModelMap modelMap){
System.out.println("setRequest......");
modelMap.addAttribute("msg","test");//往Request域对象存值
return "success";
}
@RequestMapping("/getSession")//获取
public String getSession(ModelMap modelMap){
System.out.println("getSession.......");
Object msg = modelMap.get("msg");
System.out.println(msg.toString());
return "success";
}
@RequestMapping("/delSession")//删除
public String delSession(SessionStatus sessionStatus,ModelMap modelMap){
System.out.println("delSession.......");
sessionStatus.setComplete();
Object msg = modelMap.get("msg");
System.out.println(msg.toString());
return "success";
}
}
jsp:
<br>
<a href="anno/setRequest" rel="external nofollow" >setRequest</a><br>
<a href="anno/getSession" rel="external nofollow" >getSession</a><br>
<a href="anno/delSession" rel="external nofollow" >delSession</a><br>
success.jsp 设置不忽略EL表达式,显示session域数据
<%--
Created by IntelliJ IDEA.
User: Mocar
Date: 2019/9/11
Time: 4:34
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
<title>快速入门</title>
</head>
<body>
<h3>success</h3>
${sessionScope}
</body>
</html>
setsession
getsession
delsession
来源:https://blog.csdn.net/Seven71111/article/details/100755966
0
投稿
猜你喜欢
- 问题原因Springboot get请求是参数过长抛出异常:Request header is too large 的问题错误描述java.
- 前言Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序,并通过
- 最近同事问我有没有有关于技术的电子书,我打开电脑上的小书库,但是邮件发给他太大了,公司又禁止用文件夹共享,于是花半天时间写了个小的文件上传程
- 本文实例讲述了C#中Out与Ref的区别,可以加深C#程序设计人员对Out和Ref用法的理解,具体分析如下:一、区别分析:Out和Ref作为
- 本文实例讲述了C#中const用法。分享给大家供大家参考。具体用法分析如下:const是一个c语言的关键字,它限定一个变量不允许被改变。使用
- 写在前面之前想尝试把JWT和Shiro结合到一起,但是在网上查了些博客,也没太有看懂,所以就自己重新研究了一下Shiro的工作机制,然后自己
- 这是Hadoop学习全程记录第1篇,在这篇里我将介绍一下如何在Linux下安装Hadoop1.x。先说明一下我的开发环境:虚拟机:VMwar
- 多数据源的目的在于一个代码模块可调用多个数据库的数据进行某些业务操作。MyBatis-Plus开发者写了一个多数据源叫dynamic-dat
- 线程池模型一般的池化模型会有两个方法,用于获取资源和释放资源,就像这样:public interface XXPool{ &n
- 前言在 上一节 Spring解密 - 默认标签的解析 中,重点分析了 Spring 对默认标签是如何解析的,那么本章继续讲解标签解析,着重讲
- 算法简介迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学迪家迪杰斯特拉于1959年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶
- AbstractDetectingUrlHandlerMapping是通过扫描方式注册Handler,收到请求时由Abstrac
- 代码思路:想要循环遍历文件夹下所有子文件夹,就要用到递归。首先判断路径是否存在:是:获取文件判断是否文件夹:是:调用自身,继续获取子文件夹下
- BufferedReader读取文件指定字符集问题默认的读取方式BufferedReader bufferedReader = new Bu
- 一,FileWritter写入文件FileWritter, 字符流写入字符到文件。默认情况下,它会使用新的内容取代所有现有的内容,然而,当指
- 在我们开发SpringBoot后端服务时,一般需要给前端统一响应格式,方便前端调试及配置错误提示等等。这篇文章讲讲实际工作中统一响应格式及统
- 装箱和拆箱是值类型和引用类型之间相互转换是要执行的操作。 1. 装箱在值类型向引用类型转换时发生2. 拆箱在引用类型向值
- 修改整理的一个通用类,用来操作oracle数据库 十分的方便,支持直接操作sql语句和Hash表操作.现在修补MIS我都用这个类,节约了大
- 1、JObject:基本的json对象/// <summary> /// Gets the j obj
- @Value("${xxx}")取properties时中文乱码(1)检查spring的配置文件中,properties