web全栈式开发之SSM框架(Spring+Spring MVC+MyBatis)

基于Spring Boot与SSM架构的女士电商平台系统设计与实现 本文详细阐述了一个基于Java语言,整合Spring Boot与SSM(Spring, Spring MVC, MyBatis)框架的女士垂直领域电商平台的设计与实现全过程。系统采用经典的分层架构,涵盖了用户管理、商品展示、购物车、订单处理、支付集成(模拟)、后台管理等核心电商功能。本文将深入探讨技术选型、系统架构设计、数据库建模、核心模块的实现细节以及安全与性能优化考量,并提供关键代码片段。本项目旨在为开发者提供一个全栈式、可落地的电商系统解决方案,并展示现代Java Web开发的最佳实践。 阅读详情

目录

1.Spring简介

2.Spring的优势

3.Spring程序开发步骤 

4.Bean标签范围配置

5.Bean生命周期配置

6.Bean实例化三种方式

7.Bean的依赖注入概念

8.Bean的依赖注入的数据类型

9.引入其他配置文件(分模块开发)

10.Spring的重点API

11.数据源(连接池)的作用

12.数据源的开发步骤

13.抽取jdbc配置文件

Spring注解开发

1.Spring原始注解

2.Spring新注解

3.Spring集成Junit步骤

4.Spring集成web环境遇到的坑!!!

5.ApplicationContext应用上下文获取方式

6.Spring提供获取应用上下文的工具


1.Spring简介

Spring 是分层的JavaSE/EE应用full-stack轻量级开源框架,以IOC(Inverse of Control:反转控制)和AOP(Aspect Oriented Programming:面向切面变成)为内核。提供了展现层SpringMVC和持久层Spring JDBCTemplate以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的JavaEE企业应用开源框架。

2.Spring的优势

(1)方便解耦,简化开发:通过Spring提供的IOC容器,可以将对象间的依赖关系交由Spring进行控制,避免硬编码所造成的过度耦合,用户也不必再为单例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。

(2)AOP编程的支持:通过Spring的AOP功能,方便进行面向切面编程,许多不容易用传统OOP实现的功能可以通过AOP轻松实现。

(3)声明式事务的支持:可以将我们从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活的进行事务管理,提高开发效率和质量。

(4)方便程序的测试:可以用非容器依赖的编程方式进行几乎所有的测试工作,测试 不再是昂贵的操作,而是随手可做的事情。

(5)方便集成各种优势框架:Spring对各种优秀框架(Struts、Hibernate、Hessian、Quartz等)的支持。

(6)降低 JavaEE API的使用难度:Spring对JavaEE API(如JDBC、JavaMail、远程调用等)进行了封装,使这些API的使用难度降低。

(7)Java源码是经典的学习范例:Spring的源代码设计精妙、结构清晰,处处体现着大师对Java设计模式灵活运用以及对Java技术的高深造诣。它的源代码无疑是Java技术的最佳实践的范例。

3.Spring程序开发步骤 

(1)导入Spring开发的基本包坐标;

(2)编写Dao接口和实现类;

(3)创建Spring核心配置文件applicationContext.xml;

(4)在Spring配置文件中配置UserDaoImpl;

(5)使用Spring的API获得Bean实例。

4.Bean标签范围配置

1)当scope的取值为singleton时

        Bean的实例化个数:1个

        Bean的实例化时机:当Spring核心文件(applicationContext.xml)被加载时,实例化配置的Bean实例

   Bean的生命周期:

  • 对象创建:当应用加载,创建容器时,对象就被创建了
  • 对象运行:只要容器在,对象一直活着
  • 对象销毁:当应用卸载,销毁容器时,对象就被销毁了       

2)当scope的取值为prototype时

        Bean的实例化个数:多个

        Bean的实例化时机:当调用getBean()方法时实例化Bean

  • 对象创建:当使用对象时,创建新的对象实例
  • 对象运行:只要对象在使用时,就一直活着
  • 对象销毁:当对象长时间不用时,被Java的垃圾回收期回收了

5.Bean生命周期配置

  • init-method:指定类中的初始化方法名称
  • destroy-method:指定类中的销毁方法名称

6.Bean实例化三种方式

  • 无参构造方法实例化
  • 工厂静态方法实例化
  • 工厂实例方法实例化

7.Bean的依赖注入概念

依赖注入(Dependency Injection):它是Spring框架核心IOC 的具体实现。

在编写程序时。通过控制反转,把对象的创建交给了Spring,但是代码中不可能出现没有依赖的情况。IOC解耦只是降低他们的依赖关系,但不会消除。例如:业务层仍会调用持久层的方法。

