介绍struts2框架

Struts2框架核心Jar包清单与功能介绍 本文还有配套的精品资源,点击获取 简介:SSH(Spring、Struts2和Hibernate)是Java Web开发中常用的开源框架组合。本资源主要关注Struts2框架所需的基本jar包,这些包是构建企业级应用程序的核心。Struts2作为MVC框架,在应用中负责HTTP请求处理和业务逻辑管理。本文介绍了Struts2框架的核心jar包,包括struts2-core.... 阅读详情
1.介绍struts2框架
问题:什么是框架,框架有什么用?
框架 是 实现部分功能的代码 (半成品),使用框架简化企业级软件开发 ,提高开发效率。
学习框架 ,清楚的知道框架能做什么? 还有哪些工作需要自己编码实现 ?
问题:什么是struts2框架,它有什么用?
Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。
其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心
struts2=struts1+webwork;
struts2框架是apache产品。
struts2是一个标准的mvc框架。 javaweb中的model2模式就是一个mvc模式。 model2=servlet+jsp+javaBean
struts2框架是在javaweb开发中使用的。
使用struts2框架,可以简化我们的web开发,并且降低程序的耦合度。
类似于struts2框架的产品 :
struts1 webwork jsf springmvc
ssh---struts2 spring hibernate
ssi---springmvc spring ibatis
XWork---它是webwork核心
Xwork提供了很多核心功能:前端拦截机(interceptor),运行时表单属性验证,类型转换,
强大的表达式语言(OGNL – the Object Graph Navigation Language),
IoC(Inversion of Control反转控制)容器等
Joern实战:从代码导入到Python分析的全流程避坑指南(附常见错误解决方案) 本文详细介绍了Joern静态分析工具从代码导入到Python分析的全流程实践指南,包括环境配置、代码导入技巧、数据库服务优化、Python交互分析及性能调优等关键步骤。特别针对常见错误提供了实用解决方案,帮助开发者高效进行代码安全分析和漏洞挖掘。 阅读详情

相关推荐

数字IC后端设计实现OCC(On-chip Clock Controller)电路介绍及时钟树综合案例

数字IC后端设计实现OCC(On-chip Clock Controller)电路介绍及时钟树综合案例

weixin_37584728的博客 4736

Struts2框架 简单介绍

1.什么是Struts2框架?           Struts2框架是用来替代servlet和jsp  他的功能就是访问服务器的请求、 2.Struts2框架的优点1. 接受参数(能自动封装)2. 参数的校验3. 可以控制页面的跳转4. 可以防止表单的数据重复提交5. 显示等待页面3. 历史Struts2,Struts1 在技术层面讲他...

a314290362的博客 1494

用matlab编程求矩阵的极大无关组,向量组极大无关组表示问题

已知向量组T:Eqn11.gif (3.16 KB, 下载次数: 1)2013-10-21 19:19 上传.(1) 求向量组T的秩,并判断向量组T的相关性;(2) 求T的极大线性无关组;(3) 将其余的向量用所求的极大线性无关组线性表示。程序:>> A=[1 1 3 2;-1 1 -1 3;5-2 8 9;-1 3 1 7]>> r=rank(A)>> A1=...

weixin_35094083的博客 7387

struts2框架的总结

struts2框架的学习心得   经过一段时间的学习,逐渐学会了java的一些框架,想在这里做个总结,可能有一些不足之处,日后补充。 一、struts2框架的历史         struts2框架是由apache基金会研发的一种开源框架,但是并不是单纯的由struts1版本升级而来,而是apache根据一个名为webwork的项目发展来的,所以两者的关系并不大。 二、为什

lanlan521523的博客 1945

Stable Diffusion跑图总爆显存?别急着换显卡,试试这个PYTORCH_CUDA_ALLOC_CONF参数调优

本文深入解析了Stable Diffusion运行中常见的显存不足问题,特别是由显存碎片化导致的假性OOM现象。通过详细讲解PYTORCH_CUDA_ALLOC_CONF参数中的max_split_size_mb设置技巧,提供了一套完整的显存优化方案,帮助用户在无需升级硬件的情况下显著提升AI绘画的稳定性与效率。

weixin_42524100的博客 347

STC32G电调调试血泪史:从TPH1R403NL MOS管烧毁到PWM信号异常排查全记录

本文详细记录了STC32G无刷电调调试过程中的常见问题与解决方案,包括MOS管烧毁、PWM信号异常等关键故障排查。通过电源系统检测、驱动电路验证及三相平衡调试等实战经验,帮助硬件爱好者快速定位问题,提升电调调试效率。特别针对TPH1R403NL等MOS管的保护措施进行了重点分析。

weixin_33736048的博客 551

struts2是什么,有什么作用,怎么使用,有什么好处?

注:参考文章:https://blog.csdn.net/qq_36754544/article/details/55062391struts2是一种重量级的框架,位于MVC架构中的controller,可以分析出来,它是用于接受页面信息然后通过内部处理,将结果返回。从架构的角度来讲,就是联系了模型层和视图层,将用户要求按照业务逻辑执行并且返回结果。简要概括一下它的作用,无非在于传递参数,将请求发...

