HttpServletRequest

【MNE脑电信号处理学习笔记1】数据的读取、可视化、剪裁、滤波和保存 MNE之读取原始数据、可视化数据、剪裁数据、滤波和保存 Reading & visualizaing raw data, cropping, filtering, and saving 原视频教程:Pybrain: M/EEG analysis with MNE Python 原笔记和材料:pybrain_mne 本文根据视频和个人理解对原笔记进行细微修改。 Import the few packages we’ll need import matplotlib import pathlib i 阅读详情

1、HttpServletRequest

service方法中的request的类型是ServletRequest,而doGet/doPost方法的request的类型是HttpServletRequest,HttpServletRequest是ServletRequest的子接口,功能和方法更加强大。

request的运行流程:

这里写图片描述

这里写图片描述

1.1、通过request获得请求行

获得客户端的请求方式:
String getMethod()
获得请求的资源:
String getRequestURI() 
StringBuffer getRequestURL() 
String getContextPath() ---web应用的名称
String getQueryString() ---- get提交url地址后的参数字符串
username=zhangsan&password=123

注意:request获得客户机(客户端)的一些信息
request.getRemoteAddr() — 获得访问的客户端IP地址

html:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <form action="/WEB15/line" method="post">
        <input type="text" name="username"><br>
        <input type="password" name="password"><br>
        <input type="submit" name="提交"><br>

    </form>
</body>
</html>

servlet:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //1、获得请求方式
    String method = request.getMethod();
    System.out.println("method:"+method);
    //2、获得请求的资源相关的内容
    String requestURI = request.getRequestURI();
    StringBuffer requestURL = request.getRequestURL();
    System.out.println("uri:"+requestURI);
    System.out.println("url:"+requestURL);
    //获得web应用的名称
    String contextPath = request.getContextPath();
    System.out.println("web应用:"+contextPath);
    //地址后的参数的字符串
    String queryString = request.getQueryString();
    System.out.println(queryString);
    //3、获得客户机的信息---获得访问者IP地址
    String remoteAddr = request.getRemoteAddr();
    System.out.println("IP:"+remoteAddr);
}

打印结果:

method:POST
uri:/WEB15/line
url:http://localhost:8080/WEB15/line
web应用:/WEB15
null
IP:0:0:0:0:0:0:0:1

1.2、通过request获得请求头

long getDateHeader(String name)
String getHeader(String name)
Enumeration getHeaderNames()
Enumeration getHeaders(String name)
int getIntHeader(String name)
referer头的作用:执行该此访问的的来源,做防盗链
protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    //1、获得指定的头
    String header = request.getHeader("User-Agent");
    System.out.println(header);
    //2、获得所有的头的名称
    Enumeration<String> headerNames = request.getHeaderNames();
    while(headerNames.hasMoreElements()){
        String headerName = headerNames.nextElement();
        String headerValue = request.getHeader(headerName);
        System.out.println(headerName+":"+headerValue);
    }
}

打印出结果:

Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0
host:localhost:8080
user-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0
accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
accept-language:zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
accept-encoding:gzip, deflate
connection:keep-alive
upgrade-insecure-requests:1
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0
host:localhost:8080
user-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0
accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
accept-language:zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
accept-encoding:gzip, deflate
connection:keep-alive
upgrade-insecure-requests:1

连接跳转的时候,referer:

protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    //对来源的进行判断
    String header = request.getHeader("referer");
    if(header!=null&&header.startsWith("http://localhost")){
        //是从我自己的网站跳转过来的 可以看
        response.setContentType("text/html;charset=UTF-8");
        response.getWriter().write("中国确实已经拿到100块金牌....");
    }else{
        response.getWriter().write("你是盗链者,可耻!!");
    }
}

1.3、通过request获得请求体

html

<form action="/WEB15/content" method="get">
    <input type="text" name="username"><br>
    <input type="password" name="password"><br>
    <input type="checkbox" name="hobby" value="zq">足球
    <input type="checkbox" name="hobby" value="pq">排球
    <input type="checkbox" name="hobby" value="ppq">乒乓球<br>
    <input type="submit" value="提交"><br>
</form>

请求体中的内容是通过post提交的请求参数,格式是:

username=zhangsan&password=123&hobby=football&hobby=basketball