这种业务层和持久层的依赖关系,在使用Spring之后,就让Spring来维护了,简单的说,就是坐等框架把持久层对象传入业务层,而不用我们自己去获取。

8.Bean的依赖注入的数据类型

  • 普通数据类型
  • 引用数据类型
  • 集合数据类型

9.引入其他配置文件(分模块开发)

<import resource="applicationContext-xxx.xml"/>

10.Spring的重点API

ApplicationContext app = new ClassPathXmlApplicationContext("xml文件")
app.getBean("id")
app.getBean(Class)

11.数据源(连接池)的作用

  • 数据源(连接池)是提高程序性能而出现的
  • 事先实例化数据源,初始化部分连接资源
  • 使用连接资源时从数据源中获取
  • 使用完毕后将连接资源归还给数据源
  • 常见的数据源(连接池):DBCP、C3P0、BoneCP、Druid等

12.数据源的开发步骤

  • 导入数据源的坐标和数据库驱动坐标
  • 创建数据源对象
  • 设置数据源的基本连接数据
  • 使用数据源获取连接资源和归还连接资源

13.抽取jdbc配置文件

applicationContex.xml加载jdbc.properties配置文件获得连接信息。

首先,需要引入context命名空间和约束路径:

                           http://www.springframework.org/schema/context/spring-context.xsd

Spring注解开发

1.Spring原始注解

Spring是轻代码而重配置的框架,配置比较繁重 ,影响开发效率,所以注解开发是一种趋势,注解代替xml配置文件可以简化配置,提高开发效率。

注意:使用注解进行开发时,需要在applicationContext.xml中配置组件扫描,作用是指定哪个包及其子包下的Bean需要扫描以便识别使用注解配置的类、字段和方法。

<!-- 注解的组件扫描 -->
<context:component-scan base-package="com.caoyan"></context:component-scan>

2.Spring新注解

使用原始注解还不能全部替代xml配置文件,还需要使用注解替代的配置如下:

  • 非自定义的Bean的配置:<bean>
  • 加载properties文件的配置:<context:property-placeholder>
  • 组件扫描的配置:<context:component-scan>
  • 引入其他文件:<import>
  • @Configuration、@ComponentScan、@Bean、@PropertySource、@Import、

3.Spring集成Junit步骤

  • 导入Spring集成Junit的坐标
  • 使用@RunWith注解替换原来的运行期
  • 使用@ContextConfiguration指定配置文件或配置类
  • 使用@Autowired注入需要测试的对象
  • 创建测试方法进行测试

4.Spring集成web环境遇到的坑!!!

我们要把项目部署到tomcat中去,现在tomcat最新版本为tomcat10,这就是个坑!!!放弃tomcat10,选择tomcat9。

5.ApplicationContext应用上下文获取方式

应用上下文是通过new ClasspathXmlApplicationContext(spring配置文件)方式获取的,但是每次从容器中获得Bean时都要编写new ClasspathXmlApplicationContext(spring配置文件),这样的弊端是配置文件加载多次,应用上下文对象创建多次。

在Web项目中,可以使用ServletContextListener监听Web应用的启动,我们可以在web应用启动中,就加载Spring的配置文件,创建应用上下文对象ApplicationContext,在将其存储到最大的域servletContext域中,这样就可以在任意位置从域中获得应用上下文ApplicationContext对象了。

6.Spring提供获取应用上下文的工具

Spring提供了一个监听器ContextLoaderListener,该监听器内部加载Spring配置文件,创建应用上下文对象,并存储到ServletContext域中,提供了一个客户端工具WebApplicationContextUtils供使用者获得应用上下文对象。

我们只需要做两件事:

  • 在web.xml中配置ContextLoaderListener监听器(导入spring-web坐标)
  • 使用WebApplicationContextUtils获得应用上下文对象ApplicationContext

持续更新中...

构建SSM留言板项目:实战Java Web开发 SSM框架是由Spring、SpringMVC和MyBatis三个框架整合而成的,它代表了Java EE开发中一个非常流行的技术栈。SSM框架通过各自框架的互补,提供了企业级应用开发的完整解决方案,实现了从后端服务到前端展示的全栈式开发流程。这一组合提高了开发效率,降低了系统耦合度,易于维护和扩展,成为了众多Java开发者在Web开发中的首选。MVC模式最早由Trygve Reenskaug在1978年提出,旨在提高应用程序的可维护性和可扩展性。 阅读详情

相关推荐

SSM网上医院预约挂号系统源码深度解析

