Apache Tomcat 7.0.73 64位版本深入解析

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:Apache Tomcat 7.0.73是一个开源的Java Servlet和JSP规范应用服务器,专为64位操作系统优化性能而设计。它包括对Servlet、JSP的支持,提供简单的配置流程、日志和错误管理、灵活的Web应用部署选项,以及管理界面。安全性配置、性能优化和热部署功能都是其显著特点。作为一个跨平台的解决方案,Tomcat在不同64位操作系统上运行良好,对Java Web应用提供强大支持。 tomcat7 64位

1. Java Servlet技术及Tomcat作为Servlet容器的介绍

Java Servlet技术是基于Java语言的服务器端编程技术,它用于扩展服务器的功能,处理客户端请求并返回响应。Servlets作为动态网页技术的一种,可以看作是小型的、平台无关的、基于Java的Web应用组件。其与传统的CGI(Common Gateway Interface)相比,具有更高的效率、更好的可移植性和更强大的开发能力。

1.1 Servlet技术概述

Servlet定义了Java语言编写的类,它们运行在服务器端,并且可以通过多种方法与客户端进行交互。由于Servlet运行在服务器的容器中,因此它们能够动态生成响应内容,并且与服务器资源交互。

1.1.1 Servlet的主要特点

  • 平台无关性 :作为Java技术的一部分,Servlet具有平台无关性,可以在任何支持Java的服务器上运行。
  • 面向对象 :Servlet API完全采用Java编写,继承自Java的面向对象特性。
  • 高效性 :由于Servlet运行在服务器端,与客户端的交互可以使用缓冲I/O进行处理,减少了网络I/O操作,提高了效率。

1.2 Tomcat作为Servlet容器的介绍

Apache Tomcat是一个开源的Servlet容器,它实现了Servlet和JavaServer Pages(JSP)规范,为运行Java代码提供了环境。作为Apache软件基金会的项目之一,Tomcat被广泛用于开发和部署Web应用。

1.2.1 Tomcat的主要特点

  • 免费开源 :作为Apache许可下的开源项目,Tomcat可以免费使用,并且有广泛的社区支持。
  • 轻量级 :相对于其他Java EE服务器,Tomcat是轻量级的,易于安装和配置。
  • 良好的支持 :作为应用广泛的Servlet容器,Tomcat有着良好的文档和社区支持。

接下来,第二章将深入探讨JavaServer Pages (JSP) 动态网页技术,及其在Tomcat中的应用。

2. JavaServer Pages (JSP) 动态网页技术及在Tomcat中的应用

2.1 JSP技术概述

2.1.1 JSP的定义与特点

JavaServer Pages (JSP) 是一种动态网页技术,允许开发者将Java代码嵌入到HTML页面中。它与Servlet技术相辅相成,JSP主要用于简化页面的生成,而Servlet则主要用于处理客户端的请求。JSP页面在首次被请求时会被转化为Servlet,然后由Web容器(如Tomcat)编译和执行。JSP的主要特点包括:

  • 易于使用 :JSP允许开发者以HTML为基础插入Java代码,使得网页设计师可以方便地编写动态内容。
  • 可重用性 :JSP页面可以包含自定义标签库和静态内容,从而提高代码的重用性。
  • 组件模型 :JSP支持可重用的组件模型,例如JavaBean,可以用来分离业务逻辑和表现层。

2.1.2 JSP与Servlet的交互机制

JSP与Servlet之间可以实现无缝的交互。当一个JSP页面第一次被请求时,JSP引擎会将JSP文件转换成Servlet源码,然后编译成class文件。这个过程对于用户来说是透明的。之后每当有请求到达时,都是执行这个class文件。JSP页面中的Java代码可以通过以下两种方式与Servlet交互:

  • 脚本元素 :包括声明(Declarations)、脚本片段(Scriptlets)和表达式(Expressions),它们直接嵌入HTML页面中。
  • 标准动作标签 :如 <jsp:useBean> <jsp:setProperty> <jsp:getProperty> 等,可以用来操作JavaBeans组件。

2.2 JSP页面的开发与部署

