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

Web后端开发-请求响应

文章目录

  • 概述
  • 请求
    • Postman
    • 简单参数
      • 原始方式
      • SpringBoot
      • @RequestParam注解
      • 小结
    • 实体参数
    • 数组集合参数
    • 日期参数
    • Json参数
    • 路径参数
    • 总结
  • 响应
  • 响应-案例

概述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

请求

Postman

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

简单参数

原始方式

在这里插入图片描述

//     1. 简单参数
//     原始方式@RequestMapping("/simpleParam")public String simpleParam(HttpServletRequest request){//获取请求参数String name = request.getParameter("name");String ageStr = request.getParameter("age");int age = Integer.parseInt(ageStr);System.out.println(name+ ":" + age);return "OK";}

SpringBoot

在这里插入图片描述

//    springboot方式@RequestMapping("/simpleParam")public String simpleParam(String name, Integer age){System.out.println(name+ ":" + age);return "OK";}@RequestMapping("/simpleParam")public String simpleParam(String username, Integer age){System.out.println(username+ ":" + age);return "OK";}

@RequestParam注解

在这里插入图片描述

  @RequestMapping("/simpleParam")public String simpleParam(@RequestParam(name = "name") String username, Integer age){System.out.println(username+ ":" + age);return "OK";}

在这里插入图片描述
在这里插入图片描述

    @RequestMapping("/simpleParam")public String simpleParam(@RequestParam(name = "name",required = false) String username, Integer age){System.out.println(username+ ":" + age);return "OK";}

小结

在这里插入图片描述

实体参数

在这里插入图片描述

//2. 实体参数@RequestMapping("/simplePojo")public String simplePojo(User user){System.out.println(user);return "OK";}

在这里插入图片描述

    @RequestMapping("/complexPojo")public String complexPojo(User user){System.out.println(user);return "OK";}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数组集合参数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

 //3. 数组集合参数@RequestMapping("/arrayParam")public String arrayParam(String[] hobby){System.out.println(Arrays.toString(hobby));return "OK";}@RequestMapping("/listParam")public String listParam(@RequestParam List<String> hobby){System.out.println(hobby);return "OK";}

在这里插入图片描述

日期参数

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

 //4. 日期时间参数@RequestMapping("/dateParam")public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updateTime){System.out.println(updateTime);return "OK";}

Json参数

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  //5. json参数@RequestMapping("/jsonParam")public String jsonParam(@RequestBody User user){System.out.println(user);return "OK";}

路径参数

在这里插入图片描述

    //6. 路径参数@RequestMapping("/path/{id}")public String pathParam(@PathVariable Integer id){System.out.println(id);return "OK";}@RequestMapping("/path/{id}/{name}")public String pathParam2(@PathVariable Integer id , @PathVariable String name){System.out.println(id);System.out.println(name);return "OK";}

总结

在这里插入图片描述

package com.itheima.controller;import com.itheima.pojo.User;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpServletRequest;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;/*** 测试请求参数接收*/
@RestController
//@Controller
//@ResponseBody
public class RequestController {     1. 简单参数
     原始方式
//    @RequestMapping("/simpleParam")
//    public String simpleParam(HttpServletRequest request){
//        //获取请求参数
//        String name = request.getParameter("name");
//        String ageStr = request.getParameter("age");
//
//        int age = Integer.parseInt(ageStr);
//        System.out.println(name+ ":" + age);
//        return "OK";
//    }
//
    springboot方式
//    @RequestMapping("/simpleParam")
//    public String simpleParam(String name, Integer age){
//        System.out.println(name+ ":" + age);
//        return "OK";
//    }
//
//    @RequestMapping("/simpleParam")
//    public String simpleParam(String username, Integer age){
//        System.out.println(username+ ":" + age);
//        return "OK";
//    }@RequestMapping("/simpleParam")public String simpleParam(@RequestParam(name = "name",required = false) String username, Integer age){System.out.println(username+ ":" + age);return "OK";}//2. 实体参数@RequestMapping("/simplePojo")public String simplePojo(User user){System.out.println(user);return "OK";}@RequestMapping("/complexPojo")public String complexPojo(User user){System.out.println(user);return "OK";}//3. 数组集合参数@RequestMapping("/arrayParam")public String arrayParam(String[] hobby){System.out.println(Arrays.toString(hobby));return "OK";}@RequestMapping("/listParam")public String listParam(@RequestParam List<String> hobby){System.out.println(hobby);return "OK";}//4. 日期时间参数@RequestMapping("/dateParam")public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updateTime){System.out.println(updateTime);return "OK";}//5. json参数@RequestMapping("/jsonParam")public String jsonParam(@RequestBody User user){System.out.println(user);return "OK";}//6. 路径参数@RequestMapping("/path/{id}")public String pathParam(@PathVariable Integer id){System.out.println(id);return "OK";}@RequestMapping("/path/{id}/{name}")public String pathParam2(@PathVariable Integer id , @PathVariable String name){System.out.println(id);System.out.println(name);return "OK";}
}