本文还有配套的精品资源,点击获取 简介:本文以一个基于SSM框架的网上医院预约挂号系统源码为例,深入分析其技术细节和设计思想。系统采用Spring、SpringMVC和MyBatis技术栈,实现了业务逻辑处理、数据访问、模型定义和请求处理等功能。源码中包含了JSP用户界面、关键配置文件和安全措施。通过学习源码,开发者可以提升Web开发技能,了解如何将理论知识应用于实际项目。...

weixin_42599908的博客 900

Vue开发一个电商全栈项目

文章目录1、需求分析2、项目搭建2.1、创建后台管理系统2.2、创建客户端APP2.3、创建服务端3、开发服务端接口3.1、连接数据库3.2、封装数据模块对象3.3、设计接口3.4、封装CRUD(封装好的可以直接拿出来用)3.5、接口规范3.5.1、分类管理模块3.5.2、商品管理模块3.5.3、数据统计模块3.6 将来实现一个功能模块(上面理解,这个要会用)4、后台管理系统开发4.1、设计路由4.2、封装axios请求4.3、文件上传4.3.1、设计服务端文件上传接口4.3.2、设计前端上传组件4.4、富

estrusKing的博客 2284

SSM框架实现JavaWeb图片上传预览及数据库存储

SSM框架是Java EE开发中非常流行的全栈式轻量级框架,它是由Spring、SpringMVC和MyBatis三个框架组成的一个集合体,广泛应用于企业级Web应用开发中。SSM框架继承了Spring的轻量级和控制反转(IoC)、MyBatis的强大ORM支持以及SpringMVC的高效MVC模式,这三者的结合使得开发者能够轻松进行业务逻辑处理、数据持久化以及Web层的交互。

weixin_33628677的博客 638

从零开始搭建一个完整的web全栈开发环境并实现服务器部署(pycharm +Ubuntu+ django+uwsgi+nginx + neo4j/MySQL)

写在前面: 这基本是我第一次着手去搭建一套开发环境,从软件到依赖包到服务器部署,代码同步调试,从零看着一大堆资料到搭建出一个基本的开发环境并成功运行,我觉得有必要把其中的过程和对我有帮助的资料重新整理 linux操作:由于服务器系统大多在linux系统运行,所以熟练掌握linux的各种基本命令是非常重要的,但我觉得,单纯去学命令容易没有条理,可以跟着教程一步步做着去学,也能掌握每一步命令的用途 ...

u014581594的博客 2515

Java开发图书管理系统SSM完整教程

SSM框架是由Spring、Spring MVC和MyBatis三个开源框架整合而成,通过这三个框架的高效整合,能够创建出企业级的Java Web应用。Spring框架:负责业务对象的依赖注入(DI)、事务管理、数据访问等。Spring MVC框架:负责Web层的MVC设计模式实现,管理Web层的请求和响应。MyBatis框架:提供数据持久层的解决方案,专注于SQL和数据库交互。SSM框架为开发者提供了一个全栈式开发环境,让开发者可以更加专注于业务逻辑的实现。

weixin_42514540的博客 957

基于SSM+MySQL的羽毛球馆管理系统完整源码+数据库

本文还有配套的精品资源,点击获取 简介:本系统采用SSM技术栈(Spring、SpringMVC、MyBatis)和MySQL数据库,提供了一套完整的羽毛球馆管理解决方案。系统涵盖会员管理、场地预订、订单管理、财务管理和后台管理等功能模块。通过实战项目,学生将掌握SSM框架的应用、数据库设计、前后端交互和业务逻辑处理等技能。本源码包含完整的数据库结构和代码实现,为学习和实践...

weixin_34162851的博客 1169

简易的web全栈开发——前端部分

简易的web全栈开发——前端部分

qq_40913902的博客 1008

JSP到SpringBoot的汽车4S店销售库存管理系统设计案例

JSP(JavaServer Pages)是一种动态网页技术标准,允许开发者将Java代码嵌入到HTML页面中,用以生成动态内容。JSP页面通常被编译为Servlet,然后由Servlet引擎运行。它简化了服务器端与客户端的交互,是早期Web开发中广泛采用的技术之一。SSM框架是由Spring、SpringMVC和MyBatis三个框架整合而成,它是基于Java的轻量级框架组合。

weixin_28746457的博客 686

《Web 应用项目开发:从前端到后端的全栈之旅》

在当今数字化时代,Web 应用项目开发已经成为构建各类互联网服务的核心技能。无论是小型企业网站还是大型电子商务平台,一个高效、稳定且用户体验良好的 Web 应用都离不开精心的设计与开发。在这篇博客中,我将分享我在 Web 应用项目开发过程中的一些经验与技术心得,希望能对大家有所帮助。

2401_86144212的博客 1995