admin_gc的博客 1万+

重构工业交互体验:响应式数据可视化大屏解决方案

从智慧园区到数据中心,从水务监控到风力发电场景,HT 通过 2D/3D 组态技术与响应式布局机制,让数据以更灵活、更精准的方式呈现场景动态 —— 这正是 HT 技术在工业可视化领域的核心价值。例如,在智慧楼宇监控系统中,HT 引擎可实时渲染建筑结构、设备状态与数据流,同时确保画面在不同尺寸屏幕上的一致性。以某工业数据中心大屏为例,HT 通过暗红色主调搭配工业元素,结合粉色与黄色点缀,打破传统深蓝色大屏的视觉定式,同时通过矢量图形确保色彩在不同亮度下的辨识度 —— 这正是 HT 技术在视觉设计上的独特优势。

Hightopo的博客 889

Struts2 框架总结(一):简单开发

Struts框架是什么?用来做什么?首先要知道mvc模式(model,view,controller),controller层用来接收页面请求的信息,并且调用service层来响应给界面信息。model层用来处理业务信息和数据库的交互,view层用来显示界面信息。Struts就是mvc模式的优秀代表,struts最主要的是处理mvc的controller层。他用一个过滤器来代替controller...

llllllxj的博客 2万+

树莓派与stm32通信超详细解答过程

笔者之前发过关于stm32与openmv通信的教程,在学习了几天opencv后,想实现树莓派4B与stm32进行通信。于是上网查询资料,最后实现了两者之间的通信,相信这对大多数电赛人都很有帮助,opencv的识别效果是远高于openmv以及K210的。在此我参考了以下资料辅助我学习,大家可以参考。基于树莓派4B与STM32的UART串口通信实验(代码开源)_树莓派4b串口波特率-优快云博客。

Halcyon0804的博客 5465

A算法的蒙特卡洛树搜索

A*算法的蒙特卡洛树搜索 作者:禅与计算机程序设计艺术 1. 背景介绍 在人工智能和游戏开发领域,搜索算法是一个非常重要的研究方向。其中A算法和蒙特卡洛树搜索是两种广泛应用的经典算法。A算法是一种启发式搜索算法,通过评估各个节点到目标节点的启发式代价来引导搜索方向,在

AI天才研究院 1740

struts2简介

struts2是基于MVC设计模式的Java Web框架技术之一,struts2框架按照MVC的设计思想把Java Web应用程序分为控制层,包括核心控制器FilterDispatcher和业务控制器Action,模型层,包括业务逻辑组件和数据库访问组件,视图层,包括HTML、JSP、struts2标签等。 1、struts2的控制器组件 在基于MVC的应用程序开发中,控制器组件的主要功能是从...

weixin_40544356的博客 1310

/home 挂载点无法访问 怎么解决 指令可以进入Home目录 du: 无法访问“*“: 输入/输出错误

本文介绍了Linux系统中XFS文件系统损坏的故障排查与修复方法。当/home挂载点出现I/O错误时,通过dmesg发现XFS日志错误和磁盘I/O报错,判断可能是文件系统逻辑损坏或硬件故障。解决方案包括:1)尝试卸载分区;2)使用xfs_repair工具进行预检查和正式修复;3)在极端情况下使用-L参数强制清空日志;4)若存在硬件故障,建议优先进行数据抢救并更换硬盘。最后强调重要数据应先备份,再考虑系统重建。

专注于计算机研发知识和资讯分享 155

struts2框架之struts框架介绍

如今,在Java Web 学习中,框架的学习是很重要的一个环节,大家很熟悉的名词SSH,代表的就是Struts、Spring、Hibernate三大框架。SSH也是现如今企业主流的JavaEE开发的一套架构。那么什么是框架呢?我们又为什么要学习框架?对于第一个问题,需要我们以后再实践的学习中慢慢体会,这里给一个定义:框架是实现部分功能的代码!那么学习框架的技术,我们可以利用框架来简化企业级软件开发

ZhiyouWu的博客 9648

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

深度学习工具包 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")

MVC框架及Struts2介绍

