response重定向和request转发

Request&Response(重定向&转发) Request&Response和重定向&转发超级详细介绍 阅读详情

在做web项目时我们经常会用到转发和重定向,而对于初学者来说总是被他们俩个搞得一头雾水,他们两个貌似给人神秘感,其实是我们还不够了解他们。

 

       为什么response重定向和为什么request是转发?

       当我们些许的去思考这个问题的时候,是否和我一样有恍然大悟的感觉呢。

 

request的转发

 

       首先说说request,他是用户需求数据的载体,把用户的数据交给他,他去把请求给服务器送去,这就是request。转发,这个词组我么从来都不陌生,喂喂,把你收到的第一封情书转发给我欣赏欣赏~~ 不要让你的pursur知道哦。

 

       看过一篇文章,有这样一个比喻,我们可以把request的转发这样理解。有一个人叫浏览器,浏览器写信找张三借钱,张三的钱不够,张三很义气,于是他又找张四借钱,找张四借了一部分和加上自己的一部分写信回复给了浏览器。在这过程,浏览器只发出一次请求,~~借钱~~,并收到了一次回复,他从张三那里借钱,并不知道有一部分是出自张四之手。

 

 

response重定向

 

       再说说response重定向,重定向就是重新定方向,人生的路由很多很多条,我们有很多很多种选择,同时有很多种不同的快乐的方式。走这条路我们走不下去的时候,我们不一定就坚持,错误的坚持让我们丢了自己,所以我们就开始“重定向”,又开始新的尝试了。response是服务器端对客户端发来请求的回应,告诉用户重新发送一个对另一个URL的请求。

 

       还说浏览器这个人,第二次写信和张三借钱,张三这次回信,说自己其实没钱,并把张四的地址给了浏览器,让浏览器写信找张四去借,把张四的地址发给了浏览器,浏览器写信给张四,最终张四收到信,并把钱回信寄给了浏览器。这次浏览器发送了两次请求,收到了两次回复。

       重定向:

       转发:

 

 

 

 

 

 

              重定向和转发比较:  

  

转发重定向比较

request.getRequestDispatcher("xxx.jsp").forward(request, response);

response.sendRedirect("xxx");

变量作用域

request中存放的变量不会失效

request存放的变量失效,进入一个新的request作用域

浏览器的地址

地址栏保持初值不会改变

改变为重定向的页面地址

作用范围

只能是同一个web应用中的组件

可重定向到其他程序资源或者其他站点

URL以/开头

相对于web应用程序根目录

相对于web站点根目录

各自优点

相对高效,隐藏实际链接地址。

能跳转到其他的服务器上的资源。

 

请求转发(request对象)和重定向(response)的区别及何时使用请求转发和重定向 request和response区别,及请求转发和重定向的使用 阅读详情

相关推荐

转发(Request)和重定向(Response)的区别(图片详解)

1.转发(Request) 1.一种在服务器内部的资源跳转一个方式 2.浏览器发送请求到服务器的A资源,A资解决一部分后转发到B资源再进行处理 2.重定向(Response) 1.浏览器发送请求到A资源,但A资源处解决不了请求的信息数据 2.A资源会响应消息给浏览器,告诉浏览器重定向到另一个资源,也就是B资源 3.A资源会响应给浏览器一个状态码:302 和响应头localtion:B资源的路...

weixin_45930636的博客 897

Request请求转发和Respones请求重定向详细介绍

Request请求转发和Respones请求重定向详细介绍

weixin_45428910的博客 2586

USRP X410 MPM版本与主机UHD版本不匹配问题记录与解决

至此大功告成!之前安装软件的坑算是填起来了,再次记录一下,希望能帮到有同样问题的小伙伴~

yanzuwu233的博客 1435

response应用及重定向和request转发

response是指HttpServletResponse,该响应有很多的应用,比如像浏览器输出消息,下载文件,实现验证码等。3.配置web.xml文件及tomcat服务器。2.实例类FileServlet的具体实现。1.创建一个javaweb的项目。

weixin_51646336的博客 1275

树莓派使用 OLED 屏显示图片及文字

树莓派默认是不带显示屏的,如果想要查看系统的一些信息,需要使用电脑登录到树莓派,或者通过 HDMI 连接外接显示器查看。这样做总是有点麻烦,我们可以通过外接一个 OLED 屏来显示一些关键参数或者图片。本文将详细介绍操作方法。 OLED 模组介绍 OLED 屏主要有两种:128×32 和 128×64 ,主要颜色是白、黄、蓝。OLED 屏的特点是功耗低,价格便宜,使用 I2C 接口与主机连接。本文所使用的是 128×64 尺寸的屏幕,外形如下: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直

码到成功 3743

从零部署思澈科技SiFli-Solution:避坑指南与实战排错

