SpringMVC获得请求数据

PCIE Lane Margining Linux 环境配置 Copy all the provided files in folder PYC38 or PYC310 to the created pcie_lmt folder. Index of /ftp/python/3.8.10/Copy below commands to a file and rename it as "scan_pcie.py", the commands are from "685662 PCIe-LMT-Gen4_Gen5-r0p77.pdf" in the lane margi 阅读详情

目录

1.获得请求参数

2.获得基本类型参数

3.获得POJO类型参数

4.获得数组类型参数

5.获得集合类型参数

6.请求数据乱码问题

7.参数绑定注解@RequestParam

8.获得Restful风格的参数

9.自定义类型转换器

10.获得Servlet相关API

11.获得请求头@RequestHeader

12.获得请求头@CookieValue


1.获得请求参数

客户端请求参数的格式是:name=value&name=value......服务器端要获得请求的参数,有时还需要进行数据的封装,SpringMVC可以接收如下类型的参数:

  • 基本类型参数
  • POJO类型参数
  • 数组类型参数
  • 集合类型参数

2.获得基本类型参数

Controller中的业务方法的参数名称要与请求参数的name一致,参数值会自动映射匹配。

http://localhost:8080/项目名/quick?username=zhangsan&age=12

@RequestMapping("/quick8")
@ResponseBody
public void save8(String username, int age) throws IOException {
    System.out.print(username);
    System.out.print(age);
}

3.获得POJO类型参数

Controller中的业务方法的POJO参数的属性名与请求参数的name一致,参数值会自动映射匹配。

@RequestMapping("/quick9")
@ResponseBody
public void save9(User user) throws IOException {
    System.out.print(user);
}

4.获得数组类型参数

Controller中的业务方法数组名称与请求参数的name一致,参数值会自动映射匹配。

http://localhost:8080/test/user/quick10?strs=111&strs=222&strs=333

@RequestMapping("/quick10")
@ResponseBody
public void save10(String[] strs) throws IOException {
    System.out.println(Arrays.asList(strs));
}

5.获得集合类型参数

获得集合参数时,要将集合参数包装到一个POJO中才可以。

package com.caoyan.domain;

import java.util.List;

public class VO {
    private List<User> userList;

    public List<User> getUserList() {
        return this.userList;
    }

    public void setUserList(List<User> userList) {
        this.userList = userList;
    }

    @Override
    public String toString() {
        return "{" +
                " userList='" + getUserList() + "'" +
                "}";
    }

}
@RequestMapping("/quick11")
@ResponseBody
public void save11(VO vo) throws IOException {
    System.out.println(vo);
}
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false"%>
<html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <form action="${pageContext.request.contextPath}/user/quick11" method="post">
            <!-- 表明是第一个User对象的username,age -->
            <input type="text" name="userList[0].username"><br/>
            <input type="text" name="userList[0].age"><br/>
            <input type="text" name="userList[1].username"><br/>
            <input type="text" name="userList[1].age"><br/>
            <input type="submit" value="提交">
        </form>
    </body>
</html>

当使用Ajax提交时,可以指定contentType为json形式,那么在方法参数位置使用@RequestBody可以直接接收集合数据而无需使用POJO进行封装。

首先在SpringMVC.xml上进行配置:

第一种方式:

<mvc:resources mapping="/js/**" location="/js/"/>

第二种方式: 

<mvc:default-servlet-handler />

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false"%>
<html>
    <head>
        <title>Title</title>
        <script src="${pageContext.request.contextPath}/js/jquery-3.5.1.js"></script>
        <script>
            var userList = new Array();
            userList.push({username:"zhangsan",age:28});
            userList.push({username:"lisi",age:30});
            $.ajax({
                type:"POST",
                url:"${pageContext.request.contextPath}/user/quick12",
                data:JSON.stringify(userList),
                contentType:"application/json;charset=utf-8"
            });
        </script>
    </head>
    <body>
        
    </body>
</html>
@RequestMapping("/quick12")
@ResponseBody
public void save12(@RequestBody List<User> userList) throws IOException {
    System.out.println(userList);
}

6.请求数据乱码问题

当post请求时,数据会出现乱码,通过设置一个过滤器来进行编码的过滤。

<!-- 配置全局过滤的filter -->
<filter>
  <filter-name>CharacterEncodingFilter</filter-name>
  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>CharacterEncodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

