JavaWeb开发-05-SpringBootWeb请求响应



一.请求
1.Postman



2.简单参数


package com.wjh.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;/** 测试请求参数接受*/
@RestController
public class RequestController {// //原始方式
// @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!";}
}
GET请求:
POST请求:
package com.wjh.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;/** 测试请求参数接受*/
@RestController
public class RequestController {// //原始方式
// @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(@RequestParam(name = "name") String username, Integer age){System.out.println(username + ":" + age + ":");return "OK!";}
}




3.实体参数
创建一个User类:
package com.wjh.pojo;public class User {private String name;private Integer age;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;}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", age=" + age +'}';}
}


创建一个Address类
package com.wjh.pojo;public class Address {private String province; //省private String city; //市public String getProvince() {return province;}public void setProvince(String province) {this.province = province;}public String getCity() {return city;}public void setCity(String city) {this.city = city;}@Overridepublic String toString() {return "Address{" +"province='" + province + '\'' +", city='" + city + '\'' +'}';}
}
package com.wjh.controller;import com.wjh.pojo.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;/** 测试请求参数接受*/
@RestController
public class RequestController {// //原始方式
// @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(@RequestParam(name = "name", required = false) String username, Integer age){
// System.out.println(username + ":" + age + ":");
// return "OK!";
// }//2.实体参http://localhost:8080/simpleParam数@RequestMapping("/simplePojo")public String simplePojo(User user){System.out.println(user);System.out.println("姓名:" + user.getName());System.out.println("年龄:" + user.getAge());System.out.println("省份:" + user.getAddress().getProvince());System.out.println("城市:" + user.getAddress().getCity());return "YES OK!";}
}


4.数组集合参数
//3.数组集合参数@RequestMapping("/arrayParam")public String arrayParam(String[] hobby){System.out.println(hobby);System.out.println(Arrays.toString(hobby));return "YES OK!";}


//集合参数@RequestMapping("/listParam")public String listParam(@RequestParam List<String> hobby){System.out.println(hobby);return "YES OK!";}


5.日期参数


6.Json参数


//6.json参数@RequestMapping("/jsonParam")//@DateTimeFormat -> 指定时间传递的参数格式public String jsonParam(@RequestBody User user){System.out.println(user);return "YES OK!";}
{"name": "小黑子","age": 18,"address": {"province": "江西","city": "南昌"}
}
7.路径参数