响应

在这里插入图片描述
在这里插入图片描述

package com.itheima.controller;import com.itheima.pojo.Address;
import com.itheima.pojo.Result;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;/*** 测试响应数据*/
@RestController
public class ResponseController {@RequestMapping("/hello")public String hello(){System.out.println("Hello World ~");return "Hello World ~";}@RequestMapping("/getAddr")public Address getAddr(){Address addr = new Address();addr.setProvince("广东");addr.setCity("深圳");return addr;}@RequestMapping("/listAddr")public List<Address> listAddr(){List<Address> list = new ArrayList<>();Address addr = new Address();addr.setProvince("广东");addr.setCity("深圳");Address addr2 = new Address();addr2.setProvince("陕西");addr2.setCity("西安");list.add(addr);list.add(addr2);return list;}
}

在这里插入图片描述
Result


package com.itheima.pojo;/*** 统一响应结果封装类*/
public class Result {private Integer code ;//1 成功 , 0 失败private String msg; //提示信息private Object data; //数据 datepublic Result() {}public Result(Integer code, String msg, Object data) {this.code = code;this.msg = msg;this.data = data;}public Integer getCode() {return code;}public void setCode(Integer code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public Object getData() {return data;}public void setData(Object data) {this.data = data;}public static Result success(Object data){return new Result(1, "success", data);}public static Result success(){return new Result(1, "success", null);}public static Result error(String msg){return new Result(0, msg, null);}@Overridepublic String toString() {return "Result{" +"code=" + code +", msg='" + msg + '\'' +", data=" + data +'}';}
}

ResponseController