《UE4游戏开发》之 《音效系统的实现》

音效系统需要负责管理什么事情: 1.1 确定声音控制的分类:如背景音乐、技能音效、界面音效、角色配音等,不同游戏对声音有不同的分类 1.2 控制每个分类的声音的开启与关闭,以及调节每个分类声音的大小 解决如何分类: 2.1 首先需要知道ue4为声音分类提供了什么:SoundClass通常需要一个根分类【SC_RPG_Master】,便于总体控制音效,以及指定引擎默认启动的音效 打开SoundClass资产【SC_RPG_Master】,对根控制的设置,将逐级传递并按比例进行设置,以此达到控制一类声音的目的.

qq_21919621的博客 2126

NA400与昆仑通态MODBUS/TCP通讯调试说明

点击增加设备通道,弹出窗口进行设置,通道类型选择“0区输出继电器”,通道地址为1,通道个数为1,读写方式为读写。点击增加设备通道,弹出窗口进行设置,通道类型选择“4区输出寄存器”,数据类型选择“16位 无符号二进制”,通道地址为21001,通道个数为1,读写方式为读写。5.添加设备通道:双击莫迪康MODBUSTCP子设备,点击添加设备通道,根据Modbus规约地址表进行参数的设置,表格可在NAPro软件帮助中查看,如下图所示。然后可以在设备通道调试数据中观察到Q1的值为1,NW1的值678,表示通讯成功。

weixin_44281509的博客 2492

新手必备!2024年 Web 全栈开发路线图

Web 全栈开发是指创建网站或应用程序的前端和后端。Web 全栈开发人员是掌握网站或网络应用程序前端(客户端软件)和后端(服务器软件)开发技术的专业人员,能够熟练地在应用程序的客户端、服务器端开展工作。他们负责从构建用户界面到整合数据库的整个 Web 开发流程。Web 全栈开发人员熟练掌握多种编程语言、框架和工具。他们掌握各种技能,从构建用户界面到开发服务器端逻辑,他们有能力从零开始创建一个完整的网络应用程序。Web 全栈开发人员的主要职责:与设计团队合作开发应用程序创建后端数据库和服务器。

qq_39172059的博客 1万+

Windows 11 部署 Docker Desktop:从 WSL 报错到服务配置的完整排障实录

本文详细记录了在Windows 11上部署Docker Desktop时遇到的WSL报错问题及完整解决方案。从Hyper-V配置、BIOS设置到系统服务检查,提供了一系列实用命令和排查步骤,帮助开发者快速解决'Unexpecter WSL error'等常见问题,实现Docker与WSL2的稳定运行。

weixin_30687051的博客 122

ssm知识

SSM框架作为Java企业级开发的主流技术栈,通过Spring的IoC和AOP核心功能、Spring MVC的Web层支持以及MyBatis的灵活数据访问,为开发者提供了一套完整的解决方案。本文从框架整合、配置详解到实战案例,系统地介绍了SSM框架的开发流程和最佳实践。

DJQ351044djqDJQ的博客 1151

WSL2网络配置全攻略:如何让Windows和Linux子系统互相访问端口(附防火墙设置)

本文深入解析WSL2的网络架构,并提供详细的端口互通配置指南。针对WSL2与Windows宿主机之间常见的网络访问问题,文章从原理出发,逐步讲解如何识别网络环境、配置Windows防火墙规则、调整服务监听地址,并介绍镜像网络模式等进阶优化方案,最终实现稳定可靠的双向端口访问。

sony5的博客 1148

从零到一:Quartus II连接开发板实战,打通绘图、管脚分配、编译与下载全链路

本文详细介绍了使用Quartus II软件连接FPGA开发板并完成首个项目的全流程。从硬件连接到驱动安装,到绘制电路框图、精准分配管脚,再到编译设置与最终下载,手把手指导您打通从设计到硬件实现的完整链路,是FPGA初学者的实战入门指南。

mqtt6iot的博客 717

SSM (Spring+SpringMVC+MyBatis) 框架前后端分离、跨域问题解决

SSM框架前后端分离、跨域问题解决认识前后端分离一、交互形式二、代码组织方式三、开发模式四、数据接口规范流程跨域问题解决一、spring @CrossOrigin 实现原理二、跨域后session数据丢失问题 认识前后端分离 在传统的web应用开发中,大多数的程序员会将浏览器作为前后端的分界线。将浏览器中为用户进行页面展示的部分称之为前端,而将运行在服务器,为前端提供业务逻辑和数据准备的所有代...

weixin_38171468的博客 2202

STM32实战开发(71):STM32人脸识别开发教程:基于摄像头模块的人脸识别系统