本文详细介绍了从零部署思澈科技SiFli-Solution开发环境的完整流程与实战排错指南。重点解析了Keil uVision5版本选择、Butterfli工具路径配置等关键步骤,并针对Keil路径报错、函数冲突等高频问题提供了具体解决方案,帮助开发者高效避坑,快速搭建稳定的嵌入式开发环境。

devops8pract的博客 529

关于response对象的转发和重定向

Response对象的转发和重定向如何理解 转发( forward) 和重定向( redirect )的·区别方式就在于他们的 转发形式。forward的转发方式是直接转发的,而rediect则为间接转发。 直接转发方式定义:客户端和浏览器只发出一次请求, Servlet、 HTML、JSP或其它信息资源,由第二个信息资源响应该请求,在请求对象request中,保存的对象对于每个信息资源是共享的。 间接转发方式定义:实际是两次请求,服务器端在响应第一次请求的时候 ,让浏览器再向另外一个URL发出请求,从而

求知求志求智 1233

手把手教你用scATAC-seq分析拟南芥根尖染色质可及性(附代码实战)

本文详细介绍了使用scATAC-seq技术分析拟南芥根尖染色质可及性的完整流程,涵盖从实验设计、数据质控、细胞分群到差异分析和多组学整合的实战步骤。通过具体的代码示例,帮助植物研究者掌握单细胞表观组学分析的核心方法,揭示细胞异质性和基因调控动态。

weixin_29291185的博客 265

简简单单----(六)response重定向和request转发 通俗易懂

在做web项目时我们经常会用到转发和重定向,而对于初学者来说总是被他们俩个搞得一头雾水,他们两个貌似给人神秘感,其实是我们还不够了解他们。 为什么response重定向和为什么request是转发? 当我们些许的去思考这个问题的时候,是否和我一样有恍然大悟的感觉呢。 request的转发 首先说说request,他是用户需求数据的载体,把用户的数据交给他,他去把请求给服...

836811384 422

system_stm32f10x.c文件分析

配置系统时钟(包括系统时钟源、锁相环(PLL)倍频系数、高级高性能总线(AHB)/ 高级外设总线(APBx)预分频器以及闪存相关设置)。该函数在系统复位后的启动阶段被调用,且调用时机早于跳转到主程序之前。

Jia shuheng的博客 602

【测开求职】面试题:计算机网络 详细版整理

本篇文章是笔者为准备研究生复试和校招而写,因此主要针对问答,注重理解,而不在于细节计算。读者可以先查看上面的链接走一遍计算机网络的整体框架结构。其中,重点难点以及易混淆的知识点,笔者会用其他文章进行了详述,在知识点处贴好了链接,有需要的可以查阅。

vector的博客 5936

request请求转发和response重定向的区别

request请求转发和response重定向的特点区别 请求转发: 使用的方法:request.getRequestDispatcher(String url).forward(request, response); 注:url是请求转发的地址,相对于当前页面的路径 特点: 1. 地址栏不发生变化 2. 保留第一次请求的信息 3. 请求次数为1次 请求转发:客户端发送请求到服务端,服务端转发到其他页面, 所以是一次请求,地址栏没有变化 重定向: 使用方法: response.sendRedi

qq_44809887的博客 904

uniapp [全端兼容] - 实现全景图Vr 720°全景效果查看预览功能,3D全景图流畅不卡顿渲染+手势拖拽+悬浮工具按钮,uniAPP实现vr看720度全景效果示例代码(H5小程序APP全兼容)

uniapp显示720度全景图,720°全景图显示,在h5中展示720°全景图,浏览全景图,基于uniApp实现vr全景预览,加载全景图,uni-app全景预览插件,UNI-APP实现3D全景图,实现720°全景图展示,uniapp全景视频播放,uniapp项目实现vr720度全景图片预览,在网页上展示760全景图片和视频,全景图场景切换,UNIAPP全景VR图,uniapp加载720全景图_uniapp怎么加载vr图片,uniapp实现vr全景看房,uni-app实现全景效果,加载很慢卡怎么办,实现全景预

🏆 前端领域优质创作者 1万+

request转发和response重定向

