Java Web-Request与Response
在 Java Web 开发中,Request 和 Response 是两个非常重要的对象,用于在客户端和服务器之间进行请求和响应的处理,以下是详细介绍:
Request(请求对象)
Request继承体系
在 Java Web 开发中,通常涉及到的 request 对象主要是指 HttpServletRequest继承体系如下:
顶层接口:java.util.EventListener
虽然它不是直接与 HttpServletRequest 功能相关的父类,但从 Java 事件监听体系角度来说,它是很多相关类间接实现的接口。EventListener 是所有事件监听器接口必须实现的标记接口,不过在 HttpServletRequest 的直接继承体系中并不直接体现它的影响。
直接相关继承体系
javax.servlet.ServletRequest接口- 这是一个核心的基础接口,定义了所有 Servlet 请求对象必须实现的基本方法。这些方法提供了获取请求参数、属性、请求输入流等通用功能,使得 Servlet 能够处理客户端的请求数据。例如,
getParameter(String name)方法用于获取请求中的参数值。
- 这是一个核心的基础接口,定义了所有 Servlet 请求对象必须实现的基本方法。这些方法提供了获取请求参数、属性、请求输入流等通用功能,使得 Servlet 能够处理客户端的请求数据。例如,
javax.servlet.http.HttpServletRequest接口- 继承自
ServletRequest接口,专门针对 HTTP 请求进行扩展。由于 HTTP 协议是 Web 应用中最常用的协议,HttpServletRequest接口添加了许多与 HTTP 协议相关的方法。比如,getMethod()可以获取 HTTP 请求的方法(如 GET、POST 等);getHeader(String name)用于获取 HTTP 请求头信息。
- 继承自
- 具体实现类
- 在不同的 Servlet 容器(如 Tomcat、Jetty 等)中,会有具体的
HttpServletRequest实现类。以 Tomcat 为例,它的实现类是org.apache.catalina.connector.RequestFacade。这些实现类会实现HttpServletRequest接口定义的所有方法,完成具体的请求处理逻辑。当客户端发起请求时,Servlet 容器会创建该实现类的对象,并将其作为参数传递给 Servlet 的处理方法(如doGet、doPost),让开发者可以通过这个对象来处理请求。
- 在不同的 Servlet 容器(如 Tomcat、Jetty 等)中,会有具体的
需要注意的是,从 Servlet 4.0 开始,包名从 javax.servlet 变更为 jakarta.servlet,所以对应的接口变为 jakarta.servlet.ServletRequest 和 jakarta.servlet.http.HttpServletRequest,但继承体系的逻辑结构保持不变。
- 概念:
Request对象封装了客户端发送给服务器的请求信息,包括请求头、请求参数、请求方法等。在 Servlet 开发中,常见的实现类是HttpServletRequest,它提供了一系列方法来获取请求相关的数据。 - 主要方法及作用
获取请求参数 getParameter(String name):根据参数名获取单个参数值,如String username = request.getParameter("username");,常用于获取表单提交的单个数据。getParameterValues(String name):获取指定参数名的所有值(适用于复选框等会提交多个值的情况),返回一个字符串数组。getParameterMap():获取所有请求参数,返回一个Map<String, String[]>,其中键是参数名,值是参数值数组。

