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

springmvc请求参数

请求参数:基本类型参数,POJO类型参数,数组类型参数,集合类型参数

@ResponseBody代表不进行页面跳转

一、基本类型参数请求

    //获得基本类型参数//访问:http://localhost:8080/user/guick11?username=zhangsan&age=18 打印:zhangsan  18@RequestMapping(value = "/quick11")@ResponseBodypublic void savell(String username, int age) throws IOException {//int age 可换成string ageSystem.out.println(username);System.out.println(age);}

收数据方式:URL 查询参数
例:GET http://localhost:8080/user/quick11?username=zhangsan&age=18 
底层规则:SpringMVC 按同名匹配自动转型; int 若接不到会抛  NumberFormatException 。
返回:void → 浏览器 204 空白页,控制台打印两行。
区别:最原始、最常用,不需要任何注解。

二、“POJO 对象”整体参数

     //POJO类型参数,利用user实现//访问:http://localhost:8080/user/quick12?username=lisi&age=20 方法返回void,页面可能没东西,但控制台会有@RequestMapping(value = "/quick12")   // 注意原图少了字母 m@ResponseBodypublic void save12(User user) throws IOException {System.out.println(user);}

收数据方式:还是查询参数,但字段名必须跟 User 属性一致。-需创建user.java项目
例:
GET http://localhost:8080/user/quick12?username=lisi&age=20 
底层规则:SpringMVC 先 new 一个  User ,再调用  setUsername/setAge  完成封装。
返回:同上,void → 204 空白页。
区别:比 quick11 简洁,字段再多也只用一个形参;前端依旧用  ?key=value  形式发数据。

三、数组类型参数

       //获得数组类型参数--不常用//访问:http://localhost:8080/user/quick13?strs=aaa&strs=bbb&strs=ccc@RequestMapping(value = "/quick13")@ResponseBodypublic void save13(String[] strs) throws IOException {System.out.println(Arrays.asList(strs));}

区别:不常用,但在多选框/批量删除场景会碰到。

四、集合类型参数(包装对象 Vo)

1. 后端代码

    //封装集合方式-需要在提交数据时做操作@RequestMapping(value = "/quick14")@ResponseBodypublic void save14(Vo vo) {System.out.println(vo.getUserList());}
}

2. 包装对象 Vo(必须包一层,不能直接写 List)

public class Vo {private List<User> userList;   // 属性名必须叫 userList// getter/setter
}

3.创建jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>quick14 批量提交测试</title>
</head>
<body>
<h3>请填写两条用户信息(quick14 表单集合演示)</h3>
<form action="${pageContext.request.contextPath}/user/quick14" method="post"><!-- 第 0 个 User --><label>用户0 姓名:</label><input type="text" name="userList[0].username"/><label>年龄:</label><input type="text" name="userList[0].age"/><br/><!-- 第 1 个 User --><label>用户1 姓名:</label><input type="text" name="userList[1].username"/><label>年龄:</label><input type="text" name="userList[1].age"/><br/><button type="submit">提交</button>
</form>
</body>
</html>

控制台输出

quick14 收到:[User{username='zhangsan', age=18}, User{username='lisi', age=20}]

五、JSON 数组转 List(最现代、最常用)

1. 后端代码

   /*** 接收 JSON 数组 → List<User>* 前端必须发 Content-Type: application/json*/@PostMapping("/quick15")public void save15(@RequestBody List<User> userList) {// 打断点看即可System.out.println(userList);}
}

2. 实体 User(省略构造/get/set)

public class User {private String username;private int age;// 自动生成 getter/setter 或 Lombok @Data
}

控制台输出

quick15 收到:[User{username='zhangsan', age=18}, User{username='lisi', age=20}]

六、静态访问资源的开放

静态资源 = 不需要经过 Controller 解析就能直接给浏览器的文件,例如 .js   .css   .png   .jpg   .ico   .html   .woff  等。
我们要告诉 SpringMVC:“这几类路径你别管,直接让浏览器下载。” 这就是“静态资源访问”配置。

springmvc
<!-- 1. 注解驱动:注册 HandlerMapping、HandlerAdapter、JSON 转换器等 -->
<mvc:annotation-driven/><!-- 2. 手工映射:指定目录 → 浏览器可直接下载 -->
<mvc:resources mapping="/js/**"  location="/js/"/>
<mvc:resources mapping="/img/**" location="/img/"/><!-- 3. 兜底策略:如果 1、2 都没匹配到,就交给 Tomcat 的 DefaultServlet 去处理 -->
<mvc:default-servlet-handler/>

七、请求数据乱码问题

