当前位置: 首页 > 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.lryc.cn/news/582086.html

相关文章:

  • 国产CAD皇冠CAD(CrownCAD)建模教程:哈雷摩托车发动机零件
  • [论文阅读] 人工智能 | 读懂Meta-Fair:让LLM摆脱偏见的自动化测试新方法
  • 【mini-spring】【更新中】第一章 IOC与Bean源码及思路解析
  • IT 与动环一体化运维的技术融合实践
  • MySQL Galera Cluster企业级部署
  • 力扣_链表(前后指针)_python版本
  • verilog中timescale指令的使用
  • 零知开源——STM32F4结合BMP581气压传感器实现ST7789中文显示教程
  • centos stream 10设置本地网络
  • 沙箱逃逸漏洞
  • 音频信号的预加重:提升语音清晰度
  • OpenCV 人脸分析------面部关键点检测类cv::face::FacemarkLBF
  • 使用ansible的角色实现批量安装nginx服务
  • 图像处理基础:镜像、缩放与矫正
  • 《声音的变形记:Web Audio API的实时特效法则》
  • 【论文撰写】如何把AI生成的文本公式复制在word中,完整的复制公式,拷贝豆包生成的公式
  • 音频流媒体技术选型指南:从PCM到Opus的实战经验
  • 在linux 上使用tcpdump监听http 端口的报文并分析
  • C++之string类的实现代码及其详解(中)
  • 项目中多个模块都需要引入外部jar
  • Spring Boot项目初始化:官方与阿里云服务地址对比指南
  • ExcelJS 完全指南:专业级Excel导出解决方案
  • vue3 字符包含
  • 暑假Python基础整理 -- Python语言基础
  • 初识Neo4j之Cypher(三)
  • 企业级视频链接的技术实现与安全性策略
  • [免费]基于Python豆瓣电影数据分析及可视化系统(Flask+echarts+pandas)【论文+源码+SQL脚本】
  • 部署NextCloud AIO + Frp + nginx-proxy-manager内网穿透私有云服务
  • 微算法科技(NASDAQ: MLGO)探索Grover量子搜索算法,利用量子叠加和干涉原理,实现在无序数据库中快速定位目标信息的效果。
  • web网页开发,在线%ctf管理%系统,基于html,css,webform,asp.net mvc, sqlserver, mysql