2.2.1 JSP页面的编写规范

在编写JSP页面时,遵循以下规范可以确保页面的正确性和可维护性:

  • 编码标准 :使用统一的编码规范,例如UTF-8,确保页面在各种环境下都能正确显示。
  • 错误处理 :在JSP页面中加入适当的错误处理逻辑,比如try-catch块,以避免在页面上直接显示Java异常。
  • 代码组织 :将业务逻辑分离到Servlet或者JavaBeans中,保持JSP页面的清晰和简洁。

下面是一个简单的JSP页面示例代码:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Hello JSP</title>
</head>
<body>
    <% String name = "World"; %>
    <h2>Hello, <%= name %>!</h2>
</body>
</html>

2.2.2 JSP页面的生命周期管理

JSP页面的生命周期包括以下主要阶段:

  • 初始化 :在JSP页面首次被请求时,Web容器加载JSP页面,并调用 jspInit() 方法初始化页面。
  • 请求处理 :对于每一个新的请求,Web容器都会调用 jspService() 方法处理请求。
  • 销毁 :当Web容器决定卸载页面时,会调用 jspDestroy() 方法进行清理工作。

开发者可以在这些生命周期方法中添加自定义的逻辑来管理资源。

2.3 JSP在Tomcat中的应用实例

2.3.1 Tomcat与JSP集成的配置

要在Tomcat中集成JSP,必须确保Tomcat安装时包含了Jasper JSP引擎,它是Tomcat内置的JSP编译器。Jasper负责将JSP页面编译成Servlet类。以下是在 server.xml 文件中配置JSP页面的示例:

<Host name="localhost"  appBase="webapps"
      unpackWARs="true" autoDeploy="true">

    <!-- 其他配置 -->

    <Context docBase="yourApp" path="/yourApp" reloadable="true" />
</Host>
  • docBase :指定应用的目录路径。
  • path :指定访问该应用时使用的URL路径。
  • reloadable :设置为true可以使得JSP页面在更改后自动重新加载。

2.3.2 实际开发中的JSP应用案例分析

假设有一个简单的内容管理系统,用户可以查看文章列表,并对文章进行评论。在这个系统中,使用JSP可以展示文章内容以及评论表单。

<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>文章列表</title>
</head>
<body>
    <% List<Article> articles = articleService.getArticles(); %>
    <% for(Article article : articles) { %>
        <h2><%= article.getTitle() %></h2>
        <p><%= article.getContent() %></p>
        <hr>
    <% } %>
    <h3>发表评论</h3>
    <form method="post" action="submitComment.jsp">
        <textarea name="content"></textarea>
        <input type="submit" value="提交">
    </form>
</body>
</html>

在上面的示例中,我们使用了JSP脚本片段来从后端服务获取文章列表并展示。同时,我们创建了一个简单的HTML表单,用户可以通过这个表单提交评论。这样结合了JSP页面和后端Java服务的动态内容展示。

接下来,我们将进入第三章,深入探讨Tomcat的配置步骤与环境变量设置,理解如何正确安装和配置Tomcat,以便更好地支持JSP页面的运行。

3. Tomcat配置步骤与环境变量设置

3.1 Tomcat的安装与目录结构

3.1.1 Windows平台下的Tomcat安装步骤

对于Windows平台,安装Tomcat涉及以下基本步骤:

  1. 下载Tomcat:首先需要从Apache Tomcat的官方网站下载适合Windows平台的最新版Tomcat。
  2. 解压文件:下载后得到一个压缩包,将其解压到任意文件夹(例如 C:\apache-tomcat-9.0.54 )。
  3. 环境变量配置:需要为Tomcat配置环境变量,以便在命令行中使用Tomcat的可执行文件。
  4. CATALINA_HOME : 指向Tomcat解压后的根目录。
  5. PATH : 添加Tomcat的 bin 目录路径,以方便调用Tomcat的命令。
  6. 首次运行:通过命令行进入到Tomcat的 bin 目录,运行 startup.bat 脚本来启动Tomcat服务器。
  7. 验证安装:在浏览器中输入 *** ,如果看到Tomcat的欢迎页面,说明安装成功。

