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

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 {
    @Autowired
    private 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.kler.cn/a/322526.html

相关文章:

  • 深度解读混合专家模型(MoE):算法、演变与原理
  • 【MySQL】MySQL数据库入门:构建你的数据基石
  • django解决跨域问题
  • 人工智能训练师 综合测试题库一
  • 前端Javascript、Vue、CSS等场景面试题目(二)
  • 《操作系统 - 清华大学》3 -3:连续内存分配:内存碎片与分区的动态分配
  • Flutter modal_bottom_sheet 库:介绍与使用指南
  • 如何在CentOS 7上升级KVM内核?
  • 信息安全工程师(22)密码学网络安全应用
  • 一款好用的多种格式电子书制作软件
  • 【编程小白必看】MySQL 日期类型转换与判断操作秘籍一文全掌握
  • Docker torchserve workflow部署流程
  • 【React】JSX基础知识
  • 鸿蒙-app进入最近任务列表触发的监听
  • 均匀合并列表
  • 前端面试题(七)
  • 力扣题解2306
  • 探秘电商平台数据采集:API 接口接入实战演示
  • DERT目标检测—End-to-End Object Detection with Transformers
  • pip配置阿里云、清华和中科大的镜像
  • vue2实现提取字符串数字并修改数字样式(正则表达式)
  • Diameter协议
  • 【HarmonyOS】横向List高度适配
  • 什么是数据库视图(View)?视图和表有何区别?
  • 从0到1,数字媒体产业基地见证每一个创意的诞生与成长
  • Oracle 数据库安装和配置指南