当前位置: 首页 > news >正文

Spring MVC参数接收 总结

1. 简介

Spring MVC可以简化从前端接收参数的步骤。

2. Param传参

通过设定函数入参和添加标记来简化接受:

//参数接收
@RequestMapping("product")
@ResponseBody
//接受/product?product=goods&id=123
//1.名称必须相同,2.不传值不会不报错
public String product(String product, int id){System.out.println("product = " + product+ ", id = " + id);return "product = " + product+ ", id = " + id;
}//注解指定
//pdt必须传递并转化成product,不传就报400异常
//id可以不传递,不传默认值就是1
@RequestMapping("product1")
@ResponseBody
public String product1(@RequestParam(value = "pdt") String product, @RequestParam(required = false,defaultValue = "1") int id){System.out.println("product = " + product+ ", id = " + id);return "product = " + product+ ", id = " + id;
}//特殊值 ids=1&ids=2&ids=3
@GetMapping("product2")
@ResponseBody
public String product2(@RequestParam  List<String> ids){//@RequestParam必须加System.out.println("hbs = " + ids);return "ok";}//数据直接放到数据类里,要求名字必须相同
//如果没传就用默认值,都不会报错
@RequestMapping("product3")
@ResponseBody
public String product3(Product product){System.out.println("product" + product);return product.toString();
}

3. 动态路径传参

也可以直接从动态路径接受参数:

//动态路径用{}括起来
//接收路径参数用PathVariable标记
@RequestMapping("{pdt}/{id}")
public String login(@PathVariable("pdt") String product, @PathVariable String id){System.out.println("product = " + product + ", id = " + id);return "product = " + product + ", id = " + id;
}

4. JSON传参

从前端传来的JSON解析接收方法如下:
pom.xml中导入json依赖:

<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.15.0</version>
</dependency>

配置类中加入@EnableWebMvc注解:

...
@EnableWebMvc
public class MVCConfig {
...
}

业务逻辑实现:

@RequestMapping("/")
@Controller
@ResponseBody
public class JsonController {@RequestMapping(value = "product",method = RequestMethod.POST)public String data(@RequestBody Product product){//@RequestBody表示接受json数据System.out.println("product = " + product);return product.toString();}
}

5.接收Cookie

通过@CookieValue标注接受Cookie

@RequestMapping
public String data(@CookieValue(value = "cookieName") String cookie){System.out.println("cookie = " + cookie);return "ok";
}

6.接收Header

通过@RequestHeader标注接受Header:

@RequestMapping
public String data(@RequestHeader("Connection") String conn){//接收header的Connection字段System.out.println("conn = " + conn);return "conn = " + conn;
}

7.获取原生对象

原生对象可以直接在函数入参获取:

@Controller
public class dataController {@Autowiredprivate ServletContext servletContext;//通过IOC自动获取ServletContext对象public void api(HttpServletResponse response, HttpServletRequest request, HttpSession session) {//获取HttpServletResponse,HttpServletRequest,HttpSession对象//获取ServletContext对象ServletContext servletContext1 = request.getServletContext();ServletContext servletContext2 = session.getServletContext();}
}
http://www.lryc.cn/news/448871.html

相关文章:

  • Docekrfile和docker compose编写指南及注意事项
  • VITS源码解读6-训练推理
  • 力扣 简单 104.二叉树的最大深度
  • 单片机长短按简单实现
  • 如何用好通义灵码企业知识库问答能力?
  • C语言自定义类型:联合体
  • 【JavaEE】——线程池大总结
  • 编程中为什么使用0和1表示状态
  • C++入门基础知识90(实例)——实例15【求两数的最大公约数】
  • 自动化办公-Python-os模块的使用
  • 无人机之数据处理技术篇
  • 828华为云征文|部署多功能集成的协作知识库 AFFiNE
  • c++(AVL树及其实现)
  • Cesium GIS项目关于湖泊识别与提取的实现
  • 两个圆形 一个z里面一个z外面,z里面的大,颜色不同 html
  • 【Power Query】M函数-table
  • uni-app 封装websocket 心跳检测,开箱即用
  • ASP.NET Core8.0学习笔记(十九)——EF Core DbSet
  • Android Camera 预览角度和拍照保存图片角度相关
  • 新手如何使用Qt——方法使用
  • 友元运算符重载函数
  • 从0开始实现es6 promise类
  • XML 编码
  • AI周报(9.22-9.28)
  • 基于RealSense D435相机实现手部姿态重定向
  • js中防抖 debounce 节流 throttle 原理 从0手动实现
  • AIGC: 10 AI转文服务器的搭建过程记录
  • 性能测试1初步使用Jmeter
  • OpenGL ES 绘制一个三角形(2)
  • QT----Creater14.0,qt5.15无法启动调试,Launching GDB Debugger报红