3.1.2 Linux平台下的Tomcat安装步骤

在Linux平台下,Tomcat的安装方式如下:

  1. 下载Tomcat:访问Apache Tomcat官方网站下载适合Linux的Tomcat压缩包。
  2. 上传并解压:使用 scp ftp 等工具将下载的压缩包上传到Linux服务器,并解压到指定目录。
  3. tar -zxvf apache-tomcat-9.0.54.tar.gz
  4. 设置运行权限:可以设置目录权限,以便运行Tomcat服务。
  5. chmod -R 755 apache-tomcat-9.0.54
  6. 启动Tomcat:进入到Tomcat的 bin 目录,运行 ./startup.sh 启动Tomcat。
  7. 验证安装:通过访问服务器的 ***<服务器IP>:8080 来验证是否安装成功。

3.2 Tomcat的环境变量配置

3.2.1 环境变量的设置方法

在Windows系统中设置环境变量:

  1. 右键点击“我的电脑”或“此电脑”,选择“属性”。
  2. 点击“高级系统设置”,然后选择“环境变量”。
  3. 在“系统变量”区域点击“新建”,为Tomcat设置 CATALINA_HOME 环境变量。
  4. 修改 Path 系统变量,添加Tomcat的 bin 目录路径。

在Linux系统中通过命令行设置环境变量:

export CATALINA_HOME=/path/to/your/tomcat
export PATH=$PATH:$CATALINA_HOME/bin

3.2.2 验证Tomcat环境变量配置的有效性

在Windows系统中,可以打开命令提示符,输入 echo %CATALINA_HOME% 来验证环境变量是否设置正确。

C:\> echo %CATALINA_HOME%

在Linux系统中,可以通过运行 echo $CATALINA_HOME 命令来检查环境变量:

$ echo $CATALINA_HOME

如果能够正确显示Tomcat的安装路径,则说明环境变量配置成功。

3.3 Tomcat配置文件详解

3.3.1 server.xml的配置要点

server.xml 是Tomcat的主配置文件,位于Tomcat的 conf 目录下。它包括了服务器配置、连接器配置、服务配置等关键信息。

  • Server : 包含整个Tomcat服务器的配置信息,包括网络端口号、shutdown端口等。
  • Service : 描述一个或多个连接器组件和一个引擎组件的组合。
  • Connector : 配置Tomcat与客户端进行通信的接口,包括协议、端口号、连接器类型等。
  • Engine : 处理来自连接器的请求,并生成响应,将其发送回连接器。
  • Host : 定义一个虚拟主机,它是一个服务器上的网络名称的映射。
  • Context : 配置具体Web应用的部署信息,如应用路径、文档根目录等。

3.3.2 context.xml的配置与作用

context.xml 位于每个Web应用的 META-INF 目录下,提供了特定Web应用级别的配置信息。其配置要点包括:

  • 数据源配置 :可以配置应用需要使用的数据库连接池。
  • 资源引用 :可以指定资源文件的位置,如XML文件、图片等。
  • 监听器和servlet声明 :用于配置特定的监听器或者servlet类。
  • 会话管理 :配置会话超时、cookie管理等。

这些配置可以影响到Web应用的部署行为,需要根据具体需求进行适当的配置。

请注意,实际操作中应根据具体的版本和环境需求进行配置,配置文件的修改可能会影响到Tomcat的运行,因此在修改之前应做好备份。

4. 日志和错误管理方法

4.1 Tomcat的日志系统

4.1.1 日志文件的作用与分类

日志文件在任何基于Java的应用服务器中都扮演着至关重要的角色。在Tomcat中,日志不仅记录了服务器的启动和关闭过程,还记录了应用程序的运行情况、用户请求的处理以及任何可能发生的异常和错误。这使得日志成为了解服务器和应用状态、诊断问题和监控性能的关键工具。