方法获得请求参数:

String getParameter(String name) 
String[] getParameterValues(String name)
Enumeration getParameterNames()
Map<String,String[]> getParameterMap()

servlet

protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    //1、获得单个表单值
    String username = request.getParameter("username");
    System.out.println(username);
    String password = request.getParameter("password");
    System.out.println(password);
    //2、获得多个表单的值
    String[] hobbys = request.getParameterValues("hobby");
    for(String hobby:hobbys){
        System.out.println(hobby);
    }
    //3、获得所有的请求参数的名称
    Enumeration<String> parameterNames = request.getParameterNames();
    while(parameterNames.hasMoreElements()){
        System.out.println(parameterNames.nextElement());
    }
    System.out.println("------------------");
    //4、获得所有的参数 参数封装到一个Map<String,String[]>
    Map<String, String[]> parameterMap = request.getParameterMap();
    for(Map.Entry<String, String[]> entry:parameterMap.entrySet()){
        System.out.println(entry.getKey());
        for(String str:entry.getValue()){
            System.out.println(str);
        }
        System.out.println("---------------------------");
    }
}

注意:get请求方式的请求参数 上述的方法一样可以获得

解决post提交方式的乱码:request.setCharacterEncoding("UTF-8");
解决get提交的方式的乱码:parameter = new String(parameter.getbytes("iso8859-1"),"utf-8");

1.4、request是一个域对象
request对象也是一个存储数据的区域对象,所以也具有如下方法:

setAttribute(String name, Object o)
getAttribute(String name)
removeAttribute(String name)

注意:request域的作用范围:一次请求中

1.5、request完成请求转发

//获得请求转发器----path是转发的地址
RequestDispatcher getRequestDispatcher(String path)
//通过转发器对象转发
requestDispathcer.forward(ServletRequest request, ServletResponse response)

servlet1

protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    //想request域中存储数据
    request.setAttribute("name", "tom");

    //servlet1 将请求转发给servlet2
    RequestDispatcher dispatcher = request.getRequestDispatcher("/servlet2");
    //执行转发的方法
    dispatcher.forward(request, response);
}

servlet2

protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    //从request域中取出数据
    Object attribute = request.getAttribute("name");

    response.getWriter().write("hello haohao..."+attribute);
}

1.6、细节问题

ServletContext域与Request域的生命周期比较
ServletContext:创建:服务器启动;销毁:服务器关闭;域的作用范围:整个web应用
request:创建:访问时创建request;销毁:响应结束request销毁;域的作用范围:一次请求中

转发与重定向的区别
重定向两次请求,转发一次请求;
重定向地址栏的地址变化,转发地址不变;
重新定向可以访问外部网站 转发只能访问内部资源;
转发的性能要优于重定向。

户端地址与服务器端地址的写法
客户端地址:是客户端去访问服务器的地址,服务器外部的地址,特点:写上web应用名称、直接输入地址:重定向;
服务器端地址:服务器内部资源的跳转的地址,特点:不需要写web应用的名称、转发。

2、用户注册案例

建表

CREATE TABLE `user` (
  `uid` varchar(32) NOT NULL,
  `username` varchar(20) DEFAULT NULL,
  `password` varchar(20) DEFAULT NULL,
  `name` varchar(20) DEFAULT NULL,
  `email` varchar(30) DEFAULT NULL,
  `telephone` varchar(20) DEFAULT NULL,
  `birthday` varchar(20) DEFAULT NULL,
  `sex` varchar(10) DEFAULT NULL,
  `state` int(11) DEFAULT NULL,
  `code` varchar(64) DEFAULT NULL,
  PRIMARY KEY (`uid`)
)

导入jar包和c3p0

Servlet