request转发和response重定向 1. request转发:一种服务器内部的资源跳转方式。 步骤: 1.通过request对象获取转发器对象 2.使用转发器对象进行转发 RequestDispatcher requestDispatcher = request.getRequestDispatcher(String var1); requestDispatcher.forward(req...

qq_40882932的博客 453

【NVMEM子系统】二、NVMEM驱动框架

该子系统整体架构不算太大,还是比较容易去理解的,下面我们一起去一探究竟!,该子系统主要用于实现EEPROMEfuse等非易失存储器的统一管理。在早期,像EEPROM驱动是存放于目录下,由于没有做到好的抽象,每次需要去访问相应内存空间,都需要去复制几乎一样的代码,去注册sysfs,这是一个相当大的抽象泄露。NVMEM子系统就是为了解决以往的抽象泄露问题。

Donge's Blog 1714

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

request、response请求转发和重定向

请求转发的实现方式:req.getRequestDispatcher("/路径").forward(req,resp);将数据存储到request域:req.setAttributes("data","hello");获取请求头数据(key:value):request.getHeader();请求参数的获取:get请求:request.getQueryString()根据key获取值:req.getSttribute("data");获取字符输出流:resp.getWriter().write()

m0_57218914的博客 412

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

request,response以及转发,重定向和session

request和response request:封装了http请求信息,通过这个对象去获取请求信息,他是ServletRequest的子接口 response:封装了相应信息 //获取姓名的值 //姓名:< input type=“text” name=“username” id=“username”>< br/> //input属性name的值 String name=...

mtx188的博客 916

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

request请求转发和response重定向

1.response对象 提供的方法: void addCookie( Cookie cookie ); 服务端向客户端增加cookie对象 void sendRedirect(String location ) throws IOException :页面跳转的一种方式(重定向) void setContetType(String type):设置服务端响应的编码(设置服务端的contentT...

Quc2019的博客 695

java request 重定向_javaWeb中request请求转发和response重定向

1.访问资源运用forward方法只能重定向到同一个Web应用程序中的一个资源。而sendRedirect方法可以让你重定向到任何URL。2.request.getForward代码中的"/uu"则代表相对与WEB应用的路径。举例:Servlet 和 目标文件的包路径:Servlet 代码:中 doPost 和doGet代码:request 重定向url地址或者是是相对于 本项目 (WEB13...

weixin_34662154的博客 1056

Request请求转发和Response重定向

1.Request请求转发 在Request请求转发的过程中我们需要使用setAttaribute("名称","内容");方法发送到域中,在调用getRequestDispatcher("path").forword(request,response).将request和response作为参数放到forword()方法中。我们要在请求的路径文件中调用getAttaribute("名称"),会返回一个对象我们就得到了请求转发的内容。我们在服务器访问该页面是也会的到我们请求path路径的内容...

a6545416的博客 960

谈谈request和response的本质关系,转发和重定向的本质

谈谈request和response的本质关系: 一个是请求对象,一个是响应对象,那么这两个对象是由谁创建的? 答案是,web容器创建的,简单来说,tomcat容器创建的。 整个流程是这样的: 首次访问的时候,才创建目标servlet。 由客户端(也就是客户浏览器)对web容器发出HTTP请求, 由web容器根据http请求创建出request对象和response对象。虽然response对象里面是空的,但是这个时候他就已经被创建出来了,他俩相当于是同一天生的亲兄弟。 来我们来看一个标准的servle

TheGreatButton的博客 629

response重定向和request转发 通俗易懂

在做web项目时我们经常会用到转发和重定向,而对于初学者来说总是被他们俩个搞得一头雾水,他们两个貌似给人神秘感,其实是我们还不够了解他们。          为什么response重定向和为什么request是转发?        当我们些许的去思考这个问题的时候,是否和我一样有恍然大悟的感觉呢。   request的转发          首先说说request,他是用户需求数据的

java 毕业设计的专栏 7244

大话Request和Response对象—— 从此转发重定向so easy

在了解Request和Response对象之前,我们必须先明白HTTP中的请求报文和响应报文 HTTP中的请求信息 HTTP中的请求消息包含四部分,分别为: 请求行 ​ 请求方法 URL地址 HTTP/版本号 ​ GET /FirstServlet HTTP/1.1 请求头 请求头名称:请求头值 请求信息例如: Host: sp1.baidu.com Connection: keep-alive sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="96",

Tomas_yue的博客 807

浅谈java Web中的request和response,以及转发和重定向的区别。

今天着重学习了JSP内置对象,尤其是request和response,以及转发和重定向的区别,所以在此总结一下。 如有错误和纰漏,敬请指正! request对象主要用于接收客户端通过HTTP协议连接传输到服务器端的数据,作用域是从HTTP请求到服务器处理结束,返回相应的整个过程。 主要方法是setParameter()和getParameter(),为变量赋值或者获得变量的值。 r

zhanglianqi1004的博客 1036

请求转发和重定向的区别以及关于request与response内置对象

在【JSP页面元素,内置对象以及tomcat配置技巧】这篇博文里,后面有说到关于jsp的9大内置对象以及request介绍以及常见用法;这一篇文章,主要讨论request和response的一些用法,重点说response对象与请求转发和重定向的一些区别; 在jsp中;request对象称为请求对象,目的是将客户端发送的请求信息送给服务端,服务端可以通过该对象拿到客户端的一切需求信息。而resp...

Charles 561
上一篇: 逆波兰计算器
下一篇: 系统评测指标—准确率(Precision)、召回率(Recall)、F值(F-Measure)
ayue521
博客等级 码龄10年 6粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值