Tomcat的日志系统按照功能和记录的信息类型可以分为以下几类:

  • 服务器日志(Server Logs) :记录了Tomcat服务器的启动、关闭和运行时的信息。
  • 应用日志(Application Logs) :由部署在Tomcat上的Web应用产生,记录了特定应用的信息。
  • 访问日志(Access Logs) :记录了客户端的请求信息,包括请求的时间、客户端IP、请求的URI、HTTP状态码、传输的字节数等。
  • 错误日志(Error Logs) :记录了错误和异常信息,是问题排查中最为重要的日志类型。

4.1.2 配置和管理日志文件的方法

配置Tomcat的日志文件,主要是通过修改配置文件中的设置来实现。默认情况下,Tomcat的日志配置文件为 $CATALINA_BASE/conf/logging.properties

以下是一些关键的日志配置属性,它们决定了日志的行为和日志文件的存储位置:

  • java.util.logging.ConsoleHandler.formatter :定义了日志输出到控制台时的格式。
  • java.util.logging.FileHandler.pattern :定义了日志文件的路径和文件名模式。
  • java.util.logging.FileHandler.limit :设置了单个日志文件的最大大小。
  • java.util.logging.FileHandler.count :定义了保留的旧日志文件数量。

要更改日志级别,可以通过设置特定logger的 level 属性来实现,例如:

org.apache.catalina.level=FINE
org.apache.coyote.level=INFO

此外,可以使用 logging.properties 文件中定义的 java.util.logging.ConsoleHandler 来改变日志输出到控制台的行为。

通过调整这些属性,管理员可以控制日志的详细程度、日志文件的数量和大小,以及日志的存储位置。

4.2 错误管理与调试技巧

4.2.1 常见错误信息的分析

在Tomcat中遇到的错误信息通常可以在日志文件中找到。当面对错误信息时,首先应确认错误级别(如INFO、WARNING、SEVERE),并根据错误类型(如IOException、ServletException)进一步分析。

例如, java.lang.OutOfMemoryError 通常表明JVM内存不足,而 java.io.FileNotFoundException 可能意味着Tomcat无法找到指定的资源文件。这些错误信息通常还会伴随堆栈跟踪,指明了错误发生的位置和原因。

4.2.2 Tomcat错误页面的定制与调试

Tomcat提供了错误页面的定制功能,可以通过修改 conf/web.xml 文件来自定义特定状态码的错误页面。例如,可以为 404 (找不到文件)错误提供一个友好的提示页面:

<error-page>
    <error-code>404</error-code>
    <location>/404.html</location>
</error-page>

在实际开发过程中,调试的技巧包括但不限于:

  • 使用IDE的调试工具设置断点。
  • 输出详细的日志信息到日志文件或控制台。
  • 使用JVM参数设置远程调试,如 -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
  • 使用 System.out.println *** 等方法在代码中输出调试信息。

4.3 日志和错误管理的实践案例

4.3.1 日志分析工具的使用

在处理日志时,可以使用多种工具来帮助分析和解析。例如, grep 命令可以快速筛选特定模式的日志条目,而更高级的工具有如ELK Stack(Elasticsearch, Logstash, Kibana)等。

ELK Stack可以实现日志的集中收集、存储和搜索,甚至可以进行实时监控和可视化。它包括:

  • Logstash :用于收集和处理日志。
  • Elasticsearch :存储和索引日志数据。
  • Kibana :提供日志数据的可视化界面。

这些工具通过配置文件中的正则表达式和过滤器来解析日志信息,并将其存储在Elasticsearch中供后续分析。

4.3.2 实际问题的日志排查与解决过程

假设我们遇到了应用无法启动的问题,并从日志中得到了一个 SEVERE 级别的错误信息。根据错误信息,我们确定是配置文件解析出现了问题。首先,可以使用以下命令在日志文件中查找所有错误级别为 SEVERE 的日志条目:

cat catalina.out | grep 'SEVERE'

通过日志中的堆栈跟踪,定位到出错的配置文件位置,接着检查该配置文件语法是否正确。找到问题后,进行修正并重新尝试启动Tomcat。

如果问题依然存在,使用 System.out.println 在代码中添加额外的日志输出,逐步缩小问题的范围。此外,如果启用了JVM远程调试,可以附加调试器,逐步执行程序并观察变量的值和程序的执行流程。

