网页数据库登录基本步骤

web连接数据库完成登录注册 阅读详情

思考逻辑:

1.布置登录网页,其中设置表单提交到servlet类,方式设置为post较好
2.servlet类获取请求体内容(参数内容)
3.设置数据库校验类 接收参数内容并进行校验
	1.使用JdbcTemplate简化开发细节,需要设置JavaBean实体类
	2.Druid数据库连接池工具类提供获取DataSource,Connection方法给JDBCTemplate类
	3.Druid使用静态代码块完成配置内容,并生成DataSource类对象
4.检验结果为真假,分别使用服务器内部的请求转发到其他servlet类
5.其他servlet类各自设置response并写入信息

基本步骤:

first:

1.将bootstrap简化开发,(css,fonts,js文件夹应放入WebContent[html也存于此]下),
	再使用基本框架进行表单的布置,同时也可以使用css进行辅助样式布局,
	并将表单的action引入到Tomcat服务器上的servlet,方法设置为post
	进而完成web登录界面login.html的布置

login.html

(注意: 
 action="http://localhost:8080/WebServlet/RequestDemo1"
	:RequestDemo1为WebServlet工程中的servlet类
		且注解为@WebServlet("/RequestDemo1")
)			


<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
    <title>Bootstrap 101 Template</title>
    <link href="css/bootstrap.min.css" rel="stylesheet">


    <style type="text/css">
    .place{
    	font-size: 30px;
    	border: 2px solid black;
    	padding-top: 100px;
    	padding-bottom: 100px;
    }
    .form-group{
    	align-content: center;
    	margin-top: 40px;
    }
    .login{font-size: 25px;}
    </style>
    


	<!-- HTML5 shim 和 Respond.js 是为了让 IE8 支持 HTML5 元素和媒体查询(media queries)功能 -->
    <!-- 警告:通过 file:// 协议(就是直接将 html 页面拖拽到浏览器中)访问页面时 Respond.js 不起作用 -->
    <!--[if lt IE 9]>
      <script src="https://cdn.jsdelivr.net/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
      <script src="https://cdn.jsdelivr.net/npm/respond.js@1.4.2/dest/respond.min.js"></script>
    <![endif]-->
  </head>
  <body>
    <form action="http://localhost:8080/WebServlet/RequestDemo1" class = "form-horizontal place"  method = "post">
		<div class="form-group">
			<label for = "user"  class = "col-sm-5 control-label" >登录:</label>
			<div class = "col-sm-5">
			<input id = "user" name = "username" placeholder="输入用户名"></input>
			</div>
	 	</div>	
	  <div class="form-group">
			<label for = "pwd" class = "col-sm-5 control-label">密码:</label> 
			<div class = "col-sm-5">
				<input id = "pwd" type = "password" name = "password" placeholder="输入密码"></input>
			</div>
	  </div>
	  
   		<div class = "col-sm-5 form-group"> </div>
   		<button type="submit" class="btn btn-danger col-sm-3 login" >登录</button>
	</form>
	
    <script src="https://cdn.jsdelivr.net/npm/jquery@1.12.4/dist/jquery.min.js"></script>
    <!-- 加载 Bootstrap 的所有 JavaScript 插件。你也可以根据需要只加载单个插件。 -->
    <script src="../js/bootstrap.min.js"></script>
  </body>
</html>

second:

2.完成数据库表和表数据的创建和插入,并设置JavaBean实体类User
	成员变量要与数据库表中的数据能一一对应得上

mysql_代码:

CREATE TABLE  IF NOT EXISTS userinfo (
	username VARCHAR(20) PRIMARY KEY,
	PASSWORD VARCHAR(20) NOT NULL,
	loggingTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
INSERT INTO UserInfo (username,PASSWORD) VALUES ("李白",123456);
INSERT INTO UserInfo (username,PASSWORD) VALUES ("杜甫",123456);
SELECT * FROM UserInfo;

JavaBean实体类要求:

1.类使用public修饰	
2.拥有无参构造器
3.成员变量使用private修饰	
4.对于成员方法都有Getter,Setter方法
JavaBean的属性:
	去掉set,get再将剩余部分首字母变大写即为JavaBean的属性

User

public class User{
	private String username;
	private String password;
	private Timestamp loggingTime;
	public User(String username, String password,Timestamp loggingTime) {
		this.username = username;
		this.password = password;
		this.loggingTime = loggingTime;
	}
	public User() {
		super();
	}
	public Timestamp getLoggingTime() {
		return loggingTime;
	}
	public void setLoggingTime(Timestamp loggingTime) {
		this.loggingTime = loggingTime;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	@Override
	public String toString() {
		return "User [username=" + username + ", password=" + password + ", loggingTime=" + loggingTime + "]";
	}
}

third:

3.在当前工程中的WebContent/WEB-INF/lib下导入一系列jar包,用于辅助JdbcTemplate,
	Druid.properties(Druid配置文件)放入src下
	完成Druid工具类的静态配置 并完成 获取的DataSource的方法,
	用于提供给JdbcTemplate对象

jar

	commons-beanutils-1.8.0.jar
	commons-logging-1.2.jar
	druid-1.0.13.jar
	mysql-connector-java-8.0.16.jar
	spring-beans-5.0.0.RELEASE.jar
	spring-core-5.0.0.RELEASE.jar
	spring-jdbc-5.0.0.RELEASE.jar
	spring-tx-5.0.0.RELEASE.jar	

Druid.properties

	driverClassName = com.mysql.cj.jdbc.Driver
	url = jdbc:mysql://localhost:3306/db1?useSSL=false&serverTimezone=UTC
	username = root
	password = 123456
	initialSize = 5
	maxActive = 10
	maxWait = 3000

Druid工具类

(仅用于辅助JdbcTemplate,不必写close释放资源等方法,
					但设置静态配置以及要获取DataSource方法)

public class SQLDruidHelp {
	private static DataSource dSource ;
	static {
		try {
			ClassLoader cLoader = SQLDruidHelp.class.getClassLoader();
			InputStream resourceAsStream = cLoader.getResourceAsStream("druid.properties");
			Properties properties = new Properties();
			properties.load(resourceAsStream);
			dSource =  DruidDataSourceFactory.createDataSource(properties);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	public static DataSource getDataSource() {
		return dSource;
	}
}

fourth:

4.通过JdbcTemplate类,实现方法通过User对象参数完成对数据库的查询正确与否

JDBCLogCheck

(注意:JdbcTemplate对象的创建传递了第三步Druid工具类的getDataSource())

public class JDBCLogCheck {
	public static boolean checkInfo(User user) {
		JdbcTemplate jdbcTemplate = new JdbcTemplate(SQLDruidHelp.getDataSource());
		String sql = "select * from userInfo where username = ? && password = ?";
		List<User> lists = jdbcTemplate.query(sql, new BeanPropertyRowMapper<User>(User.class),user.getUsername(),user.getPassword());
		if(lists.size() > 0 ) {
			return true;
		}
		return false;
	}
}

fifth:

5.实现login.html上表单提交的servlet,获取页面提交的username,password	
	JavaBean实体类:  User user = new User();  
	Map :			request.getParameterMap();
使用:BeanUtils.populate(user, map);
		内部自动执行各个参数的setter()
最后使用第四步完成的JDBCLogCheck检验类校验User类对象,
	如果为存在,则要将Username数据共享出来,因此要设置到request.setAttribute上,
				并将请求转发到"/successdemo"servlet类
	如果为没有,则请求转发到"/faildemo"servlet类

RequestDemo1

@WebServlet("/RequestDemo1")
public class RequestDemo1 extends HttpServlet {
	private static final long serialVersionUID = 1L;
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		User user = new User();
		Map<String, String[]> map = request.getParameterMap();
			try {
				BeanUtils.populate(user, map);
			} catch (IllegalAccessException | InvocationTargetException e) {
				
				e.printStackTrace();
			}
		
		boolean flag = JDBCLogCheck.checkInfo(user);
		if(flag) {
			request.setAttribute("username",user.getUsername());
			request.getRequestDispatcher("/successdemo").forward(request, response);
			
		}else {
			request.getRequestDispatcher("/faildemo").forward(request, response);
		}
	}

}

sixth:

实现第五步的"/successdemo" 和 "/faildemo" servlet类,
在doGet方法下完成进入doPost方法,因为请求转发后是相当于到另一个servlet类的doGet方法
随后在doPost方法下设置响应Reponse对象响应头的文本类型,并简单输出信息
	(其中sucessdemo还要获取request上的共享数据username,用于reponse输出)

faildemo

@WebServlet("/faildemo")
public class faildemo extends HttpServlet {
	private static final long serialVersionUID = 1L;
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		response.getWriter().write("密码和用户名存在无法匹配情况");
	}
}

successdemo

@WebServlet("/successdemo")
public class successdemo extends HttpServlet {
	private static final long serialVersionUID = 1L;
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		response.getWriter().write("欢迎会员:"+request.getAttribute("username")+"  你已登陆成功!");
	}
}
最简单的网页登录注册功能讲解及其实现 前言 最近打算做一个网页登录的练习,记录一下学习的过程吧。 结构 实现一个网页最基本的注册与登录功能,我们需要 mysql存储用户账户信息 编写注册html页面 编写后台注册程序 编写登录html页面 编写后台登录验证程序 创建数据库存储账户信息 使用mysql数据库来创建一个存储用户数据的数据库。 我们来到mysql的控制台。这里我使用的是xampp带的mysql。打开mysql控制台的方法: 以管理员模式运行cmd cd /d 路径 命令进入mysql的bin目录下 输入命令mysql -u 用户 阅读详情

相关推荐

PHP微信公众号网页授权登录 扫码登录 获取用户基本信息

前言 现在微信登录是一个网站、APP的标配,所以微信授权登录是我们应该要掌握的。微信授权登录有4种方式: 1、通过微信开放平台2、通过认证的微信服务号3、通过认证的微信订阅号4、通过微信小程序曲线救国 今天我们就讲解的是微信服务号,通过OAuth2.0机制网页授权登录,获取用户基本信息。 流程 1、获取code2、获取access_token3、获取用户基本信息 获取code 通过以下接...

weixin_42395776的博客 1533

登录MySQL数据库

用户启动了MySQL服务,便可以通过客户端登录MySQL数据库。 登录MySQL数据库的具体操作步骤如下: 步骤 1):单击“开始”→“Windows 系统”→“命令提示符”,如图所示。 步骤 2):打开命令行提示符界面,输入命令:cd C:Program FilesMySQLMySQL Server 5.7bin,按回车键,如图所示。 步骤 3):在命令提示符界面可以通过登...