在 Java Web(含 SpringMVC)项目里,只要“字节”→“字符”转换时使用的编码不一致,就会出现乱码。在web.xml里面配置一下全局的filter

八、参数绑定注解@requestParam

    @RequestMapping(value = "/quick16")@ResponseBodypublic void save16(@RequestParam(value = "name", required = false, defaultValue = "itcast") String username) throws IOException {System.out.println(username);}

@RequestParam  把查询参数  name  绑定到方法形参  username :

输入name=张三 就等于username=张三,都可以输出结果
required = false :请求可以不带  name  参数,不会报错。
defaultValue = "itcast" :如果没带  name ,就自动给默认值  "itcast" 。

九、获取Restful风格的参数

// 访问路径:http://localhost:8080/user/quick17/zhangsan
@RequestMapping(value = "/quick17/{username}")
@ResponseBody
public void save17(@PathVariable(value = "username") String username) throws IOException {System.out.println(username);
}

1. @RequestMapping("/quick17/{username}") 
把路径的一部分变成参数,用大括号  {}  占位。 {username}就是在占位
示例 URL: /user/quick17/zhangsan  → 此时  zhangsan  就是  {username}  的值。
2. @PathVariable(value = "username") value的username和"/quick17/{username}必须名字一样
可以简写成
@PathVariable String username 。
作用
典型 RESTful 风格用法:把资源 ID 直接放在 URL 路径里,而不是  ?id=xxx 。
常见于详情页、删除、REST 接口:
/user/123 、  /order/2024001 、  /book/9787111234567  都采用这种写法。

十、自定义类型转换器

用得不多

1.定义转换器实现converter接口

 public class DateConverter implements Converter<String, Date> {public Date convert(String dateStr) {// 将日期字符串转换成日期对象返回,也就是转成2018-6-18这种格式SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");Date date = null;try {date = format.parse(dateStr);} catch (ParseException e) {e.printStackTrace();}return date;}}

2.在springmvc中声明告诉spring

<!-- MVC 注解驱动,同时引用咱们自定义的 conversionService -->
<mvc:annotation-driven conversion-service="conversionService"/><!-- 声明转换器 -->
<bean id="conversionService"class="org.springframework.format.support.FormattingConversionServiceFactoryBean"><property name="converters"><list><bean class="com.itheima.converter.DateConverter"/></list></property>
</bean>

想用自己的转换器,就必须把“自定义 conversionService”绑定到 MVC 驱动上
“先声明,再引用”——缺谁都不行。

十一、获得Servlet相关API

自动注入对象

十二、获取请求头数据

获取cookie类型数据

@RequestMapping(value = "/quick21")
@ResponseBody
public void save21(@CookieValue(value = "JSESSIONID") String jsessionId) throws IOException {System.out.println(jsessionId);
}

http://www.dtcms.com/a/614421.html

相关文章:

  • 第四章 防火墙设备管理
  • LLM之Agent(三十)|使用 LangGraph 构建可用于生产环境的智能聊天机器人:完整工程指南
  • 网站收录作用wordpress表格线
  • 成都网站设计师福鼎手机网站建设
  • ESP32模组选型速览
  • 模板网站的缺点重庆专业网站推广流程
  • 什么网站可以查建设用地规划许可证二维码图片制作
  • [Mac] Unclutter 2.2.15 Mac上的文件暂存 智能剪贴板历史记录管理器工具
  • 东莞企业网站seo如何申请域名网站注册
  • 微信网页制作网站建设一建建设网站
  • 网络营销推广方式有哪些seo建站
  • 【算法】逻辑回归
  • Android开发-java版:Framgent
  • 网站设计行业背景稳稳在哪个网站做的消防直播
  • 四川建设银行手机银行下载官方网站下载苏州微网站建设
  • 【HarmonyOS】ArkTS的多线程并发(下)——线程间通信对象的传递
  • 平价网站平价网站建设建设钓鱼网站查询系统
  • 毕业做网站运营好吗亚马逊网站开发的技术
  • 电子商务网站建设与管理课后第四章广州市安全教育平台登录入口
  • LeetCode算法日记 - Day 103: 不同的子序列
  • 怎么建立自己网站 asp个人怎么做网站排名优化
  • 20251109 树状DP总结
  • C语言编译器出现Bug | 如何解决C语言编译器常见问题
  • 做淘宝客网站php青岛网站推广企业
  • 第九篇 扫雷游戏 上(末版·精简)
  • ⚡️2025-11-15GitHub日榜Top5|热点智能推送工具
  • python做项目的网站国家标准下载网免费
  • 网站建设服务费属于基于asp网站开发 论文
  • 高斯数据库 (GaussDB) 使用指南
  • 安徽茶叶网站建设网站抽奖模块怎么做