- 获取请求头信息:
getHeader(String name)用于根据头名称获取请求头的值,例如String userAgent = request.getHeader("User - Agent");可获取客户端浏览器信息。 - 获取请求方法:
getMethod()方法返回客户端发送请求的 HTTP 方法,如 "GET"、"POST" 等。 - 解决乱码问题:对于 POST 请求,可通过
setCharacterEncoding("UTF - 8");设置字符编码来解决参数乱码问题。对于 GET 请求,有时需要额外的编码转换操作。 - 请求转发:
getRequestDispatcher(String path).forward(request, response);可实现请求转发,将当前请求转发到另一个资源(Servlet、JSP 等),转发过程在服务器端完成,客户端地址栏不变。 -
package com.itheima.web;import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.BufferedReader; import java.io.IOException;import static javax.servlet.http.HttpUtils.getRequestURL;@WebServlet("/req1") public class RequestDemo1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//String getMethod() 获取请求方式:GETString method = req.getMethod();System.out.println("method:" + method);//GET//String getContextPath():获取虚拟目录(项目访问路径):/webDemoString contextPath = req.getContextPath();System.out.println(contextPath);//StringBuffer getRequestURL(): 获取URL(统一资源定位符):http://localhost:8080/webDemo/req1StringBuffer requestURL = req.getRequestURL();System.out.println(requestURL.toString());//String getReQuestURI():获取URI(统一资源标识符):/webDemo/req1String requestURI = req.getRequestURI();System.out.println(requestURI);//String getQueryString():获取请求参数(GET方式):username=zhangsanString queryString = req.getQueryString();System.out.println(queryString);//-----------//获取请求头:user-agent:浏览器的版本信息String agent = req.getHeader("user-agent");System.out.println(agent);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 获取Post请求信息用的是IO流,最后打印信息BufferedReader reader = req.getReader();String line = reader.readLine();System.out.println(line);}}
Response(响应对象)
- 概念:
Response对象用于封装服务器对客户端请求的响应信息,服务器通过它向客户端发送响应状态码、响应头和响应体等内容。在 Servlet 开发中,常见的实现类是HttpServletResponse。 - 主要方法及作用
- 设置响应状态码:
setStatus(int sc)用于设置 HTTP 响应状态码,如response.setStatus(200);表示请求成功,response.setStatus(404);表示资源未找到。 - 设置响应头:
setHeader(String name, String value)用于设置响应头字段,如response.setHeader("Content - Type", "text/html;charset=UTF - 8");设置响应内容类型和字符编码;response.setHeader("Location", "new - url");配合 302 状态码用于重定向。 - 重定向:
sendRedirect(String location)方法可实现重定向功能,它会设置状态码为 302,并设置Location响应头,让客户端重新请求指定的 URL,客户端地址栏会改变。 - 获取输出流
getWriter():获取字符输出流PrintWriter,用于向客户端输出文本数据,如 HTML、JSON 等。getOutputStream():获取字节输出流ServletOutputStream,用于输出二进制数据,如图片、文件等。但要注意,getWriter()和getOutputStream()不能同时使用。
- 设置响应状态码:
如何使用Request和Response对象
在 Java Web 开发中,HttpServletRequest 和 HttpServletResponse 对象是处理客户端请求和发送服务器响应的核心工具。以下详细介绍它们的常见使用场景和示例代码:
1. 获取请求参数
使用 HttpServletRequest 对象可以方便地获取客户端请求中携带的参数。
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/paramDemo")
public class ParamDemoServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 获取单个参数String username = request.getParameter("username");// 获取多个参数(如复选框)String[] hobbies = request.getParameterValues("hobby");response.setContentType("text/html;charset=UTF-8");response.getWriter().println("用户名: " + username);if (hobbies != null) {response.getWriter().println("爱好: ");for (String hobby : hobbies) {response.getWriter().println(hobby);}}}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 解决POST请求中文乱码问题request.setCharacterEncoding("UTF-8");doGet(request, response);}
}
2. 获取请求头信息
可以使用 HttpServletRequest 对象获取客户端请求头中的各种信息。
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/headerDemo")
public class HeaderDemoServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 获取指定请求头String userAgent = request.getHeader("User-Agent");response.setContentType("text/html;charset=UTF-8");response.getWriter().println("User-Agent: " + userAgent);}
}
3. 请求转发
请求转发是服务器内部的一种资源跳转方式,使用 RequestDispatcher 实现。
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/forwardDemo")
public class ForwardDemoServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 设置请求属性request.setAttribute("message", "这是转发传递的消息");// 获取RequestDispatcher对象request.getRequestDispatcher("/targetServlet").forward(request, response);}
}@WebServlet("/targetServlet")
public class TargetServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 获取请求属性String message = (String) request.getAttribute("message");response.setContentType("text/html;charset=UTF-8");response.getWriter().println("接收到的消息: " + message);}
}
4. 重定向
重定向会让客户端重新向新的 URL 发送请求,使用 HttpServletResponse 的 sendRedirect 方法。
package com.itheima.web;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;//本类演示重定向@WebServlet("/resp1")
public class ResponseDemo1 extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("resp1...");// 重定向//第一种方法//1. 设置响应状态码 302resp.setStatus (302);//2. 设置响应头 Locationresp.setHeader ("Location","/webDemo/resp2");
//第二种方法// 简化方式完成重定向resp.sendRedirect ("/webDemo/resp2");}
}
5. 设置响应头和响应体
使用 HttpServletResponse 对象可以设置响应头信息和向客户端输出响应体内容。
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/responseDemo")
public class ResponseDemoServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 设置响应头response.setContentType("text/html;charset=UTF-8");response.setHeader("Cache-Control", "no-cache");// 获取字符输出流,输出响应体response.getWriter().println("<html><body>");response.getWriter().println("<h1>这是一个响应示例</h1>");response.getWriter().println("</body></html>");}
}
Response响应字节数据
发送字节数据
当需要发送二进制数据,如图片、音频、视频等时,使用 ServletOutputStream 来发送字节数据。以下是一个简单的示例,展示如何从服务器读取图片文件并将其作为字节数据发送给客户端:
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;@WebServlet("/sendByteData")
public class SendByteDataServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 设置响应内容类型为图片类型response.setContentType("image/jpeg");// 获取要发送的图片文件的输入流InputStream inputStream = new FileInputStream("path/to/your/image.jpg");// 获取响应的输出流OutputStream outputStream = response.getOutputStream();// 定义缓冲区byte[] buffer = new byte[1024];int bytesRead;// 从输入流读取数据并写入输出流while ((bytesRead = inputStream.read(buffer)) != -1) {outputStream.write(buffer, 0, bytesRead);}// 关闭输入流inputStream.close();}
}
代码解释:
- 设置响应内容类型:通过
response.setContentType("image/jpeg")设置响应内容类型为 JPEG 图片类型,让客户端知道接收到的是图片数据。 - 获取输入流和输出流:使用
FileInputStream打开要发送的图片文件,获取文件的输入流;通过response.getOutputStream()获取响应的输出流,用于将数据发送给客户端。 - 数据传输:使用一个缓冲区
byte[] buffer从输入流读取数据,并将其写入输出流,直到文件读取完毕。 - 关闭输入流:操作完成后,关闭输入流以释放资源。
Response响应字符数据
发送字符数据
当需要发送文本数据,如 HTML、JSON、纯文本等时,使用 PrintWriter 来发送字符数据。以下是一个示例,展示如何向客户端发送一段 HTML 内容:
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;@WebServlet("/sendCharData")
public class SendCharDataServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 设置响应内容类型和字符编码response.setContentType("text/html;charset=UTF-8");// 获取响应的字符输出流PrintWriter writer = response.getWriter();// 向输出流写入 HTML 内容writer.println("<html>");writer.println("<head><title>字符数据响应示例</title></head>");writer.println("<body>");writer.println("<h1>这是一段 HTML 内容</h1>");writer.println("</body>");writer.println("</html>");// 刷新输出流writer.flush();// 关闭输出流writer.close();}
}
代码解释:
- 设置响应内容类型和字符编码:通过
response.setContentType("text/html;charset=UTF-8")设置响应内容类型为 HTML 文本,并指定字符编码为 UTF - 8,确保中文等字符能正确显示。 - 获取字符输出流:使用
response.getWriter()获取响应的字符输出流PrintWriter。 - 写入数据:使用
writer.println()方法向输出流写入 HTML 内容。 - 刷新和关闭输出流:调用
writer.flush()方法将缓冲区的数据刷新到客户端,最后关闭输出流以释放资源。
需要注意的是,getOutputStream() 和 getWriter() 方法不能同时使用,否则会抛出 IllegalStateException 异常。
通过以上示例,你可以了解到 HttpServletRequest 和 HttpServletResponse 在不同场景下的基本使用方法,它们是 Java Web 开发中处理请求和响应的基础。
相关文章:
Java Web-Request与Response
在 Java Web 开发中,Request 和 Response 是两个非常重要的对象,用于在客户端和服务器之间进行请求和响应的处理,以下是详细介绍: Request(请求对象) Request继承体系 在 Java Web 开发中,通…...
Spring AOP通知类型全解析:掌握方法执行前后的艺术
Spring的通知(Advice)类型主要有以下几种,它们都是在方法执行的不同阶段进行拦截和处理的一种机制: 1. 前置通知(Before Advice):在目标方法执行之前执行的通知。就像你吃饭前要先洗手一样&…...
(一)HTTP协议 :请求与响应
前言 爬虫需要基础知识,HTTP协议只是个开始,除此之外还有很多,我们慢慢来记录。 今天的HTTP协议,会有助于我们更好的了解网络。 一、什么是HTTP协议 (1)定义 HTTP(超文本传输协议ÿ…...
未初始化数据恢复全攻略
没有初始化概述 在日常使用电脑、硬盘、U盘等存储设备时,我们可能会遇到“没有初始化”的提示。这一情况通常发生在存储设备突然无法被系统正常识别或访问时,系统往往要求我们先进行初始化操作。然而,初始化操作意味着对存储设备进行格式化&…...
学习数据结构(1)算法复杂度
1.数据结构和算法 (1)数据结构是计算机存储、组织数据的方式,指相互之间存在⼀种或多种特定关系的数据元素的集合 (2)算法就是定义良好的计算过程,取一个或一组的值为输入,并产生出一个或一组…...
Github 2025-01-25Rust开源项目日报Top10
根据Github Trendings的统计,今日(2025-01-25统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10Python项目1Vue项目1JavaScript项目1Deno: 现代JavaScript和TypeScript运行时 创建周期:2118 天开发语言:Rust, JavaScript协议类型…...
免费GPU算力,不花钱部署DeepSeek-R1
在人工智能和大模型技术飞速发展的今天,越来越多的开发者和研究者希望能够亲自体验和微调大模型,以便更好地理解和应用这些先进的技术。然而,高昂的GPU算力成本往往成为了阻碍大家探索的瓶颈。幸运的是,腾讯云Cloud Studio提供了免…...
積分方程與簡單的泛函分析7.希爾伯特-施密特定理
1)def函數叫作"由核生成的(有源的)" 定义: 设 是定义在区域上的核函数。 对于函数,若存在函数使得, 则称函数是“由核生成的(有源的)”。 这里的直观理解是: 函数的“来源”可以通过核函数 与另一个函数的积分运算得到。 在积分方程理论中,这种表述常…...
2025年PHP面试宝典,技术总结。
面试是进入职场的第一道坎,因为我本身学校太一般的问题在面试中遇到了各种不爽,和那些高学历的相比自己真是信心大跌。我面试的方向是php开发工程师,主要做网站后台、APP接口等。下面是我这段时间总结的面试方面的常考常问的知识点࿰…...
网易Android开发面试题200道及参考答案 (上)
分析 Error 和 Exception 的区别 在 Java 编程中,Error 和 Exception 都继承自 Throwable 类,它们用于处理程序运行时出现的异常情况,但两者存在显著区别。 Error 通常表示系统级别的错误,是 Java 虚拟机(JVM)无法处理的严重问题,比如 OutOfMemoryError (内存溢出错误)…...
追剧记单词之:国色芳华与单词速记
●wretched adj. 恶劣的;悲惨的;不幸的;难过的 (不幸的)胜意出生于一个(恶劣的)家庭环境,嫁给王擎后依然过着(悲惨的)生活,她死后,牡丹…...
【科研建模】Pycaret自动机器学习框架使用流程及多分类项目实战案例详解
Pycaret自动机器学习框架使用流程及项目实战案例详解 1 Pycaret介绍2 安装及版本需求3 Pycaret自动机器学习框架使用流程3.1 Setup3.2 Compare Models3.3 Analyze Model3.4 Prediction3.5 Save Model4 多分类项目实战案例详解4.1 ✅ Setup4.2 ✅ Compare Models4.3 ✅ Experime…...
ICSE‘25 LLM Assistance for Memory Safety
不知道从什么时候开始,各大技术社区,技术群聊流行着 “用Rust重写!” ,放一张图(笑死… 这不, 随着大模型技术的流行,大家都在探索如何让大模型自动完成仓库级别(全程序)的代码重构,代码变换(Refactor&…...
【MQ】RabbitMq的可靠性保证
消息队列中的可靠性主要是分为三部分: 消息不丢失:确保消息从生产者发送到消费者消息不丢失消息不重复:确保消息不被重复消费消息顺序性:确保消费的顺序性 解决方案主要有以下几部分: 消息不丢失 生产者确认机制持久…...
基于SpringBoot+WebSocket的前后端连接,并接入文心一言大模型API
前言: 本片博客只讲述了操作的大致流程,具体实现步骤并不标准,请以参考为准。 本文前提:熟悉使用webSocket 如果大家还不了解什么是WebSocket,可以参考我的这篇博客: rWebSocket 详解:全双工…...
大数运算之C语言实现
一、 前言 在我们代码编程过程中,我们经常需要处理各种规模的数值。从日常工作中的一些简单算术在到科学研究中的复杂计算,数字无处不在。然而,当数值变的异常庞大时,就需要用到大数运算来进行实现。本文我们将介绍大数运算的基本…...
安装最小化的CentOS7后,执行yum命令报错Could not resolve host mirrorlist.centos.org; 未知的错误
文章目录 安装最小化的CentOS7后,执行yum命令报错"Could not resolve host: mirrorlist.centos.org; 未知的错误"错误解决方案: 安装最小化的CentOS7后,执行yum命令报错"Could not resolve host: mirrorlist.centos.org; 未知…...
Avalonia+ReactiveUI跨平台路由:打造丝滑UI交互的奇幻冒险
一、引言 在当今数字化时代,跨平台应用开发已成为大势所趋。开发者们迫切需要一种高效、灵活的方式,能够让应用程序在不同操作系统上无缝运行,为用户提供一致的体验。Avalonia 和 ReactiveUI 的组合,宛如一对天作之合的舞者&…...
Java导出通过Word模板导出docx文件并通过QQ邮箱发送
一、创建Word模板 {{company}}{{Date}}服务器运行情况报告一、服务器:总告警次数:{{ServerTotal}} 服务器IP:{{IPA}},总共告警次数:{{ServerATotal}} 服务器IP:{{IPB}},总共告警次数:{{ServerBTotal}} 服务器IP:{{IPC}}&#x…...
Linux系统编程:进程状态和进程优先级/nice
目录 一,相对于OS的进程状态 1.1运行状态 1.2阻塞状态 1.3挂起状态 二,并发执行与进程切换 2.1,CPU并发执行 2.2进程切换 三,Linux内核管理进程状态的方法 3.1查看进程状态 3.2R状态 3.3S状态 3.4D状态 3.5T状态 3.6X状态 3.7Z状态 3.8孤儿进程 四,进程优先级 …...
JavaScript系列(40)--虚拟DOM实现详解
JavaScript虚拟DOM实现详解 🌳 今天,让我们深入了解虚拟DOM的实现原理,这是现代前端框架中非常重要的一个概念,它通过最小化实际DOM操作来提升应用性能。 虚拟DOM基础概念 🌟 💡 小知识:虚拟D…...
SpringAI基于API对大语言模型调用
引言 随着人工智能技术的迅猛发展,大型语言模型(LLM)在各个领域的应用越来越广泛。SpringAI作为一个旨在简化AI集成的框架,为开发者提供了高效、便捷的工具来连接和调用这些大模型。本文将详细探讨如何使用SpringAI整合通义千问等…...
0 基础学运维:解锁 K8s 云计算运维工程师成长密码
前言:作为一个过来人,我曾站在技术的门槛之外,连电脑运行内存和内存空间都傻傻分不清,完完全全的零基础。但如今,我已成长为一名资深的k8s云计算运维工程师。回顾这段历程,我深知踏上这条技术之路的艰辛与不…...
在 vscode + cmake + GNU 工具链的基础上配置 JLINK
安装 JLINK JLINK 官网链接 下载安装后找到安装路径下的可执行文件 将此路径添加到环境变量的 Path 中。 创建 JFlash 项目 打开 JFlash,选择新建项目 选择单片机型号 在弹出的窗口中搜索单片机 其他参数根据实际情况填写 新建完成: 接下来设置…...
【全栈】SprintBoot+vue3迷你商城(9)
【全栈】SprintBootvue3迷你商城(9) 往期的文章都在这里啦,大家有兴趣可以看一下 后端部分: 【全栈】SprintBootvue3迷你商城(1) 【全栈】SprintBootvue3迷你商城(2) 【全栈】Spr…...
自动化实现的思路变化
阶段一: 1、成功调用。第一步,一般是用现用的工具,或者脚本成功调用接口 2、解决关联接口的参数传递。有的接口直接,存在参数的传递,一般的思路,就是将这个参数设置为变量。 3、简化代码。总会有些东西是重…...
省市区三级联动
引言 在网页中,经常会遇到需要用户选择地区的场景,如注册表单、地址填写等。为了提供更好的用户体验,我们可以实现一个三级联动的地区选择器,让用户依次选择省份、城市和地区。 效果展示: 只有先选择省份后才可以选择…...
Mac安装Redis并设置launchd自启动
下载和编译redis源码 方便mac同学,不想使用brew方式安装,又想开机自启动redis,简单记录一下。首先下载redis7.0.15.tar.gz源码包 tar -xf tar -zxf redis-7.0.15.tar.gz开始编译源码 cd redis-7.0.15 sudo cp redis.conf /etc/redis.conf …...
Fullcalendar @fullcalendar/react 样式错乱丢失问题和导致页面卡顿崩溃问题
问题描述: 我使用 fullcalendar的react版本时,出现了一个诡异的问题,当我切换到 一个iframe页面时(整个页面是一个iframe嵌入的),再切换回来日历的样式丢失了!不仅丢失了样式还导致页面崩溃了&…...
dm8在Linux环境安装精简步骤说明(2024年12月更新版dm8)
dm8在Linux环境安装详细步骤 - - 2025年1月之后dm8 环境介绍1 修改操作系统资源限制2 操作系统创建用户3 操作系统配置4 数据库安装5 初始化数据库6 实例参数优化7 登录数据库配置归档与备份8 配置审计9 创建用户10 屏蔽关键字与数据库兼容模式11 jdbc连接串配置12 更多达梦数据…...