MYsql零基础入门学习 724

JAVA+JSP+HTML+数据库 实现网页的登录和注册(附全网最详细代码)

JAVA+JSP+HTML+数据库 实现网页的登录和注册(附详细代码) 受疫情的影响自己在家鼓捣点了东西,也是项目中的一部分,实现了网页的登录和注册,在大佬面前不可一提,本人只是分享自己的实现过程,希望对看到的你有所帮助。 项目的层次图: 代码: login.jsp(登录界面实现) <%@ page language="java" contentType="text/htm...

自我总结,分享所有,快乐每一天 6250

登录页面连接数据库

壹 如果每一款APP的登录界面审核机制为 " admin".equles(username)&&"123456".equles(password) 那么局限性太高,数据成本高,我们之所以连接数据库,是因为APP对应着多个用户,而不是一个用户。 贰 (1)建立数据库 打开MySQL 1、create database db_shop;(创建库) 2...

weixin_43376497的博客 6284

QT模拟实现网页登录界面

QT模拟实现网页登录界面常见的网络登录界面一般包括用户名 Lable 和编辑框,密码 Label 和编辑框,是否保存密码的 Check 按钮,以及确定登录和退出按钮组成,界面设计如下: 一般的登录流程如下:用户输入用户名和密码,有的可能会勾选保存密码选项;然后点击确定按钮向服务器发出登录请求;服务器收到请求后与数据库中存储的记录比较,存在则允许用户登入系统;客户端在收到确认后先将本次登录计入存

u010090316的博客 8436

web实现数据库简单登陆网页

web登录注册,在Myeclipse里打开,可以进行mysql数据访问

登录注册页面连接数据库并完成注册(三)

数据库注册

QQ1602288425的博客 4637

模拟IC设计实战:折叠式共源共栅放大器的参数优化与噪声抑制

本文深入探讨了折叠式共源共栅放大器的核心设计要点。针对低电压下增益与输出摆幅的矛盾,文章详细阐述了从套筒式结构转向折叠式结构的必要性,并重点分析了其参数优化与噪声抑制的实战方法。通过手把手的参数计算流程,指导如何平衡增益、带宽、摆幅与功耗。同时,深入剖析了噪声来源,强调了采用PMOS输入对管以抑制1/f噪声,并提供了针对共栅管及电流镜的噪声优化策略,是模拟IC设计中高性能放大器设计的实用指南。

vv45678的博客 978

网页连接数据库,一个简单的登入界面以及实现登入功能