7.参数绑定注解@RequestParam

当请求参数名称与Controller的业务方法参数名称不一致时,就需要通过@RequestParam注解显示的绑定。

@RequestMapping("/quick13")
@ResponseBody
public void save13(@RequestParam("name") String username) throws IOException {
    System.out.println(username);
}

注解@RequestParam还有如下参数可以使用:

  • value:与请求参数名称
  • required:此在指定的请求参数是否必须包括,默认是true,提交时如果没有此参数则报错
  • defaultValue:当没有指定请求参数时,则使用指定的默认值赋值
@RequestMapping("/quick13")
@ResponseBody
public void save13(@RequestParam(value = "name", required = false, defaultValue = "caoyan") String username)throws IOException {
    System.out.println(username);
}

8.获得Restful风格的参数

Restful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。主要用于客户端和服务器交互类的软件,基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存机制等。

Restful风格的请求是使用“url+请求方式”表示一次请求的目的,http协议里面四个表示操作方式的动词如下:

  • GET:用于获取资源
  • POST:用于新建资源
  • PUT:用于更新资源
  • DELETE:用于删除资源

例如:

  • /user/1 GET:得到id=1的user
  • /user/1 DELETE:删除id=1的user
  • /user/1 PUT:更新id=1的user
  • /user POST:新增user

上述url地址/user/1的1就是要获得的请求参数,在SpringMVC中可以使用占位符进行参数绑定。地址/user/1可以写成/user/{id},占位符{id}对应的就是1的值,在业务方法中我们可以使用@PathVariable注解进行占位符的匹配获取工作。

http://localhost:8080/test/user/quick14/zhangsan

@RequestMapping("/quick14/{name}")
@ResponseBody
public void save14(@PathVariable(value = "name", required = true) String username) throws IOException {
    System.out.println(username);
}

9.自定义类型转换器

SpringMVC默认已经提供了一些常用的类型转换器,例如客户端提交的字符串转换成int型进行参数设置。但是不是所有的数据类型都提供了转换器,没有提供的就需要自定义转换器,例如:日期类型的数据就需要自定义转化器。

自定义类型转换器的开发步骤:

  • 定义转换器类实现Converter接口
package com.caoyan.converter;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.core.convert.converter.Converter;

public class DateConverter implements Converter<String, Date> {

    @Override
    public Date convert(String dateStr) {
        // 将日期字符串转换成日期对象、返回
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date date = null;
        try {
            date = dateFormat.parse(dateStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }

}
  • 在配置文件中声明转换器
<!-- 声明转换器 -->
<bean id="conversionService"class="org.springframework.context.support
.ConversionServiceFactoryBean">
    <property name="converters">
        <list>
             <bean class="com.caoyan.converter.DateConverter"></bean>
        </list>
    </property>
</bean>
  • 在<annotation-driven>中引用转换器
<!-- mvc的注解驱动 -->
<mvc:annotation-driven conversion-service="conversionService"/>

10.获得Servlet相关API

SpringMVC支持使用原始ServletAPI对象作为控制器方法的参数进行注入,常用的对象如下:

  • HttpServletRequest
  • HttpServletResponse
  • HttpSession
@RequestMapping("/quick16")
@ResponseBody
public void save16(HttpServletRequest request, HttpServletResponse response, HttpSession session)throws IOException {
    System.out.println(request);
    System.out.println(response);
    System.out.println(session);
}

11.获得请求头@RequestHeader

使用@RequestHeader可以获得请求头信息,相当于web阶段学习的request.getHeader(name)

@RequestHeader注解的属性如下:

  • value:请求头的名称
  • required:是否必须携带此请求头
    @RequestMapping("/quick17")
    @ResponseBody
    public void save17(@RequestHeader(value = "Uer-Agent", required = false) String headerValue) throws IOException {
        System.out.println(headerValue);
    }
    

12.获得请求头@CookieValue

使用@CookieValue可以获得指定Cookie的值

@CookieValue注解的属性如下:

  • value:指定cookie的名称
  • required:是否必须携带此cookie
@RequestMapping("/quick18")
@ResponseBody
public void save18(@CookieValue(value = "JSESSIONID", required = false) String jsessionid) throws IOException {
    System.out.println(jsessionid);
}

BugkuCTF-PWN题pwn2-overflow超详细讲解 解题思路 1)计算出get_shell_的地址偏移量 2)算出来之后就直接溢出到后门函数 知识点 x64函数调用规则 解题之前我们先学下linux x64的函数调用规则。 x64机器在调用某个函数前,比如int func(int a, int b, int c, int d, int e, int f, int g, int h),首先他会把前6个参数从左往右存入到寄存器rdi、rsi、rdx、rcx、r8、r9,其余参数存入到栈里,保存的顺序是从右往左入栈。比如abcdef会存入到寄存器里,然后一次入栈h 阅读详情