通过这种方式,结合日志文件的分析和逐步调试,通常能够快速定位和解决问题。

本章到此结束了对Tomcat中日志和错误管理方法的探讨,为读者提供了一些理论知识以及实践案例。在下一章中,我们将深入到Tomcat的Web应用部署机制中。

5. Web应用部署目录webapps说明

5.1 webapps目录的作用

5.1.1 webapps与Web应用部署的关系

webapps 是 Tomcat 中一个非常核心的目录,它为 Web 应用提供了一个默认的部署位置。几乎所有的 Tomcat 用户在部署一个 Web 应用时,都需要与这个目录打交道。 webapps 目录下的每一个子目录都可以看作是一个独立的 Web 应用,Web 应用的结构和内容直接决定了 Web 服务的呈现形式和功能。

当 Tomcat 启动时,它会自动扫描 webapps 目录,并加载里面的每一个子目录为一个 Web 应用。这个自动加载的过程为用户省去了不少繁琐的配置步骤。另外, webapps 目录下的应用可以通过修改配置文件来进行更深入的定制,比如设置虚拟主机、应用的安全设置等。

5.1.2 如何在webapps下部署Web应用

部署 Web 应用至 webapps 目录通常非常简单。以下是基本的步骤:

  1. 将你的 Web 应用打包成 WAR 文件(Web Application Archive),或者直接将 Web 应用的目录结构复制到 webapps 目录下的一个新子目录中。
  2. 如果你使用的是 WAR 文件,Tomcat 会在启动时自动解压 WAR 文件到指定目录。
  3. 通过修改 webapps/<应用名>/WEB-INF/web.xml 文件,你可以配置 Servlet 和 JSP,设置欢迎文件列表,以及其他初始化参数。
  4. 如果需要,还可以在 webapps/<应用名>/META-INF/context.xml 文件中配置应用级的资源和环境设置。

5.2 部署流程详解

5.2.1 Web应用目录结构的标准

Web 应用部署时的标准目录结构对 Tomcat 的正确加载至关重要。一个标准的 Web 应用目录结构大致如下:

  • WEB-INF/ :存放 Java Web 应用的配置文件和类文件。
  • web.xml :Web 应用的部署描述符,用于定义 Servlet、JSP 页面的配置、会话超时、初始化参数等。
  • classes/ :存放 Web 应用的编译后的 .class 文件。
  • lib/ :存放 Web 应用所需的所有 JAR 文件。
  • index.jsp index.html :应用的默认首页。
  • 其他资源文件,如图片、CSS、JavaScript 文件等。

5.2.2 部署Web应用的具体步骤

部署 Web 应用的具体步骤如下:

  1. 准备应用包 :将你的 Web 应用打包成 WAR 文件或者准备好应用目录结构。
  2. 复制到 webapps 目录 :将 WAR 文件或应用目录复制到 $CATALINA_HOME/webapps/
  3. 配置 web.xml(可选) :如果需要定制 Web 应用的行为,修改或添加 web.xml 文件中的配置项。
  4. 修改 Tomcat 配置(可选) :如果需要对特定应用进行特殊配置,可以通过 context.xml 或直接修改 Tomcat 的主配置文件 server.xml 来实现。
  5. 重启 Tomcat :为使部署的 Web 应用生效,需要重启 Tomcat 服务器。

5.3 部署后的应用管理

5.3.1 应用的启动、停止与重载

部署 Web 应用后,对于应用的管理是经常需要进行的操作。在 Tomcat 中,可以通过以下方式管理 Web 应用:

  • 启动与停止 :可以使用 Tomcat 管理界面进行 Web 应用的启动和停止。通过访问 ***<hostname>:8080/manager/html 来管理应用。
  • 重载 :在开发过程中,经常需要对应用进行更新。可以通过管理界面的“Reload”功能来重载应用,无需重启整个服务器。
  • 命令行管理 :还可以通过命令行工具 catalina.sh $CATALINA_HOME/bin/ 目录下对 Web 应用进行管理。

5.3.2 部署过程中的注意事项