import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.Map;
import java.util.UUID;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.dbutils.QueryRunner;
import com.ithiema.utils.DataSourceUtils;
public class RegisterServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //设置request的编码---只适合post方式
        request.setCharacterEncoding("UTF-8");

        //get方式乱码解决
        //String username = request.getParameter("username");//乱码
        //先用iso8859-1编码 在使用utf-8解码
        //username = new String(username.getBytes("iso8859-1"),"UTF-8");

        //1、获取数据
        //2、将散装的封装到javaBean
        //使用BeanUtils进行自动映射封装
        //BeanUtils工作原理:将map中的数据 根据key与实体的属性的对应关系封装
        //只要key的名字与实体的属性 的名字一样 就自动封装到实体中
        Map<String, String[]> properties = request.getParameterMap();
        User user = new User();
        try {
            BeanUtils.populate(user, properties);
        } catch (IllegalAccessException | InvocationTargetException e) {
            e.printStackTrace();
        }
        //现在这个位置 user对象已经封装好了
        //手动封装uid----uuid---随机不重复的字符串32位--java代码生成后是36位
        user.setUid(UUID.randomUUID().toString());

        //3、将参数传递给一个业务操作方法
        try {
            regist(user);
        } catch (SQLException e) {
            e.printStackTrace();
        }

        //4、认为注册成功跳转到登录页面
        response.sendRedirect(request.getContextPath()+"/login.jsp");
    }

    //注册的方法
    public void regist(User user) throws SQLException{
        //操作数据库
        QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());
        String sql = "insert into user values(?,?,?,?,?,?,?,?,?,?)";
        runner.update(sql,user.getUid(),user.getUsername(),user.getPassword(),user.getName(),
                user.getEmail(),null,user.getBirthday(),user.getSex(),null,null);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
}

登陆servlet

import java.io.IOException;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import com.ithiema.register.User;
import com.ithiema.utils.DataSourceUtils;
public class LoginServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        //1、获得用户名和密码
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        //2、调用一个业务方法进行该用户查询
        User login = null;
        try {
            login = login(username,password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        //3、通过user是否为null判断用户名和密码是否正确
        if(login!=null){
            //用户名和密码正确
            //登录成功 跳转到网站的首页
            response.sendRedirect(request.getContextPath());
        }else{
            //用户名或密码错误
            //跳回当前login.jsp
            //使用转发 转发到login.jsp  向request域中存储错误信息
            request.setAttribute("loginInfo", "用户名或密码错误");
            request.getRequestDispatcher("/login.jsp").forward(request, response);
        }
    }

    public User login(String username,String password) throws SQLException{
        QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());
        String sql = "select * from user where username=? and password=?";
        User user = runner.query(sql, new BeanHandler<User>(User.class), username,password);
        return user;
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
}
three.js开发3D地图记录(二) 添加地图点击事件,点击区域,地图区域改变颜色并浮起来。 阅读详情

相关推荐

芯片设计-信号完整性 SI 解析:Unit Interval 与比特周期的关系及其在高速信号中的应用

本文深入解析了芯片设计中信号完整性(SI)的核心概念Unit Interval(UI)与比特周期的关系及其在高速信号中的应用。通过实际案例和计算公式,详细阐述了UI在不同数据速率下的变化、在眼图分析中的关键作用,以及如何应对高速信号设计中的抖动和码间干扰等挑战。文章还提供了PCB布线和芯片设计中的UI优化技巧,帮助工程师提升高速信号设计的实战能力。

weixin_28683391的博客 469

大数据基础 servlet 第二天

4/27/2018 8:14:04 AMServlet晨测1. 编写一个JSON格式的对象 id=1 name='张三' age=18 friends=(小丽,18,女) (小红,20,女) (小刚,19,男) 2. 简述请求/响应的执行流程 3. 说一说Servlet生命周期 4. 404和500是什么意思 ...

大数据开发—齐冀 291

人大金仓的‘影子表’sys_user:搞懂Schema优先级,告别字段不存在的报错

本文深入解析人大金仓数据库中‘影子表’sys_user的Schema优先级问题,帮助开发者解决字段不存在的报错。通过分析Schema搜索路径机制,提供四种解决方案,包括连接时指定Schema、动态调整搜索路径、永久修改用户设置和使用完全限定表名,确保查询准确无误。

weixin_30329623的博客 597

HttpServletRequest详解

HttpServletRequest HttpServletRequest代表客户端的请求,用户通过http协议访问服务器,HTTP请求中的所有信息会被疯转到HttpServletRequest 通过这个Request方法可以获得客户端的所有信息 首先先看一下Request的一些方法 主要的方法是获取参数请求转发 获取前端传递的参数 注意 sendRedirect()方法进行重定向时,需要在前面加上项目路径 getRequestDispatcher()进行转发时,不需要加前面的项目路径 请求转发和重