MVC框架及Struts2介绍 Struts2核心 Struts2拦截器 Struts2值栈和OGNL表达式 Struts2标签库1 框架1.1 框架  框架(Framework):指为解决一个特定问题而设计的具有一定约束性的结构。框架强调的是软件的设计重用性和系统的可扩充性,以缩短大型应用软件系统的开发周期,提高开发质量。一个好的框架必定是某个领域的最佳实践。   最佳实践(Bes

Winston_D的博客 1247

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Struts2框架使用介绍

最近开始学习Struts2框架,想把之前传统的servlet/jsp实现的MVC架构转化为Struts2框架的过程写下来,以备以后回顾。 这里会借鉴到其他大神的博客内容,方便理解。 首先看一下传统的显示: jsp界面代码: $.ajax({ type : "POST", //提交方式 url : "AccountServlet", //相当于form表单...

程序员小祝的博客 423

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

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

struts2框架介绍

struts2是基于web的一个MVC框架MVC介绍MVC思想将一个应用分为三个基本部分:Model(模型)、View(视图) 和Controller(控制器),这三个部分以最少的耦合协同工作,从而提高应用的可扩展及可维护性。MVC有如下特点:1.多个视图可以对应一个模型。按MVC设计模式,一个模型对应多个视图,可以减少代码的复制及代码的维护量,一量模型发生改变,也易于维护。2.应用被分为三层,降低了各层之间的耦合,提供了应用的可扩展性。3.MVC更符合软件工程化管理的精神。不同的层各司其职,每一层的组件具

renxing1207的专栏 4480

Struts 2框架介绍

在我的前一篇博客你是否混谈MVC和三层>>层介绍过MVC模式,既然了解了MVC模式,再次我们就来了解一下实现MVC的框架--Struts框架.   一.Struts2 框架简介 Struts2以WebWork 优秀的设计思想为基础,吸收了Struts1的部分优点,建立了一个兼容WebWork和Struts1的框架,实现了MVC设计模式.Struts2是Struts的下一代产品,它在Str

唐欢 2930

Struts2框架介绍及其漏洞实战

Struts2框架介绍及其漏洞实战 一、Struts2框架介绍 Struts介绍: Mvc框架 来源于webwork2,与1不兼容 运行环境是web容器 可多人协同,适合复杂可拓展到web应用 用的ognl为表达式引擎 Xwork为struts2底层核心 二、安装struts2、nmap、goby 安装nmap 参考:https://blog.csdn.net/meyo_leo/article/details/77918511 安装goby 三、Goby介绍: 这里以扫描web靶机为例进行

永不垂头的博客 450

JAVAWEB开发之Struts2详解(一)——Struts2框架介绍与快速入门、流程分析与工具配置以及Struts2的配置以及Action和Result的详细使用

Struts2框架介绍 Struts2开发入门 Struts2开发入门示例 模仿Struts2流程完成入门程序 Struts2流程分析与工具配置 Struts2处理流程 关于手动配置strutsxml文件中提示操作 关联strutsxml源文件 Config Brower插件使用 Struts2配置重点 Struts2配置文件加载顺序 关于Action的配置 1关于action配置其他细节 3关于常量配置 1修改struts2 的配置常量可以通过以下三种方式配置 2常用常量介绍 关于Action类的创建

8259

Struts2框架简单介绍

如需,了解Struts2详情,请点击,传送门 工作原理 在Struts2 框架中的处理大概分为以下步骤:   1.客户端初始化一个指向servlet容器(例如Tomcat)的请求。   2.这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的继承很有帮助,例如:SiteMe...

weixin_30410999的博客 209

Struts2框架简单流程介绍

如需,了解Struts2详情,请点击,传送门 工作原理 在Struts2 框架中的处理大概分为以下步骤:   1.客户端初始化一个指向servlet容器(例如Tomcat)的请求。   2.这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的继承很有帮助,例如:SiteMe...

桃子dev的博客 610

Struts2框架的国际化详细介绍及实例

国际化是指应用软件不用做任何修改就可以在不同国家或地区使用,能够支持不同的语言和国家,并按照当地用户的习惯(语言和格式习惯)来显示内容,如日期时间、数字和货币等。当国际化的软件在本地机器上运行时,需要进行本地化,即根据本地机器的语言和地区设置显示相应的内容。实现国际化的理想的方法就是将要显示的内容从程序代码中分离,而不是将其进行硬编码,这样,不用修改应用程序的源码就可以实现国际化,方便应用程序的维护和移植。

2201_75851346的博客 1596

Struts2框架项目介绍

Struts2框架 Struts2是经典的javaEE的web框架,提供了基于mvc应用程序的开发模式。 (一)搭建Struts2环境 新建Dynamic Web project工程 导入jar包 在配置文件web.xml中配置struts2的启动信息(如下) <filter> <filter-name>struts2</filter-name&g...

Flora_SM的博客 503

Struts2框架开发介绍及重要jar文件下载

Struts2框架开发介绍及重要jar文件下载,第一个helloword案例的实现过程

wangliaizq10000的专栏 3194

struts2+spring+mybatis框架整合详细介绍

一、问题的提出         最近一直在看各种主流javaweb框架,感触颇深,一个好的框架可以让你的程序代码变得相当的明了,也便于后期的维护!目前用到的主流框架包括struts2+spring+mybatis和spring+springmvc+mybatis(注:个人觉得mybatis框架很好用,所以框架基本都会选择用mybatis)。其实很多的小伙伴都想自己配置个框架,但是基于怕报错啊、引

qq_22028771的博客 2万+
上一篇: Spring的事务管理(四)
下一篇: struts2快速入门
Howinfun
博客等级 码龄10年 165粉丝 213原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值