详解 Servlet 处理表单数据
Servlet 处理表单数据
- 1. 什么是 Servlet?
- 2. 表单数据如何发送到 Servlet?
- 2.1 GET 方法
- 2.2 POST 方法
- 3. Servlet 如何接收表单数据?
- 3.1 获取单个参数:`getParameter()`
- 示例:
- 3.2 获取多个参数:`getParameterValues()`
- 示例:
- 4. 处理不同类型的表单元素
- 4.1 文本框(`<input type="text">`)
- 4.2 复选框(`<input type="checkbox">`)
- 4.3 单选按钮(`<input type="radio">`)
- 4.4 下拉菜单(`<select>`)
- 5. 安全性和数据验证
- 5.1 数据验证
- 5.2 防止安全漏洞
- 示例(防止 XSS):
- 6. 示例:处理登录表单
- 6.1 HTML 表单
- 6.2 Servlet 代码
- 6.3 代码说明
- 1. 导入包
- 2. Servlet类定义
- 3. doPost方法
- 4. 字符编码设置
- 5. 获取表单数据
- 6. 验证逻辑
- 7. 注意事项
- 7. 总结
Servlet 是 Java Web 开发中的核心技术之一,用于处理客户端发送的 HTTP 请求并生成响应。对于初学者来说,理解 Servlet 如何处理表单数据是学习 Java Web 开发的重要一步。本文将从基本概念到具体实现,详细讲解 Servlet 处理表单数据的步骤和注意事项。
1. 什么是 Servlet?
Servlet 是运行在 Web 服务器上的 Java 程序,属于 Java EE(现称为 Jakarta EE)技术的一部分。它的主要功能是接收客户端(通常是浏览器)的 HTTP 请求,处理请求中的数据,并返回响应。例如,当用户在网页上提交表单时,Servlet 负责接收表单数据并进行处理。
简单来说,Servlet 是连接前端网页和后端逻辑的桥梁。它可以处理用户输入、与数据库交互、生成动态网页等。
2. 表单数据如何发送到 Servlet?
在 HTML 网页中,用户通过表单(<form>
标签)输入数据并提交。表单数据通过 HTTP 请求发送到服务器,通常有以下两种方式:
2.1 GET 方法
- 特点:数据附加在 URL 后面,作为查询字符串。例如:
http://example.com/login?username=john&password=123
- 适用场景:适合发送少量、非敏感数据(如搜索关键字)。
- 限制:URL 长度有限,且数据暴露在地址栏中,不适合传输密码等敏感信息。
2.2 POST 方法
- 特点:数据放在 HTTP 请求体中,不显示在 URL 上。
- 适用场景:适合发送大量数据或敏感数据(如登录表单、文件上传)。
- 优点:安全性更高,没有 URL 长度限制。
在 HTML 中,表单的提交方式由 <form>
标签的 method
属性指定,例如:
<form method="post" action="/login">用户名: <input type="text" name="username"><br>密码: <input type="password" name="password"><br><input type="submit" value="提交">
</form>
method="post"
表示使用 POST 方法。action="/login"
指定数据发送到的 Servlet 路径。
3. Servlet 如何接收表单数据?
Servlet 通过 HttpServletRequest
对象接收客户端发送的数据。无论数据是通过 GET 还是 POST 方法发送的,Servlet 都可以使用以下方法获取:
3.1 获取单个参数:getParameter()
- 用法:
request.getParameter("字段名")
- 返回:指定字段名的值(字符串类型)。
- 适用:文本框、单选按钮、下拉菜单等单个值的表单元素。
示例:
String username = request.getParameter("username");
String password = request.getParameter("password");
- 如果表单中有一个
<input name="username">
,getParameter("username")
将返回用户输入的值。 - 如果字段不存在,返回
null
。
3.2 获取多个参数:getParameterValues()
- 用法:
request.getParameterValues("字段名")
- 返回:指定字段名的所有值(字符串数组)。
- 适用:复选框等允许多选的表单元素。
示例:
String[] hobbies = request.getParameterValues("hobbies");
if (hobbies != null) {for (String hobby : hobbies) {System.out.println("爱好: " + hobby);}
}
- 如果表单中有多个
<input type="checkbox" name="hobbies">
,用户可以选择多个选项,getParameterValues()
返回所有选中值。
4. 处理不同类型的表单元素
HTML 表单包含多种输入元素,Servlet 都能处理。以下是常见类型及其处理方式:
4.1 文本框(<input type="text">
)
- 示例 HTML:
<input type="text" name="username">
- Servlet 处理:
String username = request.getParameter("username");
4.2 复选框(<input type="checkbox">
)
- 示例 HTML:
<input type="checkbox" name="hobbies" value="reading"> 阅读 <input type="checkbox" name="hobbies" value="gaming"> 游戏
- Servlet 处理:
String[] hobbies = request.getParameterValues("hobbies");
4.3 单选按钮(<input type="radio">
)
- 示例 HTML:
<input type="radio" name="gender" value="male"> 男 <input type="radio" name="gender" value="female"> 女
- Servlet 处理:
String gender = request.getParameter("gender");
4.4 下拉菜单(<select>
)
- 示例 HTML:
<select name="city"><option value="beijing">北京</option><option value="shanghai">上海</option> </select>
- Servlet 处理:
String city = request.getParameter("city");
5. 安全性和数据验证
用户输入的数据不可信,因此在 Servlet 中处理表单数据时,必须注意安全性:
5.1 数据验证
- 目的:确保数据格式和内容符合要求。
- 示例:
- 检查用户名是否为空:
if (username == null || username.trim().isEmpty())
- 检查邮箱格式是否正确:使用正则表达式。
- 检查用户名是否为空:
5.2 防止安全漏洞
- SQL 注入:用户可能输入恶意 SQL 代码。解决方法:使用参数化查询(PreparedStatement)。
- XSS(跨站脚本攻击):用户可能输入恶意的 HTML 或 JavaScript 代码。解决方法:对输出进行 HTML 转义。
示例(防止 XSS):
import org.apache.commons.text.StringEscapeUtils;String userInput = request.getParameter("comment");
String safeOutput = StringEscapeUtils.escapeHtml4(userInput);
escapeHtml4()
将特殊字符(如<
、>
)转换为安全的 HTML 实体(如<
、>
)。
6. 示例:处理登录表单
以下是一个完整的 Servlet 示例,展示如何处理登录表单:
6.1 HTML 表单
<form method="post" action="/login">用户名: <input type="text" name="username"><br>密码: <input type="password" name="password"><br><input type="submit" value="登录">
</form>
6.2 Servlet 代码
// 导入必要的包,用于处理Servlet请求和响应
import javax.servlet.ServletException; // 用于处理Servlet异常
import javax.servlet.http.HttpServlet; // HttpServlet的基类,提供处理HTTP请求的功能
import javax.servlet.http.HttpServletRequest; // 表示HTTP请求,包含客户端发送的数据
import javax.servlet.http.HttpServletResponse;// 表示HTTP响应,用于向客户端发送数据
import java.io.IOException; // 用于处理输入输出异常/*** LoginServlet类继承自HttpServlet,用于处理用户登录请求。*/
public class LoginServlet extends HttpServlet {/*** 重写doPost方法,处理HTTP POST请求。* 该方法用于接收用户提交的登录表单数据,验证用户名和密码,并返回结果。* * @param request HTTP请求对象,包含客户端提交的用户名和密码等数据* @param response HTTP响应对象,用于向客户端发送登录结果* @throws ServletException 如果Servlet处理过程中发生错误* @throws IOException 如果发生输入输出错误*/@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 设置请求的字符编码为UTF-8,防止中文乱码request.setCharacterEncoding("UTF-8");// 设置响应的内容类型为HTML,字符编码为UTF-8,确保浏览器正确显示中文response.setContentType("text/html;charset=UTF-8");// 从请求中获取客户端提交的表单数据:用户名和密码String username = request.getParameter("username"); // 获取表单中的"username"字段值String password = request.getParameter("password"); // 获取表单中的"password"字段值// 简单验证用户名和密码(注意:实际应用中应连接数据库进行验证)if ("admin".equals(username) && "password123".equals(password)) {// 如果用户名和密码匹配,返回成功消息response.getWriter().println("登录成功!");} else {// 如果用户名或密码不匹配,返回错误消息response.getWriter().println("用户名或密码错误。");}}
}
6.3 代码说明
1. 导入包
javax.servlet.ServletException
:用于处理Servlet运行时可能抛出的异常。javax.servlet.http.HttpServlet
:这是Servlet的核心基类,提供处理HTTP请求的方法(如doPost
和doGet
)。javax.servlet.http.HttpServletRequest
:表示客户端发来的HTTP请求,可以从中提取表单数据(如用户名和密码)。javax.servlet.http.HttpServletResponse
:表示服务器对客户端的响应,可以通过它向客户端发送消息。java.io.IOException
:用于处理输入输出操作(如读写响应数据)时可能出现的异常。
2. Servlet类定义
public class LoginServlet extends HttpServlet
:- 定义了一个名为
LoginServlet
的类,它继承自HttpServlet
,使其具备处理HTTP请求的能力。 - 这个类专门用于处理用户登录逻辑。
- 定义了一个名为
3. doPost方法
protected void doPost(HttpServletRequest request, HttpServletResponse response)
:- 重写了
HttpServlet
中的doPost
方法,用于处理HTTP POST请求。 - POST请求通常用于表单提交(如登录表单),因此这里用它来接收用户输入的用户名和密码。
- 重写了
throws ServletException, IOException
:- 表示该方法可能抛出Servlet异常或I/O异常,调用者需要处理这些异常。
4. 字符编码设置
request.setCharacterEncoding("UTF-8");
:- 设置请求的字符编码为UTF-8,确保从客户端传来的中文数据不会出现乱码。
response.setContentType("text/html;charset=UTF-8");
:- 设置响应的内容类型为HTML,并指定字符编码为UTF-8,确保浏览器能正确解析和显示中文响应。
5. 获取表单数据
String username = request.getParameter("username");
:- 从HTTP请求中获取表单字段
"username"
的值,通常对应HTML表单中的<input name="username">
。
- 从HTTP请求中获取表单字段
String password = request.getParameter("password");
:- 从HTTP请求中获取表单字段
"password"
的值,对应<input name="password">
。
- 从HTTP请求中获取表单字段
6. 验证逻辑
if ("admin".equals(username) && "password123".equals(password))
:- 使用简单的条件判断,检查用户名是否为
"admin"
,密码是否为"password123"
。 - 注意:
equals
方法用于比较字符串内容,避免使用==
(后者比较对象引用)。
- 使用简单的条件判断,检查用户名是否为
- 验证成功:
response.getWriter().println("登录成功!");
:- 通过
response.getWriter()
获取输出流,向客户端发送"登录成功!"
消息。
- 通过
- 验证失败:
response.getWriter().println("用户名或密码错误。");
:- 如果用户名或密码不匹配,返回错误消息。
7. 注意事项
- 硬编码问题:
- 当前代码将用户名和密码硬编码为
"admin"
和"password123"
,仅用于演示。在实际应用中,应连接数据库验证用户身份。
- 当前代码将用户名和密码硬编码为
- 安全性建议:
- 密码应加密存储(如使用哈希算法),而不是明文保存。
- 应防止常见的安全威胁,如SQL注入(如果使用数据库)或跨站脚本攻击(XSS)。
- 扩展性:
- 可以添加会话管理(如
HttpSession
),在登录成功后跟踪用户状态。
- 可以添加会话管理(如
7. 总结
- Servlet 接收数据:通过
HttpServletRequest
的getParameter()
和getParameterValues()
方法获取表单数据。 - 发送方式:表单数据可以通过 GET 或 POST 方法发送,Servlet 都能处理。
- 表单元素:Servlet 支持处理文本框、复选框、单选按钮、下拉菜单等多种元素。
- 安全性:必须验证输入并清理数据,防止 SQL 注入和 XSS 等攻击。
- 实践:通过登录表单示例,我们展示了 Servlet 的基本使用流程。
相关文章:
详解 Servlet 处理表单数据
Servlet 处理表单数据 1. 什么是 Servlet?2. 表单数据如何发送到 Servlet?2.1 GET 方法2.2 POST 方法 3. Servlet 如何接收表单数据?3.1 获取单个参数:getParameter()示例: 3.2 获取多个参数:getParameterV…...
八大排序——冒泡排序/归并排序
八大排序——冒泡排序/归并排序 一、冒泡排序 1.1 冒泡排序 1.2 冒泡排序优化 二、归并排序 1.1 归并排序(递归) 1.2 递归排序(非递归) 一、冒泡排序 1.1 冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换…...
高等数学第三章---微分中值定理与导数的应用(3.1微分中值定理3.2洛必达法则)
3.1 微分中值定理 一、罗尔(Rolle)中值定理 1. 费马(Fermat)引理 定义: 设函数 y f ( x ) y f(x) yf(x) 满足以下条件: 在点 x 0 x_0 x0 的某邻域 U ( x 0 ) U(x_0) U(x0) 内有定义࿱…...
AI超级智能体项目教程(二)---后端项目初始化(设计knif4j接口文档的使用)
文章目录 1.选择JDK的版本和相关配置2.添加依赖信息2.1指定lombok版本信息2.2引入hutool工具类2.3了解knif4j依赖2.4引入knif4j依赖 3.contrller测试3.1完成yml文件配置3.2修改默认扫描路径3.3controller具体的内容3.4配置接口和访问路径3.5如何访问3.6调试接口3.6调试接口 1.选…...
C++面试复习日记(8)2025.4.25,malloc,free和new,delete的区别
1,malloc,free和new,delete的区别 答:malloc和free是c语言中库函数; new和delete是c的操作符; 分配内存:malloc和new 区别: malloc:需要手动计算存储空间 new&#…...
14.ArkUI Radio的介绍和使用
ArkUI Radio 组件介绍与使用指南 什么是 Radio 组件? Radio(单选框)是 ArkUI 中的单选按钮组件,允许用户从一组互斥的选项中选择一个选项。它通常用于表单、设置界面等需要用户做出单一选择的场景。 Radio 的核心特性 单选功能…...
数据结构------C语言经典题目(7)
1.系统栈和数据结构中的栈有什么区别? 1.本质: 系统栈:由程序运行时由操作系统自动分配的一块连续内存区域,用于存储函数调用过程中的临时数据(参数、局部变量、返回地址),是程序运行的底层机制…...
Python教程(一)——Python速览
目录 1. 引言2. Python用作计算器2.1 数字2.2 文本2.3 列表 3. 走向编程的第一步参考 1. 引言 本系列的目的主要是重新回顾Python的语法,以供阅读由Python编写的源码。 在安装完Python后,在命令行中输入python就可以进入交互模式。下文代码段中以>…...
跟我学C++中级篇——处理对象的复制
一、对象的传递 在应用程序中,经常会遇到不同线程或不同模块间需要进行对象的传递,本来传递不是什么多大的事。但问题是,如果对象的值大到一定的程度后,传递不是问题可对象值的处理反而成了问题了。举一个现实世界的例子…...
基于PyQt5实现仿QQ-第二章-用户登录
基于PyQt5实现仿QQ-第二章-用户登录 Author: Daydreamer 项目简介 本项目基于PyQt5仿照目前流行的即时通信软件QQ,实现了新用户注册、用户登录、自动登录、记住多用户账号、用户搜索、添加好友、好友间聊天(消息持久化、同步化)等功能。 …...
[OS_8] 终端和 UNIX Shell | 会话和进程组 | sigaction | dash
我们已经知道如何用 “文件描述符” 相关的系统调用访问操作系统中的对象:open, read, write, lseek, close。操作系统也提供了 mount, pipe, mkfifo 这些系统调用能 “创建” 操作系统中的对象。 当然,我们也知道操作系统中的对象远不止于此࿰…...
IP查询专业版:支持IPv4/IPv6自动识别并切换解析的API接口使用指南
以下是根据您提供的网页内容编辑的符合CSDN内容发布要求的Markdown格式文本: 一、API概述 在开发过程中,我们常常需要对IP地址进行查询,以获取其详细信息,如地理位置、运营商等。万维易源的“IP查询专业版”API接口能够提供丰富…...
ESG跨境电商如何为国内的跨境电商企业打开国外的市场
现在不管是国内还是国外,做电商的企业都非常的多,那么既然有这么多大电商公司,就要有为这些电商公司提供服务的公司,这就是ESG,它是专门为跨境电商服务的公司,那么这家公司的主要业务是什么呢?它…...
建筑节能成发展焦点,楼宇自控应用范围持续扩大
在全球能源危机日益严峻、环保意识不断增强的大环境下,建筑节能已成为建筑行业发展的核心议题。从大型商业综合体到普通住宅,从公共建筑到工业厂房,节能需求贯穿建筑全生命周期。而楼宇自控系统凭借其对建筑设备的智能化管理和精准调控能力&a…...
中国矿业大学iGMAS分析中心介绍
一、关于GNSS和iGMAS 在浩瀚的太空中,全球卫星导航系统(GNSS)构建起精准定位的时空基准。IGMAS——国际GNSS监测评估系统,是由中国倡导并主导建设的全球GNSS监测网络,旨在提供高精度、高可靠的导航、定位与授时服务。 …...
python如何取消word中的缩进
在python-docx中,取消缩进可以通过将相应的缩进属性设置为None或0来实现。以下是取消不同类型缩进的方法: 取消左缩进 from docx import Documentdoc Document(existing_document.docx)for paragraph in doc.paragraphs:# 取消左缩进paragraph.paragr…...
Lesar: 面向 Lustre/Scade 语言的形式化模型检测工具
在《同步反应式系统》的第一课中,介绍了同步数据流语言 Lustre 生态中的形式化模型检查器 Lesar 的用法。Lesar 可对 lustre v4 语言以及 Scade 语言中部分数据流核心特性进行模型检查。 Lesar 介绍 Lesar 是 Verimag 研发维护的形式化方法模型检查工具。该工具的理…...
YOLOv12 改进有效系列目录 - 包含卷积、主干、检测头、注意力机制、Neck上百种创新机制 - 针对多尺度、小目标、遮挡、复杂环境、噪声等问题!
🔥 在 YOLO 系列一路狂飙之后,YOLOv12 带来了令人耳目一新的范式转变——它不再以 CNN 为绝对核心,而是首次 围绕注意力机制构建 YOLO 框架,在保证实时性的前提下,将检测精度再次推向新高度! 为了进一步探…...
STM32 I2C总线通信协议
引言 在嵌入式系统开发领域,I2C(Inter-Integrated Circuit)总线作为经典的双线制串行通信协议,凭借其简洁的物理层设计和灵活的通信机制,在传感器互联、存储设备控制、显示模块驱动等场景中占据重要地位。本文将深入剖…...
多物理场耦合低温等离子体装置求解器PASSKEy2
文章目录 PASSKEy2简介PASSKEY2计算流程PASSKEy2 中求解的物理方程电路模型等离子体模型燃烧模型 PASSKEy2的使用 PASSKEy2简介 PASSKEy2 是在 PASSKEy1 的基础上重新编写的等离子体数值模拟程序。 相较于 PASSKEy1, PASSKEy2 在具备解决低温等离子体模拟问题的能力…...
【Harmony_Bug】forEach + asyncawait 的异步陷阱
一、问题描述 今天在做一个RDB的小项目时,遇到一个问题,因为没报错其实也是不算是BUG,以下描述时我就直接说关键点,其他代码忽略。 我的数据模型初始化有六条数据如图 在持久化层,通过initUserData这个方法执行插入。…...
智慧医院建设的三大关键领域
智慧医院建设是医疗行业数字化转型的核心载体,其本质是通过新一代信息技术重构医疗服务模式、优化管理流程、提升患者体验。在当前医疗资源供需矛盾突出的背景下,智慧医院建设已从单纯的设备智能化向系统性变革演进,主要集中在以下三大关键领…...
雷电模拟器怎么更改IP地址
游戏搬砖会使用雷电模拟器多开窗口,若模拟器窗口开多了,IP地址是一样的就怕有限制,很容易被游戏后台检测到。在雷电模拟器中更改IP地址可以通过以下方法实现: 方法一:通过模拟器内设置代理 1. 打开雷电模拟器 启动雷…...
软件编程命名规范
编程命名规范是保证代码可读性、可维护性和团队协作效率的重要基础。以下是涵盖主流编程语言的通用命名规范,结合行业最佳实践和常见规范(如Google、Microsoft、Airbnb等风格指南): 一、通用命名原则 清晰优先:名称应…...
#什么是爬虫?——从技术原理到现实应用的全面解析 VI
什么是爬虫?——从技术原理到现实应用的全面解析 V 二十六、异构数据采集技术突破 26.1 PDF文本与表格提取 import pdfplumber import pandas as pddef extract_pdf_data(pdf_path):"""从PDF中提取文本和表格数据:param pdf_path: PDF文件路径:return: 包含…...
芯岭技术XL32F003单片机 32位Cortex M0+ MCU简单介绍 性能优异
XL32F003单片机是深圳市芯岭技术有限公司的一款基于 32 位 ARM Cortex-M0 内核的高性能微控制器,提供SOP8/SOP14/SOP16/TSSOP20/SSOP24/QFN20/QFN32多种封装可选,可满足不同设计需求。XL32F003可用于工业控制、手持设备、PC 外设、传感器节点等应用场景&…...
使用浏览器的Clipboard API实现前端复制copy功能
在前端开发中,复制文本到剪贴板的功能通常使用浏览器的 Clipboard API 实现。比如 navigator.clipboard.writeText 方法。以下是一个简单的案例,展示如何使用 Clipboard API 实现复制文本的功能。 基本用法 首先,你需要创建一个按钮&#x…...
Struts2框架学习
文章目录 基础实战配置文件NameSpaces 基础 实战 配置文件 文件1: <?xml version"1.0" encoding"UTF-8"?> // 声明这是一个 XML 文件,且使用 UTF - 8 编码 <!DOCTYPE struts PUBLIC"-//Apache Software Foundat…...
React 实现爱心花园动画
主页: import React, { useEffect, useRef, useState } from react; import /assets/css/Love.less; import { Garden } from /utils/GardenClasses;// 组件属性接口 interface LoveAnimationProps {startDate?: Date; // 可选的开始日期messages?: { // 可…...
CAPL编程_03
1_文件操作的相关函数: 读文本文件内容 读取文本文件操作的三部曲 1)打开文件 —— openFileRead ( ) 2)逐行读取 —— fileGetString ( ) 、fileGetStringSZ ( ) 3)关闭文件 —— fileClose ( ) char content[100];…...
网络准入控制系统:2025年网络安全的坚固防线
在当今数字化时代,网络安全已成为至关重要的议题。阳途网络准入控制系统作为保障网络安全的关键机制,发挥着不可替代的作用。 阳途网络准入控制系统核心目的在于确保只有合法、合规的设备与用户能够接入网络。从本质上讲,它通过一系列技术手段…...
【音视频】⾳频处理基本概念及⾳频重采样
一、重采样 1.1 什么是重采样 所谓的重采样,就是改变⾳频的采样率、sample format、声道数等参数,使之按照我们期望的参数输出。 1.2 为什么要重采样 为什么要重采样? 当然是原有的⾳频参数不满⾜我们的需求,⽐如在FFmpeg解码⾳频的时候…...
自然语言处理将如何颠覆未来教育?个性化学习新纪元
教育领域正经历着自印刷术发明以来最深刻的变革。自然语言处理(NLP)技术突破传统教育框架的桎梏,正在重塑人类知识传递的基本范式。这场变革的实质不在于教学工具的数字化升级,而在于重新定义了"教"与"学"的本…...
4月25日星期五今日早报简报微语报早读
4月25日星期五,农历三月廿八,早报#微语早读。 1、祝贺!神舟二十号载人飞船发射取得圆满成功; 2、文旅部:今年一季度国内出游人次17.94亿,同比增长26.4%; 3、2025五一档新片预售票房破1000万&…...
秒级到毫秒:BFD的速度革命
一、BFD技术概述 双向转发检测(BFD)是一种轻量级的网络协议,专门用于快速检测、监控网络链路或IP路由的连通性状态。作为网络领域的"心跳检测器",BFD通过毫秒级(默认1000ms)的快速探测机…...
systemctl 命令详解与常见问题解决
在 Linux 系统中,service 命令和 chkconfig 命令一直用于管理服务,但随着 systemd 的引入,systemctl 命令逐渐成为主流。systemctl 命令不仅功能强大,而且使用简单。本文将详细介绍 systemctl 命令的作用以及常见问题的解决方法。…...
5.6 Microsoft Semantic Kernel:专注于将LLM集成到现有应用中的框架
5.6.1 Semantic Kernel概述 Microsoft Semantic Kernel(以下简称SK)是一个开源的软件开发工具包(SDK),旨在帮助开发者将大型语言模型(LLM)无缝集成到现有的应用程序中。它支持C#、Python和Java…...
vite+vue构建的网站项目localhost:5173打不开
原因:关掉了cmd命令提示符,那个端口就没有被配置上,打开就是这样的。 解决方法:重新在工作目录下打开cmd,输入npm run dev重新启动项目。 重新出现这样的界面说明已经成功启动项目,再次在浏览器中刷新并输入…...
电脑屏幕录制软件Captura源码编译(Win10,VS2022)
屏幕录像的意义: 教育教学方面 制作教学资源:教师可以通过录制屏幕来制作教学视频,演示软件操作、讲解复杂的知识点等。学生可以随时观看这些视频,便于复习和巩固知识,尤其对于一些抽象的概念或难以在课堂上一次性掌握…...
【版本控制】SVN + TortoiseSVN版本管理实用教程(附安装+开发常用操作)
摘要: 本文将带你从零开始掌握 SVN 版本控制系统,结合 TortoiseSVN 图形客户端工具,深入学习包括安装、检出、提交、更新、回滚、冲突解决等常用开发操作,快速上手团队协作! 🧩 什么是 SVN? SV…...
常见网络安全攻击类型深度剖析(二):SQL注入攻击——原理、漏洞利用演示与代码加固方法
常见网络安全攻击类型深度剖析(二):SQL注入攻击——原理、漏洞利用演示与代码加固方法 在Web应用安全领域,SQL注入(SQL Injection)是历史最悠久、危害最广泛的攻击类型之一。据OWASP(开放式Web应用安全项目)统计,SQL注入连续多年稳居“OWASP Top 10”漏洞榜单前列,每…...
DeepSeek智能时空数据分析(三):专业级地理数据可视化赏析-《杭州市国土空间总体规划(2021-2035年)》
序言:时空数据分析很有用,但是GIS/时空数据库技术门槛太高 时空数据分析在优化业务运营中至关重要,然而,三大挑战仍制约其发展:技术门槛高,需融合GIS理论、SQL开发与时空数据库等多领域知识;空…...
day49—双指针+贪心—验证回文串(LeetCode-680)
题目描述 给你一个字符串 s,最多 可以从中删除一个字符。 请你判断 s 是否能成为回文字符串:如果能,返回 true ;否则,返回 false 。 示例 1: 输入:s "aba" 输出:true…...
AI电视里的达摩
2025年,所有电视都搭载了AI功能,所有电视厂商都在宣传AI能力。但问题是,消费者依旧没有对AI电视做出什么积极的回应。“AI电视是鸡肋”“AI只是电视的又一轮泡沫”等观点层出不穷。 为什么明明AI技术能够解决电视的很多问题,但AI电…...
算力网络(CFN)在跨校联合科研中的应用:安全性挑战与联邦调度实践
引言:科研协作的算力困境 上海交通大学与麻省理工学院联合开展的高能物理模拟实验,因算力资源分配不均导致部分节点连续72小时处于空转状态。这个典型案例揭示了当前跨机构科研协作的痛点:算力资源无法实现安全可信的细粒度共享。算力网…...
面向对象编程核心:封装、继承、多态与 static 关键字深度解析
面向对象编程核心:封装、继承、多态与 static 关键字深度解析 一、封装:数据安全与接口规范 1. 封装的本质与作用 核心定义:将数据(属性)与操作数据的方法(行为)绑定在类中,隐藏内…...
c++进阶——类与继承
文章目录 继承继承的基本概念继承的基本定义继承方式继承的一些注意事项 继承类模板 基类和派生类之间的转换继承中的作用域派生类的默认成员函数默认构造函数拷贝构造赋值重载析构函数默认成员函数总结 不能被继承的类继承和友元继承与静态成员多继承及其菱形继承问题继承模型…...
【CODEMATE】进制转换(transform) 粤港澳青少年信息学创新大赛 C/C++/Python 解题思路
目录 问题描述做题思路,解决过程思路:踩过的坑:核心代码C 语言 / C 切片:C 语言 / C 判断 ‘A’ 数量:Python 切片:Python 判断 ‘A’ 数量: 完整代码C 语言 完整代码C 完整代码Python 完整代码…...
window和ubuntu自签证书
window下 以管理员身份 运行 Windows PowerShell # CN192.168.0.100 (换成自己的IP或者域名) # O(组织) OU(组织单位) # Cert:\LocalMachine\My:证书存储位置 # test_10:自定义证书名称 .AddYears(10): 证书过期时间 10 年 $cert New-SelfSi…...
ES历史版本下载
下载地址 Past Releases of Elastic Stack Software | Elastic 安装步骤参考 windows 安装 Elasticsearch_windows安装elasticsearch-CSDN博客...