qq_41359998的博客 1万+

Ansys Circuit新手必看:IBIS模型导入时,Pin Import和Buffer Import到底怎么选?

本文详细解析了Ansys Circuit中IBIS模型导入时Pin Import与Buffer Import的选择策略,帮助SI/PI工程师根据仿真需求做出正确决策。通过对比两种方式的特性差异和应用场景,提供实用的选择指南和性能优化建议,提升信号完整性仿真效率。

weixin_26846533的博客 262

VulnHub系列之BadStore_123渗透测试

BADSTORE: 1.2.3 早期网商系统漏洞鉴赏(2004)

Flynn的博客 1630

【Servlet】请求的解析

目录 请求的转发 请求转发的特点 base标签 演示程序不能跳回来的情况 运行结果: 到位分析: Web中的相对路径和绝对路径 相对路径: 绝对路径: web中/ 斜杆的不同意义 HttpServletResponse类 HttpServletResponse类的作用 两个输出流的说明 往客户端回传数据 中文乱码问题 第一种方式: 第二种方式: 第三种方式: 请求重定向 第一种方式 请求重定向的特点 第二种方式 请求的转发 请求的转发是指从一个...

weixin_60719453的博客 1996

基于cat12搞定SBM的ROI的统计分析——vertex水平和ROI水平的双样本T检验

前言 一、Atlas皮层图谱介绍 二、SBM分析——主要以皮层四种常用指标中的厚度(thickness)和沟深(depth)为主

Sophia2023的博客 8754

Servlet学习——HttpServletRequest简介

HttpServletRequest基本概述 javax.servlet.http.HttpServletRequest是SUN制定的Servlet规范,是一个接口,表示请求, 其父接口是 javax.servlet.ServletRequest。“ HTTP 请求协议”的完整内容都被封装到 request对象中。 程序员只需要面向 HttpServletRequest 接口调用方法即可。...

qq_41515050的博客 7020

解决OpenCASCADE性能瓶颈:显示加速与三角剖分优化全攻略

本文深入探讨OpenCASCADE在工业设计和CAD建模中的性能优化策略,重点解决显示加速与三角剖分等核心瓶颈问题。通过智能刷新控制、显示数据结构优化和动态LOD技术,显著提升渲染效率和交互体验,适用于复杂场景下的三维可视化应用。

weixin_30752699的博客 344

爬虫瑞数5案例:联通

瑞数动态安全 Botgate(机器人防火墙)以“动态安全”技术为核心,通过动态封装、动态验证、动态混淆、动态令牌等技术对服务器网页底层代码持续动态变换,增加服务器行为的“不可预测性”,实现了从用户端到服务器端的全方位“主动防护”,为各类 Web、HTML5 提供强大的安全保护。

老衲爱洗头的博客 4471

Servlet基础之HttpServletRequest详解

本文主要讲解了一个Http请求所经历的过程,以及Http请求的三部分内容,分别为请求行、请求头和请求体,以及如何通过HttpServletRequest获取对应的信息,通常来讲Servlet获取客户端数据的数据是第一步,因此HttpServletRequest对象是非常重要的,对其中的方法做到熟练掌握也可让我们在开发的过程中更加的得心应手。

丹丹的后花园 6万+

【33】软考软件设计师——算法题(二):贪心法与回溯法深度精讲|第4题进阶满分攻略

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第33篇,承接第32篇分治法与动态规划,聚焦**下午第4题算法大题进阶核心**,详解贪心法与回溯法两大高频难点算法。全文超4000字深度拆解贪心法核心原理、贪心选择性质、局部最优推全局最优的底层逻辑,厘清贪心算法适用边界与经典误区;深挖回溯法深度优先遍历思想、递归回溯三步流程、可行性剪枝与最优性剪枝两大核心技巧;全覆盖活动选择、零钱兑换、01背包贪心禁区、八皇后、全排列等软考必考经典题型;配套标准化算法框架代码、考场填空模板、剪枝优化实操案例

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 440

HttpServletRequest简介

HttpServletRequest是什么?HttpServletRequest是什么?是一个接口,其父接口是;是Tomcat将请求报文转换封装而来的对象,在Tomcat调用service方法时传入;代表客户端发来的请求,请求中的所有信息都可以通过该对象获得;