在嵌入式系统中,STM32凭借其强大的计算性能、丰富的外设接口以及低功耗特性,成为了实现人脸识别系统的理想平台。STM32虽然没有强大的计算能力,但可以通过合理利用外部硬件加速模块,如DSP、GPU、FPGA等,结合轻量级的人脸识别算法,实现高效的人脸识别系统。尽管STM32的计算资源相对有限,但通过合理的优化和使用高效的算法,我们依然能够实现高效的人脸识别功能。在本项目中,我们使用。在STM32开发中,虽然处理能力有限,但通过优化算法和合理利用硬件加速,我们仍然可以实现一个轻量级的、实时的人脸识别系统。

2201_76125393的博客 1662

关于SSM框架的学习日记

SSM(Spring、SpringMVC、Mybatis) 基本概念 Spring: 什么是Spring框架(Spring的体系结构),Spring于2003年兴起,是一个分层的全栈式轻量级开源框架,为了解决企业应用开发的复杂性而创建。它包含的一系列的功能要素,大约被分为20个模块,归纳为7个部分:Core Container、Data Access/Integration、Web、AOP、Instrumentation和Test部分。 Spring框架的精髓:IOC和AOP及两者区别 IOC:控制反转,

Zo_Sa的博客 319

落地实战!Python构建地方政府公开数据爬虫:政策/数据/规划全维度抓取(附反爬适配+数据清洗)

政务公开数据爬虫的核心不是“技术多先进”,而是“适配政务网站的特性”——慢一点、稳一点、合规一点,比追求抓取速度更重要。多地市爬虫集群:通过配置文件管理不同地市的URL规则,实现全省/全国政务数据抓取;图片表格识别:结合OCR工具(如pytesseract)识别政务网站的图片表格,转换为结构化数据;数据可视化:将抓取的统计数据导入PowerBI/Matplotlib,实现区域发展趋势分析。

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

2020年信奥赛C++提高组csp-s初赛真题及答案解析(阅读程序第3题)

2020年信奥赛C++提高组csp-s初赛真题及答案解析(阅读程序第3题)

王老师青少年编程 992

MVC 到 SSM 、SSH时代

从经典的JSP+Servlet+JavaBean的MVC时代,到SSM(Spring + SpringMVC + Mybatis)和SSH(Spring + Struts + Hibernate)的Java 框架时代,再到前端框架(KnockoutJS、AngularJS、vueJS、ReactJS)为主的MV*时代,然后是Nodejs引领的全栈时代,技术和架构一直都在进步。虽然“基于NodeJS...

weixin_30449239的博客 121

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...

【JavaWeb项目实现】+【常用框架】(待整理)

此文章已废弃,更全面的分析资料在:JavaWeb 个人学习思路 1. 开发必备工具: 1. Maven Maven核心功能就是合理叙述项目间的依赖关系,通过pom.xml配置jar包信息。一般使用三种方式:本地仓库、第三方仓库、中央仓库。 2. Svn/git 2. SSM: Spring + SpringMVC + MyBatis 1、Sprin...

jy0921 3万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

2026毕设ssm+vue旅游景点分析网站论文+程序

本研究设计并实现了一个基于SSM(Spring+SpringMVC+MyBatis)和Vue.js的旅游管理系统,旨在解决中小型旅游企业信息化管理中的信息孤岛、业务流程繁琐等问题。系统包含用户管理、景点信息、购票管理、酒店预订等七大核心模块,采用前后端分离架构,通过RESTful API实现数据交互。研究采用软件工程方法,结合文献研究和功能分析,重点解决了技术整合、业务逻辑处理等开发难点。预期成果包括完整的系统实现、毕业设计论文及相关技术文档,为旅游行业数字化转型提供解决方案。系统部署环境为MySQL5.7

sheji3010的博客 512

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

java中利用框架传入相同的url实现crud操作_SpringBoot整合Mybatis实现简单的CRUD

作者:TyCoding发于Java知音:[加精] SpringBoot整合Mybatis实现简单的CRUD-Java知音继上篇文章:Spring-Boot入门之环境搭建。这次我们整合SpringBoot-Mybatis实现简单的CRUD业务。需求:详解SpringBoot工程的构建、与SSM项目在工程搭建上的不同。实现SpringBoot-Mybatis整合征服数据库。解决页面跳转,详解与SSM阶...

weixin_39576270的博客 152
上一篇: 一个缩进符引发的错误:NotImplementedError
下一篇: SSM框架(Spring+SpringMVC+Mybatis)
Caoyy686868
博客等级 码龄8年 5742粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Caoyy686868

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值