基于V#的ASP.NET.MVC 4 web 网站程序开发 接着上篇继续,上篇地址为https://blog.youkuaiyun.com/weixin_42534390/article/details/86576537 我们首先要有一个认知,就是ASP.NET.MVC 4 web 网站程序开发的三层架构概念,分别为BLL,DAL,MOD 这三层的概念,这是竖着的三层。横三层为view,Controllers...

weixin_42534390的博客 5万+

UE5摄像机抖动全攻略:从Perlin噪点到Sequence实战(附参数调优技巧)

本文深入解析UE5摄像机抖动技术,从Perlin噪点算法到CameraShakeBase蓝图应用,再到Sequence高级控制,提供全面的参数调优技巧。涵盖战斗、爆炸等场景的预设参数,帮助开发者实现专业级抖动效果,提升游戏沉浸感。

weixin_30300225的博客 95

网络安全面试题

在当今社会网络安全行业越来越发达,也有越来越多的人去学习,为了更好地进行工作,除了学好知识外还要应对企业的面试。 所以在这里我归总了一些网络安全方面的常见面试题,希望对大家有所帮助。 windows常见 1:描述tcp/udp的区别及优劣,及其发展前景 TCP—传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能...

fzx_hsaj的博客 6万+

微信授权网页扫码登录php,PHP微信公众号网页授权登录 扫码登录 获取用户基本信息...

前言现在微信登录是一个网站、APP的标配,所以微信授权登录是我们应该要掌握的。微信授权登录有4种方式:1、通过微信开放平台2、通过认证的微信服务号3、通过认证的微信订阅号4、通过微信小程序曲线救国今天我们就讲解的是微信服务号,通过OAuth2.0机制网页授权登录,获取用户基本信息。流程1、获取code2、获取access_token3、获取用户基本信息获取code通过以下接口即可获得,参数说明:h...

weixin_39752434的博客 624

C#程序突然崩溃怎么办?5分钟学会分析Dump文件(Visual Studio 2022实战)

本文详细介绍了在C#程序崩溃或无响应时,如何捕获并分析Dump文件以快速定位问题。通过Visual Studio 2022实战演示,重点讲解了配置符号服务器、解读调用堆栈与内存状态,以及针对CPU飙高、内存泄漏等典型场景的分析方法,帮助开发者高效进行故障诊断。

docker8compose的博客 474

JSP总结

常见问题 1、 tomcat的运行依赖JDK,必须配置JDK环境。配置方式参照: https://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html 2、 闪退,启动闪退问题一般是因为JDK的环境变量配置有问题,参照1进行重新进行配置,如果还是闪退,使用: 在bin\startup.bat文件中的第一行前面加入: SET JAVA_HOME=JDK目录 SET CATALINA_HOME=解压后Tomcat的

weixin_45775120的博客 310

两万字硬核指南!Python爬虫requests库从入门到精通:新手也能搞定所有爬取场景(附实战案例+避坑大全)

请求头是客户端发送给服务器的额外信息,比如User-Agent(浏览器类型)、Referer(来源页面)、Cookie(登录凭证)、(编码方式)等。Cookie是服务器存储在客户端的小型文本文件,包含用户的登录凭证、偏好设置等信息。浏览器会在每次请求时自动携带Cookie,服务器通过Cookie识别用户身份。代理IP是一个中间服务器,你的请求先发送到代理IP,再由代理IP发送到目标网站,目标网站只能看到代理IP的地址,看不到你的真实IP。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1496

100天精通Python(可视化篇)——第89天:Bokeh库绘图可视化基础入门(参数说明+案例实战)

专栏导读 一、Bokeh是什么? 二、安装与导入 三、Bokeh接口介绍 四、创建图表 五、添加自定义渲染器 切换主题 添加图例 图例位置 图例方向 图例背景和边界 图例文本的外观 行列布局 网格布局

努力让自己发光,对的人才能迎着光而来 1万+

ASP.NET 链接sql数据库的 「登录/注册」界面