在部署 Web 应用时,以下几点值得注意:

  • 目录权限 :确保 Tomcat 有足够的权限访问部署的 Web 应用目录。
  • 日志检查 :部署过程中应检查 Tomcat 的日志文件,确保没有错误发生。
  • 备份重要数据 :在进行应用部署前,最好备份你的应用和数据,以防不测。
  • 版本兼容性 :在部署新应用之前,确保你的 Tomcat 版本与应用兼容。

通过严格遵循这些部署最佳实践,Web 应用就可以被顺利地部署并运行在 Tomcat 服务器上,从而为用户提供所需的服务。

6. Tomcat安全性配置要点

随着网络攻击手段的不断进化,安全性已成为部署Web应用时不可忽视的一环。在本章,我们将深入探讨Tomcat服务器的安全性配置要点,确保你的服务器能够抵御大多数安全威胁。

6.1 安全性配置的重要性

安全性配置的重要性不容小觑。在互联网中,服务器常常是黑客攻击的目标。因此,安全性配置不仅可以保护您的数据和应用不被未授权访问,还可以确保服务的持续可用性。

6.1.1 网络安全的基础知识

网络安全涉及一系列措施,包括但不限于访问控制、加密通讯、防止数据泄露等。在Tomcat中,我们可以采用多种方法提高安全性,例如使用安全套接字层(SSL)来加密传输数据。

6.1.2 Tomcat安全风险分析

Tomcat服务器面临的风险主要包括未授权访问、DoS攻击、跨站脚本攻击(XSS)和SQL注入等。理解这些风险有助于我们确定配置重点和采取的措施。

6.2 Tomcat的安全配置实践

为了增强Tomcat的安全性,我们可以从用户认证授权和SSL配置两方面进行操作。

6.2.1 用户认证与授权的配置

Tomcat提供了基于XML的用户和角色管理机制。我们可以通过 tomcat-users.xml 文件来定义用户、角色和权限。

示例配置:

<tomcat-users>
  <role rolename="admin"/>
  <role rolename="manager"/>
  <user username="admin" password="admin" roles="admin,manager"/>
  <user username="user" password="password" roles="manager"/>
</tomcat-users>

此配置定义了 admin manager 两个角色以及两个拥有这些角色的用户。

6.2.2 连接器的SSL配置与优化

SSL配置是保护Tomcat免受中间人攻击的重要方法。在Tomcat中,我们可以在 server.xml 文件中的 <Connector> 元素中配置SSL。

示例配置:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
           maxThreads="150" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS" />

通过这种方式,我们启用了8443端口的SSL连接。

6.3 安全性管理的高级应用

对于安全性管理,我们还可以通过扩展Tomcat的安全机制来进一步增强防护。

6.3.1 Tomcat安全机制的扩展

Tomcat允许我们扩展安全机制,通过编写自定义的认证器(Authenticator)和授权器(Valve),满足特定的业务需求。

6.3.2 安全配置的案例分析与总结

在安全配置的实践中,我们应考虑应用的具体场景。例如,在一个在线零售网站中,我们可能需要更严格的数据加密措施和细致的访问控制策略。

总结来说,Tomcat的安全配置不仅限于基础的用户认证和SSL配置,还应考虑如何扩展安全机制以适应不同的业务场景和需求。在实际部署中,安全配置需要不断调整和完善,以应对日益复杂的网络环境。

在此节内容中,我们讨论了Tomcat的安全配置要点,包括安全性的重要性、安全配置实践以及安全性管理的高级应用。在配置Tomcat时,我们需要深入理解每项设置的含义,以实现服务器的最佳保护。

接下来的章节,我们将探讨如何在64位系统下对Tomcat进行性能优化,以确保应用高效稳定地运行。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:Apache Tomcat 7.0.73是一个开源的Java Servlet和JSP规范应用服务器,专为64位操作系统优化性能而设计。它包括对Servlet、JSP的支持,提供简单的配置流程、日志和错误管理、灵活的Web应用部署选项,以及管理界面。安全性配置、性能优化和热部署功能都是其显著特点。作为一个跨平台的解决方案,Tomcat在不同64位操作系统上运行良好,对Java Web应用提供强大支持。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>