package com.wjh.controller;import com.wjh.pojo.User;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpServletRequest;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;/** 测试请求参数接受*/
@RestController
public class RequestController {// //原始方式
// @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 ("/simpleParamF")public String simpleParamF(@RequestParam(name = "name", required = false) String username, Integer age){System.out.println(username + ":" + age + ":");return "OK!";}//2.实体参http://localhost:8080/simpleParam数@RequestMapping("/simplePojo")public String simplePojo(User user){System.out.println(user);System.out.println("姓名:" + user.getName());System.out.println("年龄:" + user.getAge());System.out.println("省份:" + user.getAddress().getProvince());System.out.println("城市:" + user.getAddress().getCity());return "YES OK!";}//3.数组参数@RequestMapping("/arrayParam")public String arrayParam(String[] hobby){System.out.println(hobby);System.out.println(Arrays.toString(hobby));return "YES OK!";}//4.集合参数@RequestMapping("/listParam")public String listParam(@RequestParam List<String> hobby){System.out.println(hobby);return "YES OK!";}//5.日期时间参数//http://localhost:8080/dateParam?updateTime=2023-09-18 09:12:30@RequestMapping("/dateParam")//@DateTimeFormat -> 指定时间传递的参数格式public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updateTime){System.out.println(updateTime);return "YES OK!";}//6.json参数@RequestMapping("/jsonParam")//@DateTimeFormat -> 指定时间传递的参数格式public String jsonParam(@RequestBody User user){System.out.println(user);return "YES OK!";}//7.路径参数@RequestMapping("/path/{id}")//@DateTimeFormat -> 指定时间传递的参数格式public String pathParam(@PathVariable Integer id){System.out.println(id);return "YES OK!";}//8.路径参数//@DateTimeFormat -> 指定时间传递的参数格式@RequestMapping("/path/{id}/{name}")public String pathParam2(@PathVariable Integer id, @PathVariable String name){System.out.println(id);System.out.println(name);return "YES OK!";}}
二.响应
package com.wjh.controller;import com.wjh.pojo.Address;
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 word!");return "Hello word!";}@RequestMapping("/getAddress")public Address getAddress(){Address address = new Address();address.setProvince("江西");address.setCity("南昌");System.out.println(address.getProvince() + "\n" + address.getCity());return address;}@RequestMapping("/listAddress")public List<Address> listAddress(){List<Address> list = new ArrayList<>();Address address = new Address();address.setProvince("江西");address.setCity("南昌");Address address2 = new Address();address2.setProvince("广东");address2.setCity("深圳");list.add(address);list.add(address2);for (Address lists: list) {System.out.println(lists);}return list;}}




package com.wjh.pojo;/*** 统一响应结果封装类*/
public class Result {private Integer code ;//1 成功 , 0 失败private String msg; //提示信息private Object data; //数据 datapublic 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 +'}';}
}




结果是一样的,提高了实用性
Springboot项目的静态资源(html,css,js等前端资源)默认存放目录为:
classpath:/static 、 classpath:/public、 classpath:/resources
package com.wjh.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;}}
package com.wjh.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 + '\'' +'}';}
}
package com.wjh.controller;import com.wjh.pojo.Emp;
import com.wjh.pojo.Result;
import com.wjh.utils.XmlParserUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
public class EmoController {@RequestMapping("/listEmp")public Result list(){//1.加载并解析emp.xml文件//String file = "D:\\JavaWeb2023\\java_web_project\\springboot-web-req-resp\\src\\main\\resources\\emp.xml";String 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 -> {//处理gander 1: 男, 2: 女String gander = emp.getGender();if("1".equals(gander)){emp.setGender("男");}else if("2".equals(gander)){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);}
}


三.分层解耦
1.三层架构

package com.wjh.controller;import com.wjh.pojo.Emp;
import com.wjh.pojo.Result;
import com.wjh.service.EmpService;
import com.wjh.service.impl.EmpServiceA;
import com.wjh.utils.XmlParserUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
public class EmoController {private EmpService empService = new EmpServiceA();@RequestMapping("/listEmp")public Result list() {//1.调用service,获取数据List<Emp> empList = empService.listEmp();//3.响应数据return Result.success(empList);}
}// //1.加载并解析emp.xml文件
//
// //String file = "D:\\JavaWeb2023\\java_web_project\\springboot-web-req-resp\\src\\main\\resources\\emp.xml";
// String file = this.getClass().getClassLoader().getResource("emp.xml").getFile();
// System.out.println(file);
// List<Emp> empList = XmlParserUtils.parse(file, Emp.class);
//
// //2.对数据进行转换处理 -gender, job
// empList.stream().forEach(emp -> {
// //处理gander 1: 男, 2: 女
// String gander = emp.getGender();
// if("1".equals(gander)){
// emp.setGender("男");
// }else if("2".equals(gander)){
// 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("就业指导");
// }
//
// });

package com.wjh.Dao.impl;import com.wjh.Dao.EmpDao;
import com.wjh.pojo.Emp;
import com.wjh.utils.XmlParserUtils;import java.util.List;public class EmoDaoA implements EmpDao {@Overridepublic List<Emp> listEmp() {String file = this.getClass().getClassLoader().getResource("emp.xml").getFile();System.out.println(file);List<Emp> empList = XmlParserUtils.parse(file, Emp.class);return empList;}
}

package com.wjh.Dao;import com.wjh.pojo.Emp;import java.util.List;public interface EmpDao {//获取员工列表数据public List<Emp> listEmp();
}

package com.wjh.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 + '\'' +'}';}
}