资源在这里 :github源文件参考 先看一下截图 支持的功能: 密码显示成点点 登录成功的提示 登录失败的提示 账号或者密码错了分开提示 注册成功的提示 不能注册已经在数据库里面的用户ID 我在这里看了很多这个人的教程:walking橙子,但是里面有的东西我不能用,messagebox.show()就不行。我也不是很懂(搜索也没有搜到,不知道怎么使用messagebo...

qq_41424132的博客 1万+

分享6款文字语音生成驱动虚拟数字人说话的开源项目

对定性和定量结果的大量实验表明,我们的算法实现了高质量的照片真实感对话头部视频,包括根据语音节奏进行的各种面部表情和头部运动,并超过了最先进的水平。我们的系统包含三个阶段。当然,FACEGOOD Audio2face 部分也可根据自己的喜好进行重新训练,比如你想用自己的声音或其它类型的声音,或者不同于 FACEGOOD 使用的模型绑定作为驱动数据,都可以根据下面提到的流程完成自己专属的动画驱动算法模型训练。兼顾生成的韵律和外表的相似,除了面部,考虑到了头部的动作,虑了背景区域的artifact。

南七小僧的学海无涯 3049

将网页数据读入数据库+将数据库数据读出到网页——基于python flask实现网页与数据库的交互连接【全网最全】

全网最全教学,基于flask:在网页端读出数据,存入数据库;从数据库中取出数据,显示在网页上。pycharm的template文件找不到怎么办,看这篇就够了!

RuanFun的博客 1万+

CLAHE 算法学习 matlab

概念可参考: CLAHE (Contrast Limited Adaptive Histogram Equalization)算法学习CLAHE具体实现主要包括6个步骤。1):分块。将输入图像划分为大小相等的不重叠子块,每个子块含有的像素数为M。参考示例为8×8块。 2):计算子块直方图。 3):计算剪切阈值clipLimit 4):像素点重分配。对每个子块,使用步骤三中多余的像素重新分配。 5):直方图均衡。 6):像素点灰度值重构。(源码中采用了双线性插值) http://www.realtimer

baidu_34971492的博客 4253

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

网页注册登录实现

网页注册登录页面及功能实现 最近了解了一些网页知识,写个博客总结分享一下 一、页面实现 代码及效果图 <!doctype html> <html> <head> <meta charset="utf-8"> <title>登录</title> <style type="text/css"> .wrap{ /*m...

Kevin1906的博客 2万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

国产开源数据库-Chat2DB

相信用过EasyExcel的小伙伴应该都清楚,EasyExcel的出现对比poi实现了更加丰富的功能,这款软件同样也是EaseExcel的作者出品;从这款软件开源之初,就一直在关注这款国产软件,今天借这篇文章来分享下我对这款软件的真实感受,其中有优点也有待改进点。仪表盘能帮助你智能分析你的表中数据分布情况,并且智能生成可视化图表,类似Echarts;例如学生的年龄分布,地区分布,成绩分布等等;

2401_87105969的博客 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Chat2DB:开启数据库管理新时代的高效工具

Chat2DB是一款AI驱动的数据库管理工具,支持22种数据库类型,包括国产和主流数据库。通过自然语言转SQL、SQL转自然语言等功能,大幅提升数据管理效率。提供网页版和客户端两种使用方式,支持30天免费试用。特色功能包括AI一键建表、可视化报表自动生成等。新用户使用邀请码GM0666可获额外权益。无论是开发人员还是业务人员,都能轻松实现数据查询与分析。

归梦工作室 3666

网页登录mysql数据库设计_Web网页登录设计

登陆网页的简单功能的实现输入用户名和密码与数据库当中的用户名和密码匹配上,则登陆成功。首先我们要先配置好web制作所需要的软件,在mysql数据库当中建立表,建立用户名和密码在java ee上编写连接mysql数据库的代码String num = request.getParameter("num");session.setAttribute("username",num);String user...

weixin_30291543的博客 1988

Chat2DB快速部署指南,本地数据库远程访问一键搞定

朋友们,还在对着 SQL 语句抓狂吗?还在为了一个数据报表跟数据工程师撕逼吗?别慌!今天我就要给你们安利一款神器——Chat2DB!它简直就是数据库界的“ChatGPT”,让不懂 SQL 的小白也能像数据大神一样,轻松玩转各种数据库!而且,它还能远程使用,让你随时随地都能查数据!赶紧冲鸭!说了这么多,你是不是觉得 Chat2DB 只能在本地使用?太 out 啦!有了cpolar,你就可以随时随地远程访问 Chat2DB 啦!什么是 cpolar?

优快云站内信: https://i.youkuaiyun.com/#/msg/chat/qyj19920704 4105
上一篇: 文件链接下载
下一篇: session基础知识
Tket
博客等级 码龄9年 21粉丝 114原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值