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

SpringMVC (发送请求——>参数传递—— >响应数据)

设置请求访问路径

@RequestMapper将请求访问路径和我们业务层的方法联系起来

@ResponseBody将我们业务层方法的返回值转化为json,xml或其他格式的数据返回给页面

两种请求

get请求

post请求

测试案例

    @RequestMapping("/getNameAndAge")@ResponseBodypublic String getNameAndAge(String name,int age){System.out.println("name:"+name);System.out.println("age:"+age);return "{'info':'Param'}";}

get

post

postman中   勾选Body下的x-www-form-urlencoded表单填写参数

解决post请求中文乱码问题

//解决post请求中文乱码
@Override
protected Filter[] getServletFilters() {CharacterEncodingFilter filter=new CharacterEncodingFilter();filter.setEncoding("UTF-8");return new Filter[]{filter};
}

5种参数类型传递

普通参数

方法
    //普通参数@RequestMapping("/getNormalParam")@ResponseBody//将请求参数中的name赋给这里的形参userNamepublic String getNormalParam(@RequestParam("name") String userName, int password){System.out.println("userName:"+userName);System.out.println("password:"+password);return "{'info':'normalParam'}";}

用@RequestParam注解让和形参不同名的参数对应起来

请求

结果

 

POJO参数

User实体类

@Data
public class User {public String userName;public int password;
}
方法
    @RequestMapping("/getPOJO")@ResponseBodypublic String getPOJO(User user){System.out.println(user);return "{'info':'pojo'}";}

请求

这里传递的参数要和实例类中的属性名保持一致 

结果

嵌套POJO参数

User实体类,嵌套Address

@Data
public class User {public String userName;public int password;public Address address;
}
@Data
public class Address {public String province;public String city;
}
方法
    @RequestMapping("/getContainPOJO")@ResponseBodypublic String getContainPOJO(User user){System.out.println(user);return "{'info':'containPojo'}";}

请求

结果 

 

数组参数

方法
    @RequestMapping("/getList")@ResponseBodypublic String getList(String[] list){System.out.println(Arrays.toString(list));return "{'info':'list'}";}

请求

结果

集合参数

方法
    @RequestMapping("/getCollection")@ResponseBodypublic String getList(@RequestParam("list") List<String> foodList){System.out.println(foodList.toString());return "{'info':'collection'}";}

需要添加一个@RequestParam注解让SpringMVC知道这是传进来的参数,否则会把List<String>当成一个实体类

请求

结果

json数据传递

首先先导入json的依赖jar包

开启@EnableWebMvc

@Configuration
@ComponentScan({"com.example"})
@EnableWebMvc//开启json等一系列功能
public class SpringMVCConfig {
}

postman中发送json数据(在Body中以raw的形式填写json数据)

方法中用@RequestBody来把请求体Body中的json绑定到我们业务层方法的形参上,且这个注解一个方法只能用一次。

json数组

方法
    //json数组@RequestMapping("/getJsonList")@ResponseBodypublic String getJsonList(@RequestBody List<String> jsonList){System.out.println(jsonList);return "{'info':'jsonList'}";}

请求

结果

json对象

方法
    //json对象@RequestMapping("/getJsonPOJO")@ResponseBodypublic String getJsonPOJO(@RequestBody User user){System.out.println(user);return "{'info':'jsonPOJO'}";}

请求

结果

json数组对象

方法
    //json对象数组@RequestMapping("getJsonPOJOList")@ResponseBodypublic String getJsonPOJOList(@RequestBody List<Address> jsonPOJOList){System.out.println(jsonPOJOList);return "{'info':'jsonPOJOList'}";}

请求

结果

日期型参数传递

方法

    //日期型参数传递@RequestMapping("/getDateParam")@ResponseBodypublic String getDateParam(Date d1, @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date d2,@DateTimeFormat(pattern = "yyyy年MM月dd日 HH:mm:ss")  Date d3){System.out.println(d1);System.out.println(d2);System.out.println(d3);return "'info':'date'";}

在方法参数中用@DateTimeFormat指定pattern为我们需要的日期格式

请求

结果

正确被解析的字符串会被转化为Date类型赋给方法中的形参

响应

响应页面(了解)

//    响应//响应页面(没啥用,因为后面都是异步请求)@RequestMapping("/jump")public String jumpToJsp(){System.out.println("跳转到test.jsp");return "/test.jsp";   //这里加一个 /   表示从webapp开始的路径}

响应文本数据

方法
    //响应文本数据@RequestMapping(value = "/responseText",produces="text/html;charset=UTF-8;")@ResponseBody   //加上这个注解表示将这个方法的返回值作为响应数据public String responseText(){return "返回文本数据";}
请求及响应结果

响应json数据

响应json对象

方法
    /*响应json对象:方法直接返回json对象即可*/@RequestMapping("/responseJsonPOJO")@ResponseBody   //加上这个注解表示将这个方法的返回值作为响应数据public User responseJsonPOJO(){User user = new User("李四", 444, new Address("福建", "厦门"));return user;}
请求及响应结果

响应json对象数组

方法
        /*响应json对象数组:方法直接返回json对象数组即可*/@RequestMapping("/responseJsonPOJOList")@ResponseBody   //加上这个注解表示将这个方法的返回值作为响应数据public List<User> responseJsonPOJOList(){ArrayList<User> users = new ArrayList<>();users.add(new User("绽放三",123,new Address("福建", "泉州")));users.add(new User("李四",444,new Address("福建", "厦门")));users.add(new User("哇我",6898,new Address("四川", "成都")));return users;}
请求及响应结果

http://www.lryc.cn/news/417656.html

相关文章:

  • 认识Modbus RTU与Modbus TCP
  • 如何在 Kubernetes 中使用 ClickHouse 和 JuiceFS
  • 云计算任务调度优化matlab仿真,对比蚁群优化和蛙跳优化
  • 基于双PI+EKF扩展卡尔曼滤波的PMSM速度控制simulink建模与仿真
  • 医疗器械注册资源宝库数屿医械官方平台!
  • Django如何移除数据库字段?
  • 阶段项目——拼图小游戏
  • 基于本地消息表实现分布式事务(最终一致性)
  • 大数据mapper书写范式hdfs
  • ubuntu将软件放到任务栏
  • Spring Boot 参数校验 Validation 使用
  • 基于el-table的表格点选和框选功能
  • LabVIEW压电陶瓷阻抗测试系统
  • 电销机器人能大幅度提升效率
  • 虚拟机能访问网页但ping不通百度
  • RK3588开发笔记-buildroot编译配置
  • Java设计模式(适配器模式)
  • 机器学习框架巅峰对决:TensorFlow vs. PyTorch vs. Scikit-Learn实战分析
  • 基于STM32的智能窗帘控制系统
  • 【算法】普里姆算法解决修路问题
  • Python 之Scikit-learn(二) -- Scikit-learn标准化数据
  • 机械学习—零基础学习日志(python编程)
  • WEB应用(十三)---RCE
  • 【云原生】Service服务暴露详细
  • 实名认证次数限制
  • 【如何在Python中使用pathlib模块】
  • sqli-labs第一关详细解答
  • 分布式事务一站式解决方案-Seata
  • openwrt 使用ftace工具追踪协议栈转发流程
  • ElasticSearch优化实战:打造高性能搜索引擎的秘籍