gege_0606的博客 2855

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

HttpServletRequest参数获取,HttpServletRequest详解

--------------------------HttpServletRequest参数获取,HttpServletRequest详解--------------------------------- HttpServletRequest获取参数(重要) 1 HttpServletRequest获取参数方法 可以使用HttpServletRequest获取客户端的请求参数,相关方法如下:...

李昆鹏的博客 19万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ServletRequest 和 HttpServletRequest 接口详解

ServletRequest 和 HttpServletRequest 接口的一些问题

vV_Leon的博客 3901

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

对HttpServletRequest中的Header进行增删

这个 Controller 很简单,把客户端的所有 Header,以 JSON 形似响应给客户端。// 遍历所有请求Header,响应给客户端。} }// 遍历所有请求Header,响应给客户端。// 遍历所有请求Header,响应给客户端。} }// 遍历所有请求Header,响应给客户端。} }

Json的博客 1772

HttpServletRequest类详解

HttpServletRequest是扩展 javax.servlet.ServletRequest 中的一个接口,为 HTTP servlet 提供请求的相关信息。 servlet 容器创建 HttpServletRequest 对象,并将该对象作为参数传递给 servlet 的 service 方法(doGet、doPost,等等)。 方法 作用 参数 返回值 getAuthT...

贪吃小明的博客 2475

HttpServletRequest及HttpServletResponse

MIME类型。

plante34的博客 837

HttpServletRequest和HttpServletResponse

HttpServletRequest封装了HTTP请求信息,提供获取请求方法、路径、参数等常用方法。HttpServletResponse封装HTTP响应,需先设置响应头再写入内容,注意使用flush()而非close()来确保数据发送。这两个接口屏蔽了底层HTTP协议细节,开发者只需关注接口方法,无需关心具体实现类。Servlet设计初衷支持多种协议,但实际上仅用于HTTP处理,存在一定过度设计。

qq_61370853的博客 984

HttpServletRequest vs ServletContext 全面解析

HttpServletRequest vs ServletContext 全面解析

weixin_51288065的博客 1210

HttpServletRequest 作用

通过 `HttpServletRequest` 对象我们可以方便的获取到所有与客户端请求相关的信息,并根据这些信息来处理请求、生成响应。 它是 Servlet 与客户端之间沟通的桥梁。

专注于技术分享 1022

HttpServletRequest和HttpRequest的区别

最近好多人问我这两个啥区别,没想到有这么多不清楚。所以在这里简要说明下,如果我们点进去HttpServletRequest这个进去,发现这是一个接口,而且源码如下: ```java public byte[] getBytes() { return StringCoding.encode(value, 0, value.length); } ...

qq_25113803的博客 1万+

HttpServletRequest类

目录 1.HttpServletRequest类的作用 2.HttpServletRequest类的常用方法 3.获取请求参数 4.doGet 请求的中文乱码解决 5.doPost 请求的中文乱码解决 6.请求的转发 7.base 标签的作用 8.Web 中的相对路径和绝对路径 9.web 中 / 斜杠的不同意义 1.HttpServletRequest类的作用 每次只要有...

LeeBlog 1231

【web】HttpServletResponse/HttpServletRequest

HttpServletRequest代表客户端的请求,用户通过HTTP协议访问服务器,HTTP请求种的所有信息会被封装到HttpServletRequest,通过这个HttpServletRequest的方法,获取客户端的所有信息。一个web资源收到客户端请求,他会通知客户端去访问另外一个web资源,这个过程叫重定向。8,使用OutputStream将缓冲区的数据输入到客户端。3,设置想办法让浏览器能够支持下载我们需要的东西。1,要获取下载文件的路径。4,获取下载文件的输入流。1,获取前端传递的参数。

菜鸟的学习笔记 710

HttpServletRequest和HttpServletResponse接口

一、两接口的实现类 HttpServletRequest与HttpServletResponse的对象request,response的实际的类型是RequestFacade和ResponseFacade。这两个类都是org.apache.catalina.connector包下面的。也就是我使用的web服务器tomcat的两个类。所以还是由web容器来负责实例化HttpServletReque...

krismile__qh的博客 925
上一篇: HttpServletResponse
下一篇: Kotlin入门语法
jiangtea
博客等级 码龄10年 33粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值