Javaweb

视频入口

基本概念

前言

web开发:

  • 静态web
    1. html、css
    2. 提供给所有人看的数据始终不会发生变化。
  • 动态web
    1. 淘宝、几乎是所有的网站
    2. 提供给所有人看的数据始终会发生变化,每个人在不同的时间、地点,看到的信息各不相同。
    3. 技术栈:Servlet/JSP、ASP、PHP
      在java中,动态web资源开发的技术统称为javaweb。

web应用程序

web应用程序:可以提供浏览器访问的程序;

  • a.html、…多个web资源,这些web资源可以被外界访问,对外界提供服务。
  • 能访问到的任何一个页面或者资源,都存在于这个世界的某个角落的计算机上。(通过URL找到)
  • 这个统一的web资源会被放在同一个文件夹下:web应用程序–>Tomcat:服务器
  • 一个web应用由多个部分组成(静态、动态web)
    1. html、css、js
    2. jsp、servlet
    3. java程序
    4. jar包
    5. 配置文件(Properties)
      web应用程序编写完毕后,若想提供给外界访问,需要一个服务器来统一管理;

静态web

  • .htm、.html这些都是网页的后缀,如果服务器上一直存在这些东西,我们就可以通过网络直接进行读取。
    在这里插入图片描述

  • 静态web存在的缺点:

    1. web页面无法动态更新,所有用户看到的都是同一个页面
      1. 比如:轮播图、点击特效:都属于伪动态(JavaScript、VBScript)
    2. 它无法和数据库交互(数据无法持久化,用户无法交互)

动态web

  • 页面会动态展示:“web的页面展示效果因人而异”

在这里插入图片描述

  • 缺点:
    1. 加入服务器德尔动态web资源出现了错误,我们需要重新编写我们的后台程序,并重新发布;(停机维护)
  • 优点:
    1. web页面可以动态更新,所有用户看到都不是同一个页面
    2. 它可以与数据库交互(数据持久化:注册,商品信息,用户信息…)
      在这里插入图片描述

Web服务器

技术讲解

ASP

  • 微软:国内最早流行的就是ASP
  • 在HTML中嵌入了VB的脚本,ASP+COM
  • 在ASP开发中,基本一个页面就有几千行业务代码,页面及其混乱,因此维护成本高
  • 使用C#开发
  • IIS服务器

在这里插入图片描述

PHP

  • PHP开发速度很快,功能很强大,跨平台,代码很简单(市面70%网站使用)
  • 无法承载大访问量的情况(局限性)

JSP/Servlet

B/S:浏览器和服务器
C/S:客户端和服务器

  • sun公司主推的B/S架构
  • 基于java语言的(所有的大公司,或者一些开源的组件,都是用java写的)
  • 可以承载三高(高并发、高可用、高性能)问题带来的影响;
  • 语法像ASP

web服务器

服务器是一种被动的操作,用来处理用户的一些请求和给用户一些响应信息;

IIS

微软的;ASP…,Windows中自带的

Tomcat

在这里插入图片描述
下载Tomcat:

  1. 安装or解压
  2. 了解配置文件及目录结构
  3. 这个东西的作用

Tomcat

Tomcat安装

官网:点此进入
在这里插入图片描述
在这里插入图片描述

Tomcat启动和配置

文件夹作用:
在这里插入图片描述
启动、关闭Tomcat:
在这里插入图片描述
启动完成:
在这里插入图片描述
关闭:

  • 直接关闭黑窗口

在这里插入图片描述可能遇到的问题:

  • java环境变量没有配置
  • 闪退问题:需要配置兼容性
  • 乱码问题:配置文件中设置
  • Tomcat 10可能存在闪退问题,Tomcat 9可以使用

配置

可以在这里对端口号、网站信息进行更改
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
参考网站:

  • 用户用浏览器访问一个网站的时候背后的过程与步骤是怎样的? :点此进入
    在这里插入图片描述

发布一个web网站

  • 将自己写的网站,放到服务器(Tomcat)中指定的web应用的文件夹(webapps)下,就可以访问了。
    网站应该有的结构:

在这里插入图片描述

HTTP

什么是HTTP