package com.wjh.service.impl;import com.wjh.Dao.EmpDao;
import com.wjh.Dao.impl.EmoDaoA;
import com.wjh.pojo.Emp;
import com.wjh.service.EmpService;import java.util.List;public class EmpServiceA implements EmpService {private EmpDao empDao = new EmoDaoA();@Overridepublic List<Emp> listEmp() {//1.调用dao,获取数据List<Emp> empList = empDao.listEmp();//2.对数据进行转换处理 -gender, jobempList.stream().forEach(emp -> {//处理gander 1: 男, 2: 女String gander = emp.getGender();if("1".equals(gander)){emp.setGender("男");}else if("2".equals(gander)){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("就业指导");}});return empList;}
}

package com.wjh.service;import com.wjh.pojo.Emp;import java.util.List;public interface EmpService {//获取员工列表public List<Emp> listEmp();}

2.分层解耦
控制反转:
Inversion Of Control,简称IOC。对象的创建控制权由程序自身转移到外部(容器),这种思想称为控制反转。
依赖注入:Dependency Injection,简称DI。容器为应用程序提供运行时,所依赖的资源,称之为依赖注入。
Bean对象:IOC容器中创建、管理的对象,称之为bean。
3.IOC & DI入门

@Component //将当前类交给IOC容器管理,成为IOC容器中的bean
@Autowired //运行时,IOC容器会提供该类型的bean对象,并复制给改变量 - 依赖注入




4.IOC详解


5.DI详解
@Primary --> 在又多个相同bean情况下,想用的实现方法上加这个注解
@Qualifier --> @Qualifier("A") 或者@Qualifier ("B")
@Resource --> 不属于springboot,属于JDK当中的,加在private EmpDao empDao 上
相关文章:
JavaWeb开发-05-SpringBootWeb请求响应
一.请求 1.Postman 2.简单参数 package com.wjh.controller;import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;/** 测试请求参数接受*/ R…...
Ubuntu下载
参考文档: 镜像文件:VMware下安装ubuntu 16.04(全步骤)_vmwaubuntu-16.04.4-desktop-amd64.iso_ST0new的博客-CSDN博客 vmware tools使用安装:VMware——VMware Tools的介绍及安装方法_William.csj的博客-CSDN博客 …...
Vue 的组件加载顺序和渲染顺序
1、结论先行 组件的加载顺序是自上而下的,也就是先加载父组件,再递归地加载其所有的子组件。 而组件渲染顺序是按照深度优先遍历的方式,也就是先渲染最深层的子组件,再依次向上渲染其父组件。 2、案例 下面是一个简单的示例代…...
leetcode Top100(17)矩阵置零
给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2: 输入&…...
论文精读(2)—基于稀疏奖励强化学习的机械臂运动规划算法设计与实现(内含实现机器人控制的方法)
目录 1.作者提出的问题及解决方向 2.延深-用如何用强化学习对机器人进行控制 2.1思路 2.2DQN和DDPG在机器人控制中的应用 3.解决方案 3.1思路 3.2实验 3.3创新点 4.展望 1.作者提出的问题及解决方向 目的:使机械臂在非结构化环境下实现端到端的自主学习控制…...
快速安装keepalive
快速安装keepalive #安装 yum install keepalived -y# 查看版本: rpm -q -a keepalived#修改配置文件 vim /etc/keepalived.conf虚拟 ip :随意选一个,不被占用的ip即可。...
nginx实现反向代理实例
1 前言 1.1 演示内容 在服务器上访问nginx端口然后跳转到tomcat服务器 1.2 前提条件 前提条件:利用docker安装好nginx、tomcat、jdk8(tomcat运行需要jdk环境) 只演示docker安装tomcat: 默认拉取最新版tomcat docker pull t…...
使用Freemarker填充模板导出复杂Excel,其实很简单哒!
文章目录 1. 需求分析2. 对象生成3. 列表插值4. 另存xml格式化5. ftl修改6. 程序转化7. 犯的错误8. 总结 1. 需求分析 类似这样的一个表格 我们需要从数据库中查询对应的数据,将其汇总进该表格,并且可能还需要复制表格项,我这个案例中没有&a…...
windows环境下安装logstash同步数据,注册系统服务
windows环境下安装logstash同步数据,注册系统服务 此方法适用于Windows环境,同一个配置文件配置多个管道,并且配置系统服务,防止程序被杀进程 一、安装logstash (1)下载压缩包,解压后修改con…...
java服务内存说明及配置详解
java进程内存 JVM内存分布图: 【java进程内存】【堆外内存】 【jvm堆内存】 【堆外内存】 【Metaspace】 【Direct Memory】【JNI Memory】【code_cache】 … 堆外内存泄漏的排查在于【本地内存(Native Memory)】【Direct Memory】【JNI Memory】 一般…...
Mybatis-MyBatis的缓存
Mybatis-MyBatis的缓存 一、MyBatis的一级缓存二、MyBatis的二级缓存二级缓存的相关配置 三、MyBatis缓存查询的顺序 一、MyBatis的一级缓存 一级缓存是SqlSession级别的,通过同一个SqlSession查询的数据会被缓存,下次查询相同的数据,就 会从…...
计算机组成原理之硬件的基本组成,深入介绍两大计算机结构体系,从底层出发认识计算机。
大家好,欢迎阅读《计算机组成原理》的系列文章,本系列文章主要的内容是从零学习计算机组成原理,内容通俗易懂,大家好好学习吧!!! 更多的优质内容,请点击以下链接查看哦~~ ↓ ↓ ↓ …...
二十五、MySQL事务的四大特性和常见的并发事务问题
1、事务的四大特性 2、常见的并发事务问题 (1)并发事务问题分类: (2)脏读: 一个事务正在对一条记录做修改,在这个事务完成并提交前,这条记录的数据就处于不一致的状态;…...
辨析常见的医学数据分析(相关性分析回归分析)
目录 1 常见的三种分类结果? 2 什么是相关性分析? 相关性分析的结果怎么看? 3 什么是回归分析? 1)前提 2)常见的回归模型 4 对于存在对照组实验的医学病例如何分析? 1)卡方检验…...
SpringBoot项目中只执行一次的任务写法
SpringBoot项目中只执行一次的任务写法 有时候我们需要进行初始化工作,就说明只要进行一次的工作,那么,在Springboot项目中如何做到任务只进行一次呢 利用定时任务 在Spring Boot项目中,你可以使用Spring框架提供的Scheduled注解…...
TCK、TMS、TDI、TDO的含义
这四个信号是JTAG(Joint Test Action Group)界面的一部分。JTAG是一种用于测试和验证集成电路和印刷电路板的技术,也用于进行设备编程和调试。这四个信号分别是: TCK (Test Clock): 意义:测试时钟ÿ…...
R语言RSTAN MCMC:NUTS采样算法用LASSO 构建贝叶斯线性回归模型分析职业声望数据...
全文链接:http://tecdat.cn/?p24456 如果你正在进行统计分析:想要加一些先验信息,最终你想要的是预测。所以你决定使用贝叶斯(点击文末“阅读原文”获取完整代码数据)。 相关视频 但是,你没有共轭先验。你…...
【PowerShell】PowerShell的Core版本的额外配置
在PowerShell 7.1 安装完成后,默认情况下打开PowerShell 会直接进入到系统内置的PowerShell,如果希望通过远程连接或者PowerShell Web Access 进入到PowerShell 7环境的界面,就需要进行环境的再配置才能实现PowerShell 7.1 的环境连接。需要为外部的环境提供连接的话需要按照…...
数据结构----链式栈
目录 前言 链式栈 操作方式 1.存储结构 2.初始化 3.创建节点 4.判断是否满栈 5.判断是否空栈 6.入栈 7.出栈 8.获取栈顶元素 9.遍历栈 10.清空栈 完整代码 前言 前面我们学习过了数组栈的相关方法,(链接:线性表-----栈(栈…...
实在智能携手40+央企,探索财务大模型及数智化实践与应用
“这次培训给我一个最大的感触就是,过去以为AI智能化、大模型技术是很高深的事情。但现在,我们通过RPA等数字化工具,自主根据自己的工作岗位,完成业务自动化流程的开发和设计。AI技术没有想象中的那么难入门。” 这是一位参加了“…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...