package com.itheima.controller;import com.itheima.pojo.Address;
import com.itheima.pojo.Result;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;/*** 测试响应数据*/
@RestController
public class ResponseController {@RequestMapping("/hello")public Result hello(){System.out.println("Hello World ~");//return new Result(1,"success","Hello World ~");return Result.success("Hello World ~");}@RequestMapping("/getAddr")public Result getAddr(){Address addr = new Address();addr.setProvince("广东");addr.setCity("深圳");return Result.success(addr);}@RequestMapping("/listAddr")public Result listAddr(){List<Address> list = new ArrayList<>();Address addr = new Address();addr.setProvince("广东");addr.setCity("深圳");Address addr2 = new Address();addr2.setProvince("陕西");addr2.setCity("西安");list.add(addr);list.add(addr2);return Result.success(list);}
}

在这里插入图片描述

响应-案例

在这里插入图片描述
在这里插入图片描述
XML文件

<?xml version="1.0" encoding="UTF-8" ?>
<emps><emp><name>金毛狮王</name><age>55</age><image>https://web-framework.oss-cn-hangzhou.aliyuncs.com/web/1.jpg</image><!-- 1: 男, 2: 女 --><gender>1</gender><!-- 1: 讲师, 2: 班主任 , 3: 就业指导 --><job>1</job></emp><emp><name>白眉鹰王</name><age>65</age><image>https://web-framework.oss-cn-hangzhou.aliyuncs.com/web/2.jpg</image><gender>1</gender><job>1</job></emp><emp><name>青翼蝠王</name><age>45</age><image>https://web-framework.oss-cn-hangzhou.aliyuncs.com/web/3.jpg</image><gender>1</gender><job>2</job></emp><emp><name>紫衫龙王</name><age>38</age><image>https://web-framework.oss-cn-hangzhou.aliyuncs.com/web/4.jpg</image><gender>2</gender><job>3</job></emp>
</emps>

Emp

package com.itheima.pojo;public class Emp {private String name;private Integer age;private String image;private String gender;private String job;public Emp() {}public Emp(String name, Integer age, String image, String gender, String job) {this.name = name;this.age = age;this.image = image;this.gender = gender;this.job = job;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getImage() {return image;}public void setImage(String image) {this.image = image;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public String getJob() {return job;}public void setJob(String job) {this.job = job;}@Overridepublic String toString() {return "Emp{" +"name='" + name + '\'' +", age=" + age +", image='" + image + '\'' +", gender='" + gender + '\'' +", job='" + job + '\'' +'}';}
}

XmlParserUtils

package com.itheima.utils;import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.File;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;public class XmlParserUtils {public static <T> List<T> parse(String file , Class<T> targetClass)  {ArrayList<T> list = new ArrayList<T>(); //封装解析出来的数据try {//1.获取一个解析器对象SAXReader saxReader = new SAXReader();//2.利用解析器把xml文件加载到内存中,并返回一个文档对象Document document = saxReader.read(new File(file));//3.获取到根标签Element rootElement = document.getRootElement();//4.通过根标签来获取 user 标签List<Element> elements = rootElement.elements("emp");//5.遍历集合,得到每一个 user 标签for (Element element : elements) {//获取 name 属性String name = element.element("name").getText();//获取 age 属性String age = element.element("age").getText();//获取 image 属性String image = element.element("image").getText();//获取 gender 属性String gender = element.element("gender").getText();//获取 job 属性String job = element.element("job").getText();//组装数据Constructor<T> constructor = targetClass.getDeclaredConstructor(String.class, Integer.class, String.class, String.class, String.class);constructor.setAccessible(true);T object = constructor.newInstance(name, Integer.parseInt(age), image, gender, job);list.add(object);}} catch (Exception e) {e.printStackTrace();}return list;}}

以下详细解释加载并解析emp.xml部分的代码

  1. 加载XML文件
String file = this.getClass().getClassLoader().getResource("emp.xml").getFile();

this.getClass().getClassLoader():获取当前类的类加载器。类加载器负责加载类文件,但在这里它的作用是通过getResource方法查找资源文件。
getResource("emp.xml"):通过类加载器查找名为emp.xml的资源文件。这个文件通常位于项目的resources目录下(如果是基于Maven或Gradle的项目结构)。getResource方法会返回一个URL对象,表示资源文件的路径
.getFile():从URL对象中提取文件路径字符串。这个路径可能是相对路径或绝对路径,具体取决于运行环境。例如,在某些情况下,它可能会返回类似file:/path/to/emp.xml这样的路径。
2. 打印文件路径

System.out.println(file);

这行代码将打印出emp.xml文件的路径。这通常用于调试,帮助开发者确认文件是否被正确加载。
3. 解析XML文件

List<Emp> empList = XmlParserUtils.parse(file, Emp.class);

XmlParserUtils.parse(file, Emp.class):这是一个工具方法,用于解析XML文件并将解析结果转换为指定类的对象列表。具体实现细节取决于XmlParserUtils类的定义,但通常会涉及以下步骤:
读取XML文件内容:使用文件路径file打开并读取emp.xml文件的内容。
解析XML:使用XML解析技术(如DOM、SAX或JAXB)解析XML文件。解析器会根据XML文件的结构和内容提取数据。
映射到Java对象:将解析出的数据映射到Emp类的实例中。Emp.class指定了目标类的类型,解析器会根据Emp类的字段和XML的结构进行数据绑定。
返回对象列表:最终返回一个包含Emp对象的列表empList。
4. Emp类的作用
Emp类是这段代码中提到的一个Java类,它应该是用来表示emp.xml文件中定义的员工信息的。例如:

public class Emp {private String name;private int age;private String department;// Getters and Setters
}

XML文件中可能包含类似以下结构的内容:

<employees><emp><name>John Doe</name><age>30</age><department>HR</department></emp><emp><name>Jane Smith</name><age>25</age><department>IT</department></emp>
</employees>

解析器会根据XML的结构将每个元素映射为一个Emp对象,并将这些对象存储在empList列表中。
5. 总结
这段代码的主要作用是:
通过类加载器加载emp.xml文件并获取其路径。
使用XmlParserUtils.parse方法解析XML文件,并将解析结果转换为Emp对象列表。
打印文件路径以确认文件被正确加载。
这种代码模式在处理基于XML配置或数据存储的场景中非常常见,例如加载配置文件或解析数据文件。

EmpController

package com.itheima.controller;import com.itheima.pojo.Emp;
import com.itheima.pojo.Result;
import com.itheima.utils.XmlParserUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
public class EmpController {@RequestMapping("/listEmp")public Result list(){//1. 加载并解析emp.xmlString file = this.getClass().getClassLoader().getResource("emp.xml").getFile();System.out.println(file);List<Emp> empList = XmlParserUtils.parse(file, Emp.class);//2. 对数据进行转换处理 - gender, jobempList.stream().forEach(emp -> {//处理 gender 1: 男, 2: 女String gender = emp.getGender();if("1".equals(gender)){emp.setGender("男");}else if("2".equals(gender)){emp.setGender("女");}//处理job - 1: 讲师, 2: 班主任 , 3: 就业指导String job = emp.getJob();if("1".equals(job)){emp.setJob("讲师");}else if("2".equals(job)){emp.setJob("班主任");}else if("3".equals(job)){emp.setJob("就业指导");}});//3. 响应数据return Result.success(empList);}}
http://www.dtcms.com/a/268618.html

相关文章:

  • NLP:文本特征处理和回译数据增强法
  • Mac-右键用 VS Code 打开文件夹
  • 【Echarts】“折线+柱状”实现双图表-家庭用电量可视化【文章附完整代码】
  • 泛微虚拟视图-数据虚拟化集成
  • 从库函数到API接口,深挖不同语言背后的“封装”与“调用”思想
  • pytest通过pytest_runtest_makereport添加失败截图到Allure报告中
  • 常见问题与最佳实践——AI教你学Docker
  • 1-Kafka介绍及常见应用场景
  • 学习基于springboot秒杀系统-环境配置(接口封装,mybatis,mysql,redis(Linux))
  • 2025年全国青少年信息素养大赛图形化(Scratch)编程小学低年级组初赛样题答案+解析
  • 登山第二十六梯:单目3D检测一切——一只眼看世界
  • 【C++开源库使用】使用libcurl开源库发送url请求(http请求)去下载用户头像文件(附完整源码)
  • 【R语言】 在读取 CSV 或 Excel 文件时的标准输出
  • 自定义简单线性回归模型
  • 【AI大模型】神经网络反向传播:核心原理与完整实现
  • 电脑电压过高的影响与风险分析
  • 轨迹优化 | 基于激光雷达的欧氏距离场ESDF地图构建(附ROS C++仿真)
  • 回溯题解——子集【LeetCode】二进制枚举法
  • ssh: Could not resolve hostname d: Temporary failure in name resolution
  • 从依赖地狱到依赖天堂PNPM
  • 01、通过内网穿透工具把家中闲置电脑变成在线服务器
  • C盘瘦身 -- 虚拟内存文件 pagefile.sys
  • (六)PS识别:源数据分析- 挖掘图像的 “元语言”技术实现
  • python list去重
  • 【Behavior Tree】-- 行为树AI逻辑实现- Unity 游戏引擎实现
  • Docker 将镜像打成压缩包将压缩包传到服务器运行
  • 物联网技术的关键技术与区块链发展趋势的深度融合分析
  • Java SE与Java EE使用方法及组件封装指南
  • 安卓10.0系统修改定制化_____安卓9与安卓10系统文件差异 有关定制选项修改差异
  • Java 并发编程中的同步工具类全面解析