HTTP(超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP之上。
- 文本:html,字符串,~
- 超文本:图片,音乐,视频,定位,地图~
- 端口号:80
HTTPS:
- 端口号:443

两个时代

  • http1.0
    • http/1.0:客户端可以与web服务器连接后,只能获得一个web资源,获得资源后会断开连接
  • http2.0
    • http/1.1:客户端可以与web服务器连接后,可以获得多个web资源。

HTTP请求

  • 客户端–发请求–服务器
    在这里插入图片描述在这里插入图片描述

请求行

在这里插入图片描述

  • 请求行中的请求方式:GET
  • 请求方式:Get、Post、HEAD,DELETE,PUT,TRACT
    • get:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据内容,不安全,但高效
    • post:请求能够携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全,但不高效

消息头

在这里插入图片描述

HTTP响应

  • 服务器–响应–客户端
    在这里插入图片描述
    在这里插入图片描述

常见面试题

当你的浏览器中地址栏输入地址并回车的一瞬间到页面能够展示回来,经历了什么?

Maven

在这里插入图片描述

Maven项目架构管理工具

在这里插入图片描述

下载安装Maven

在这里插入图片描述
下载后解压:
在这里插入图片描述

配置环境变量

在系统环境变量中:
安装成功:
在这里插入图片描述

阿里云镜像

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

本地仓库

在这里插入图片描述

在这里插入图片描述

在idea中使用Maven

  1. 创建maven模块

在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  1. 等待项目初始化完毕

在这里插入图片描述
在这里插入图片描述

  1. idea中的maven设置
    idea项目创建成功后,注意maven的配置
    在这里插入图片描述

创建一个普通的maven项目

不使用idea中的maven模板:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

标记文件夹功能

方法一:
在这里插入图片描述方法二:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在idea中配置Tomcat

在这里插入图片描述

在这里插入图片描述使用本地的Tomcat
在这里插入图片描述
解决警告问题:
必须要的配置:为什么会有这个问题:我们访问一个网站,需要指定一个文件夹名字
在这里插入图片描述
在这里插入图片描述

虚拟路径映射

在这里插入图片描述自己的idea:
在这里插入图片描述

在这里插入图片描述
“kuang”这个名字默认指向的是webapp,由于他是一个项目没有webapp里面那么多项目,所以我们要配置一个虚拟路径映射,使通过…/kuang可以调用到webapp里面的东西。
在这里插入图片描述
在这里插入图片描述

为什么要设置虚拟路径映射

在个人的项目中,遇到一个需求,需要实现文件在线查看,也就是需要给前端返回文件的相对路径。但是由于文件很多而且很大,将文件存储在项目的某个文件夹下并不是很好的方案。思来想去,还是觉得配置一个虚拟路径比较好。

接下来,我们看一下Idea如何配置虚拟路径映射。其实非常简单,在idea中,点击我们的服务器,然后选择 Edit Configurations,然后点击deployment,选择“+”号,来添加一个虚拟路径映射,然后选择我们要映射的目录,我们这里选择“c:\test”,在右侧的Application context中输入我们自定义的路径即可。

参考网站:

  1. Idea配置tomcat映射虚拟路径(文件上传路径):点此进入

pom文件

pom.xml是Maven的核心配置文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

导入配置文件

maven公共仓库地址:点此进入

Maven的高级之处在于,他会帮你导入这个jar包所依赖的其他jar包
在这里插入图片描述

maven由于它的约定大于配置,我们之后可以能遇到我们写的配置文件,无法导出或者无法生效的问题。

解决方案:
在这里插入图片描述

idea操作

在这里插入图片描述
目录树的结果:
在这里插入图片描述

解决遇到的问题

  1. Maven 发现导入不了东西。出现兼容性问题,是因为jdk版本的原因(建议换成jdk8),或者降低Maven版本
    在这里插入图片描述
  2. Tomcat闪退
  3. idea中每次都要重复配置maven

在这里插入图片描述
在这里插入图片描述

  1. maven项目中Tomcat无法配置
  2. maven默认web项目中的web.xml版本问题
    在这里插入图片描述
    默认的web.xml版本太老,考虑到兼容性问题,建议和Tomcat中的web.xml版本相同(替换为webapp4.0版本和Tomcat一致)。

在这里插入图片描述

Maven仓库使用

在这里插入图片描述

在maven中都没有找到有效的依赖,由于Tomcat也可以启动Servlet,所以Tomcat中肯定有支持的jar包

在这里插入图片描述
所以可以尝试在maven仓库中查找这两项
在这里插入图片描述
在这里插入图片描述
参考网站:

  1. IDEA Maven 报 Unable to import maven project解决方案:点此进入

这个是新建的Servlet类看到所需的包:
在这里插入图片描述如果导入不了,通过输入全名,导入依赖:
在这里插入图片描述
视频位置:
javaweb01:28:18分钟

package com.kuang.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class HelloServlet extends javax.servlet.http.HttpServlet{
    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
    {
        //响应的类型:html
        response.setContentType("text/html");
        //设置编码类型
        response.setCharacterEncoding("UTF-8");
        //获取响应的输出流
        PrintWriter out = response.getWriter();

        out.println("<html>");
        out.println("<head>");
        out.println("<title>Hello World!</title>");
        out.println("</head>");
        out.println("<body>");
//        out.println("<h1>Hello World!</h1>");
        out.println("<h1>你好!</h1>");//设置过编码类型之后可以输出“你好”,如果不设置,输出“??”
        out.println("</body>");
        out.println("</html>");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

在这里插入图片描述

参考网站:

  1. 使用 Intellij IDEA 新建一个 Servlet 项目:点此进入
  2. HttpServletResponse的getWriter()和getOutputStream()详解:点此进入

关于getWriter()和getOutputStream的理解
HttpServletResponse的实例对象在获取输出流时有两种方式,即getWriter()和getOutputStream(),但是这两种方式有什么联系和区别呢。
①PrintWriter out=response.getWriter()
out对象用于处理字符流数据。
②ServletOutputStream os=response.getOutputStream();
os用于输出字符流数据或者二进制的字节流数据都可以。

Servlet

Servlet简介

在这里插入图片描述

API

HelloServlet

Servlet接口Sun公司有两个默认的实现类:HttpServlet、
在这里插入图片描述

  1. 构建一个普通的Maven项目,以后我们的学习就在这个项目里面建立Module。

在这里插入图片描述

  1. Maven环境优化

    1. 修改web.xml为最新版本并点击右边栏Maven,刷新子项目的pom.xml
    2. 将maven的结构搭建完整(补充java、resources包并设置目录结构)
  2. 编写一个Servlet
    在这里插入图片描述

  3. 编写Servlet的映射
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

  4. 配置Tomcat

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 启动测试
    在这里插入图片描述

Servlet原理

Servlet是由Web服务器调用,web服务器在收到浏览器请求之后。会:
在这里插入图片描述
在这里插入图片描述

Mapping问题

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

加路径错误演示:
在这里插入图片描述

首先进入默认的Index页面:
在这里插入图片描述

输入 任何.qinjiang进入:
在这里插入图片描述
在这里插入图片描述

  1. 运行后:http://localhost:8080/s1,由于通配符/*原因会显示自己写的404。
  2. 进入http://localhost:8080/s1/hello,将会进入HelloServlet类,显示Hello,Servlet。因为指定的路径优先级最高。
  3. 进入http://localhost:8080/s1/hello999,将会显示404。因为通配符,并且没有这个页面的原因。

步骤:
在这里插入图片描述

在这里插入图片描述

ServletContext

web容器在启动的时候,它会为每一个web程序都创建一个对应的ServletContext对象,它代表了当前的web应用。

共享数据

在这个Servlet中保存的数据,可以在另一个Servlet中拿到:

在这里插入图片描述
放置数据:
在这里插入图片描述
读取数据:
在这里插入图片描述

配置xml:
在这里插入图片描述

测试访问结果:

在这里插入图片描述
在这里插入图片描述
错误演示:
在这里插入图片描述
补充:
在这里插入图片描述

获取初始化参数

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

请求转发

转发gp里面的内容到sd4:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
补充:
在这里插入图片描述

读取资源文件

在这里插入图片描述在这里插入图片描述

注意:java目录的properties文件可能出现无法读取的问题:
在这里插入图片描述

项目中文件位置:
在这里插入图片描述读取资源文件里面信息(target文件里面的也可以读取到):
在这里插入图片描述

在这里插入图片描述在这里插入图片描述
访问测试结果:
在这里插入图片描述

HttpServletResponse

在这里插入图片描述

类中方法简单分类

在这里插入图片描述

常用getwriter()输出中文,但是会导致字符串的损坏与丢失
常用getoutputstream()输出流

在这里插入图片描述

部分:
在这里插入图片描述

常见应用

在这里插入图片描述
在这里插入图片描述
注意:启动Tomcat时,留意当前加载的模块是否是当前模块。

不是中文文件名:

在这里插入图片描述

在这里插入图片描述

中文文件名:
在这里插入图片描述

在这里插入图片描述

验证码功能

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

实现重定向

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

输入red,跳转到img页面:
在这里插入图片描述
在这里插入图片描述

案例-用户登录:

在这里插入图片描述
在这里插入图片描述前端页面:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述前端页面测试(可以正常跳转页面):
在这里插入图片描述运行截图:

在这里插入图片描述

在这里插入图片描述

HttpServletRequest

在这里插入图片描述

获取前端传递的参数,请求转发

在这里插入图片描述
在这里插入图片描述注意设置中文格式:
在这里插入图片描述
如果写了 / 会出现404错误,显示找不到/hello/hello/success.jsp(但是需要跳转的页面是/hello/success.jsp,/ 会被再识别一遍Tomcat中配置的路径)。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

注意:
多项目时需要注意Tomcat配置的那个项目以及路径:
在这里插入图片描述后台接收中文乱码问题:
在这里插入图片描述

Cookie、Session

Cookie 会话

在这里插入图片描述

参考网站:

  1. 有状态和无状态会话的区别
  2. 深入理解有状态和无状态以及JWT和Session

保存会话的两种技术

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述配置Tomcat(发布):
在这里插入图片描述
在这里插入图片描述浏览器关闭之后会话结束。
在这里插入图片描述

在这里插入图片描述

String类型转化成Date类型:
在这里插入图片描述

  1. 获取cookie中的值类型为字符串,我们想让他输出为一个date。通过Long.parseLong,变成长整型(时间戳),然后new一个date,将时间戳变成date对象,然后输出的就是date对象
  2. System.currentTimeMillis() 返回的是一个毫秒数转成了字符 value中,然后解析构建date对象
  3. 个人理解:由于System.currentTimeMillis()返回值类型为long,并且返回当前时间,所以需要输出对象为Date对象。因为Long 类是基本类型 long 的包装类,所以使用Java.long.Long.parseLong()方法(简单来说:是将一个字符串转换成数字的方法)
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

在这里插入图片描述

Cookie

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述第一次走c1,正常显示上次登录时间(在c1的Cookie有效期内)。
第二次走c2,结果如下图所示:已被清理。
第三次走c1,不显示上次登录时间

第二次:
在这里插入图片描述第三次:
在这里插入图片描述
然后再刷新c1,同样会刷新上次登录时间。之后走c2同样会删除原来的登录记录。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Session(重点)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
Session存储用户信息:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
注销Session:

手动注销:
在这里插入图片描述不同浏览器有不同的SessionId,同一个浏览器的SessionId相同。
在这里插入图片描述
然后走s3,注销Session。
之后走s2,显示空指针异常
在这里插入图片描述
再走s1,SessionId将刷新。

会话自动过期-自动注销(web.xml配置):
在这里插入图片描述
在这里插入图片描述

JSP

什么是JSP

在这里插入图片描述

JSP原理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在Maven中,手动导入jar包:

在这里插入图片描述2. 对爆红的没有导入的类名,Alt+insert:

在这里插入图片描述3.
在这里插入图片描述
在这里插入图片描述

JSP基础语法

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
JSP的注释,不会在客户端显示,HTML就会!

补充:构建新版xml:
不勾选,直接next
在这里插入图片描述

之后点击右下角自动导入后:
在这里插入图片描述
在这里插入图片描述

JSP指令

在这里插入图片描述

页面信息:
在这里插入图片描述
xml配置:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
两种方式的区别:
在这里插入图片描述下面的方法:
在这里插入图片描述补充:

  1. 由于<%@include%>本质上是将header.jsp和footer.jsp合二为一,所以如果先在这两个页面中给i赋过值,再到jsp3页面赋值将会报栈错误(重名了)。
  2. 但是如果使用< jsp:include page>(jsp标签)就不会出现这个错误,因为它的本质上还是三个页面,所以在header中定义过i之后,在其他页面同样可以定义。
    在这里插入图片描述补充:
    在这里插入图片描述

web-inf:客户端无法访问

9大内置对象

在这里插入图片描述page:不用了解

JVM中的双亲委派机制
从底层到高层(作用域):page–>request–>session–>application

在这里插入图片描述
作用域测试:
在这里插入图片描述

在这里插入图片描述指定作用域:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

JSP标签、JSTL标签、EL表达式

在这里插入图片描述

JSP标签

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

JSTL标签

在这里插入图片描述

在这里插入图片描述在这里插入图片描述
c:if
在这里插入图片描述在这里插入图片描述
运行截图:

在这里插入图片描述
在这里插入图片描述

错误解决:
在这里插入图片描述

idea只使用Tomcat的work工件,所以要将idea中的包手动导入Tomcat中:

在这里插入图片描述c:choose c:when
在这里插入图片描述

在这里插入图片描述
c:forEach
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

JavaBean

在这里插入图片描述
在这里插入图片描述

MVC三层架构

什么是MVC:Model、View、Controller(模型、视图、控制器)

早些年

在这里插入图片描述
在这里插入图片描述

MVC三层架构

在这里插入图片描述
在这里插入图片描述

Filter 过滤器(重点)

在这里插入图片描述
过滤器和Servlet一模一样,只不过实现的是过滤器接口。
在这里插入图片描述
Filter开发步骤:

  1. 导包
    在这里插入图片描述
  2. 编写过滤器
    1. 导包不要错
      在这里插入图片描述

    2. 实现Filter接口,重写对应的方法即可
      在这里插入图片描述
      在这里插入图片描述

    3. 在web.xml中配置Filter
      在这里插入图片描述运行截图: 在这里插入图片描述
      在这里插入图片描述

监听器

实现一个监听器的接口;(有N种)

  1. 编写一个监听器
    1. 实现监听器的接口
      在这里插入图片描述在这里插入图片描述
      在这里插入图片描述

    2. web.xml中注册监听器
      在这里插入图片描述

    3. 看情况是否使用

运行结果:

Tomcat的问题:第一次运行可能有多个session(Tomcat在启动时,会进行连接,但是可能失败-比如:本例子,前两次失败了,但是Session没有被销毁所有会有3人在线。)重新发布一下项目
在这里插入图片描述
在这里插入图片描述

重新发布一下就可以了:

在这里插入图片描述同一个电脑,两个不同浏览器(客户端)进行访问:(可以通过开放电脑ip,让其他电脑进行访问。)

在这里插入图片描述

过滤器、监听器常见应用

监听器:GUI编程中经常使用;

在这里插入图片描述

在这里插入图片描述

通过适配器模式,重写它的子类:

在这里插入图片描述

在这里插入图片描述补充:
System.exit();

System.exit(status):
status 为 0:表示正常退出程序,也就是结束当前正在运行中的java虚拟机。
status 为 1 或 -1 或 任何其他非零值 :表示非正常退出当前程序。
注意:此方法不会返回任何值。

用户登录之后才能进入主页,用户注销后就不能进入主页了

在这里插入图片描述在这里插入图片描述
使用创建常量类来存储需要用到的常量,在需要对用到的大量常量进行修改的时候方便修改。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

运行结果:

  1. 输入错误用户名,跳转到错误页面
    在这里插入图片描述在这里插入图片描述

  2. 点击返回登录页面,输入正确用户名,进入主页
    在这里插入图片描述
    在这里插入图片描述

  3. 点击注销,返回登录页面,输入主页网址,不能进入,跳转到错误页面(过滤器实现)在这里插入图片描述
    在这里插入图片描述

JDBC

什么是JDBC:Java连接数据库
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

idea中连接数据库:
在这里插入图片描述
idea右侧没有的话:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述选择数据库:
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

Statement是普通的(不安全的),PreparedStatement是预编译的对象(安全的)。
在这里插入图片描述
在这里插入图片描述

预编译SQL:
在这里插入图片描述
在这里插入图片描述

事务

在这里插入图片描述

JUnit单元测试

依赖:
在这里插入图片描述

加过@Test注释后,不用在走main方法就可以对方法进行测试。
@Test注解只有在方法上有效,只要加了这个注解的方法,就可以做直接运行。
在这里插入图片描述
在这里插入图片描述如果有错误(int i=1/0),将停止并不更新数据库内容。没有错误将更新数据库内容。
在这里插入图片描述
在这里插入图片描述
补充:
装箱与拆箱
JDBC | 第四章:事务提交与回滚

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值