相关推荐

从HSPICE到Spectre:手把手教你搞定不同SPICE仿真器的网表转换(附避坑指南)

本文详细介绍了从HSPICE到Spectre的SPICE仿真器网表转换方法,包括核心语法差异、分步转换流程和常见问题排查。通过实战案例和避坑指南,帮助工程师高效解决不同SPICE仿真器间的兼容性问题,提升集成电路设计效率。

weixin_29745609的博客 368

Spring MVC之获取请求参数

SpringMVC获取请求参数 1、通过ServletAPI获取 将HttpServletRequest作为控制器方法的形参,此时HttpServletRequest类型的参数表示封装了当前请求的请求报文的对象 @RequestMapping("/testParam") public String testParam(HttpServletRequest request){ String username = request.getParameter("username"); String

weixin_45608136的博客 607

202505系分论文《论软件系统测试方法及应用》

本文以软件测试方法为切入点,重点论述分层协作、智能赋能、全流程三个维度下传统测试与自动化测试的融合应用。

pccai的博客 1694

SpringMVC 获得请求数据

上述url地址/user/1中的1就是要获得的请求参数,在SpringMVC中可以使用占位符进行参数绑定。@Controller注解的类中的方法返回的通常是视图的名称或ModelAndView对象,这些返回值将由Spring MVC的视图解析器用来渲染最终的视图。当请求的参数名称与Controller的业务方法参数名称不一致时,就需要通过@RequestParam注解显示的绑定。主要用于客户端和服务。Controller中的业务方法的POJO参数的属性名与请求参数的name一致,参数值会自动映射匹配。

wo_1ca的博客 1934

数字麦克风PDM信号采集与STM32 I2S接口应用(二)

在使用STM32的数字麦克风I2S接口时,计算采样率让人头疼,芯片手册上没有明确的说法,而手册上的计算方法经过测试却和实验不符。借助搜索引擎,大部分资料都是来自于开发板卖家或开发板论坛,主要是咪头采集然后配置WM89系列解码芯片,然后配合FatFS、MP3解码等模式,主要是讲解I2S录音、存储、放音等。外文资料得到的也寥寥无几,也没有找到讲解STM32数字麦克风配置、计算的文档。加上网上资料转载、抄袭、浅尝辄止的笔记教程,这些更是让检索大海捞针,过程艰辛一言难尽,有些网文三言两语抑或作者都没有搞清楚随手一写

XIAOYOUDUODUO的博客 6055

国科大学习资料--高级软件工程-复习题选择题答案

国科大学习资料–高级软件工程(罗铁坚 魏峻 刘丹)-复习题选择题答案 ’‘

无名何许人的博客 1166

13.spring获得请求参数

1.获得基本类型参数 @RequestMapping(value = "/save10") @ResponseBody //告知SpringMVC 不进行视图跳转 直接进行数据回写 public void save10(String userName,int age) throws JsonProcessingException { System.out.println(userName); System.out.p...

weixin_45974277的博客 494

【Charge】仿真目录

Author: JiJi\textrm{Author: JiJi}Author: JiJi Created Time: 2026.01.20\textrm{Created Time: 2026.01.20}Created Time: 2026.01.20 Modified Time: 2026.01.20\textrm{Modified Time: 2026.01.20}Modified Time: 2026.01.20工作流程材料模型[Charge] 电荷分布与折射率变化理论 [Charge] FDTD

u011699626的博客 317

SpringMVC的请求

获得请求参数-请求参数类型 SpringMVC可以接收如下类型的参数 * 基本类型参数 * POJO类型参数 * 数组类型参数 * 集合类型参数 获得请求参数-获得基本类型参数 Controller中的业务方法的参数名称要与请求参数的name一致,参数值会自动映射匹配。并且能自动做类型转换; (遵循转换规则) 自动的类型转换是指从String向其他类型的转换 `http://localhost:8...

Steven_102的博客 455

基于Jeecgboot3.9.0的vue3版本前后端分离的flowable流程管理平台

基于Jeecgboot3.9.0的vue3版本前后端分离的flowable流程管理平台

宁波阿成的博客 903

104、母线电容设计与选型

母线电容选型,容值不是最关键的,纹波电流和温度才是。很多炸机事故,不是容值不够,而是纹波电流超标导致过热。选电容时,多花点时间算纹波电流,比盲目加大容值有效得多。另外,别迷信进口品牌。国产电容(如江海、艾华)在常规应用里完全够用,价格只有进口的1/3。但高频特性确实有差距,所以高频去耦一定要用薄膜电容。最后,留个调试技巧:用示波器测母线电容两端的电压纹波,同时用电流探头测电容的纹波电流。如果纹波电流波形有尖峰,说明ESL太大,需要并联高频电容。如果纹波电压是低频波动,说明容值不够。

2401_88858637的博客 50

SpringMVC数据响应&获得请求参数

文章目录一、数据响应1.页面跳转①直接返回字符串:②返回ModelAndView对象③向request域中存储数据2.回写数据①直接返回字符串②返回对象或集合二、SpringMVC获得请求数据1.获得请求参数①获取基本类型参数②获取pojo类型参数③获取数组类型参数④获取集合类型参数2.静态资源的放行3.解决请求数据乱码问题4.参数绑定注解@RequestParam5.获得Restful风格的数据6.自定义类型转换器7.获取Servlet相关的API8.获取请求头@RequestHeader@CookieV

下雨了亦留此地的博客 476

C#客户端对接工厂MES的方法

本文介绍了使用C#实现WebApi客户端与工厂MES系统交互的方法。主要包括四个步骤:1)配置工控机IP地址;2)获取服务器URL;3)创建HttpHelper帮助类实现单例模式HttpClient,提供异步POST请求方法;4)通过实例化帮助类实现设备状态数据的JSON格式发送与接收。该方案采用异步通信方式,支持超时处理,能够满足大多数MES系统交互需求,帮助工程师快速完成设备与MES系统的数据对接。文中给出了核心代码片段和完整的数据交互流程示例。

weixin_39832501的博客 267

springmvc03:SpringMVC获得请求数据

SpringMVC虽然默认提供了一些常用的类型转换器,但不是所有的数据类型都提供了转换器,没有提供就自定义转换器,例如日期类型。自定义类型转换器的开发步骤1)定义转换器类实现Converter接口//将日期字符串转换成日期对象 返回try {}}}2)在配置文件中声明转换器3)在中引用转换器测试类}测试结果 日期类型yyyy-MM-dd转换成功。

hhhhhh的博客 366

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

SpringMVC 如何获得请求数据

SpringMVC 获得请求数据 VO.java public class VO { private List<User> userList; @Override public String toString() { return "VO{" + "userList=" + userList + '}'; } public void setUserList(List<

qq_37391214的博客 337

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

ssm之SpringMVC的数据响应和获得请求数据

REST(Representational State Transfer),表述性状态转换,它是一种软件架构风格。又称为Restful场景​推荐方式​​​示例​​​GET 查询URL 参数 + @RequestParam或 POJO 绑定GET /users?POST 提交表单POST /register+ 表单字段 → @ModelAttribute User user​​POST 提交 JSONPUT/PATCH 更新资源DELETE 删除资源​。

xrkhy的博客 1369

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

spring 笔记六 SpringMVC 获得请求数据

• SpringMVC默认已经提供了一些常用的类型转换器,例如客户端提交的字符串转换成int型进行参数设置。• 但是不是所有的数据类型都提供了转换器,没有提供的就需要自定义转换器,例如:日期类型的数据就需要自定义转换器。自定义类型转换器的开发步骤:① 定义转换器类实现Converter接口② 在配置文件中声明转换器③ 在中引用转换器①定义转换器类实现Converter接口@Overridetry {②在配置文件中声明转换器

个人博客,记录了本人学习的各种有趣的技术。 4234
上一篇: SSM框架(Spring+SpringMVC+Mybatis)
下一篇: SpringMVC获得请求数据(文件上传)
Caoyy686868
博客等级 码龄8年 5742粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Caoyy686868

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值