JSP培训(2)——运行原理、文档结构、简单输入输出

如何使用ssm实现普通话培训信息管理系统 【代码】ssm普通话培训信息管理系统+jsp 阅读详情

目标:
l         掌握Web应用的文档结构;
l         掌握JSP的运行原理;
l         掌握JSP的简单输入和输出。
主要内容:
l         通过一个简单实例介绍Web应用的文档结构和运行原理;
l         通过一个简单的注册功能介绍基本的输入输出。
下次课内容:客户端验证。
1、 文档结构
每个应用都有一个根目录,例如ch2;理论上可以放在任何地方,但是需要配置,简单的做法,直接放在了webapps这个目录下,在这个目录的应用会被自动加载。
在根目录下会有一个WEB-INF目录,这个目录中的文件不能被远程访问,主要存放配置文件和类文件、资源文件。
在WEB-INF中的配置文件是web.xml,每个web应用都会有这样一个配置文件。
在WEB-INF有两个文件用于存放类文件和资源文件,lib和classes,lib下面存放以压缩包jar形式存在的类库,classes直接存放类文件(包含包的信息)。
页面文件(包括jsp文件、html文件、图片文件)可以放在根目录(ch2)下面,或者下面的子文件夹(不能放在WEB-INF)中。
2、 运行方式
访问方式:http://192.168.0.222:8080/ch2/ch2.jsp
前提:把Web应用部署到服务器上,启动服务器。
下面以ch2.jsp为例介绍访问过程:
1)客户端通过浏览器发送请求;
2)Web服务器接收这个请求,然后转给应用服务器;
3)应用服务器会查找客户要访问的文件,假设访问的文件为ch2.jsp;分两种情况:
第一次访问:应用服务器把JSP文件转换成Java文件;然后编译成class文件;然后加载类;实例化对象并初始化;
后续访问:JSP文件对应的页面对象已经存在,直接查找到这个对象;
4)应用服务器封装请求信息,然后调用相应的方法;
5)应用服务器把方法执行结果(响应客户的内容)传递给Web服务器;
6)Web服务器把这个结果发给客户端;
7)客户端浏览器把接收到的html代码解析成网页。这个就是我们看到的结果。
下面是运行过程中的几个文件内容。
源文件Ch2.jsp的内容:
DDDDDDDDDDDDDDDDDDDDDDDD
<%="FFFFFFFFFFFFFFFF"%>
 
转换后的文件ch2_jsp.java:
package org.apache.jsp;
 
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
 
public final class ch2_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent {
 
 private static java.util.List _jspx_dependants;
 
 private javax.el.ExpressionFactory _el_expressionfactory;
 private org.apache.AnnotationProcessor _jsp_annotationprocessor;
 
 public Object getDependants() {
    return _jspx_dependants;
 }
 
 public void _jspInit() {
    _el_expressionfactory = JspFactory.getDefaultFactory().getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
    _jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class.getName());
 }
 
 public void _jspDestroy() {
 }
 
 public void _jspService(HttpServletRequest request, HttpServletResponse response)
        throws java.io.IOException, ServletException {
 
    JspFactory _jspxFactory = null;
    PageContext pageContext = null;
    HttpSession session = null;
    ServletContext application = null;
    ServletConfig config = null;
    JspWriter out = null;
    Object page = this;
    JspWriter _jspx_out = null;
    PageContext _jspx_page_context = null;
 
 
    try {
      _jspxFactory = JspFactory.getDefaultFactory();
      response.setContentType("text/html");
      pageContext = _jspxFactory.getPageContext(this, request, response,
                       null, true, 8192, true);
      _jspx_page_context = pageContext;
      application = pageContext.getServletContext();
      config = pageContext.getServletConfig();
      session = pageContext.getSession();
      out = pageContext.getOut();
      _jspx_out = out;
 
      out.write("DDDDDDDDDDDDDDDDDDDDDDDD/r/n");
      out.print("FFFFFFFFFFFFFFFF");
    } catch (Throwable t) {
      if (!(t instanceof SkipPageException)){
        out = _jspx_out;
        if (out != null && out.getBufferSize() != 0)
          try { out.clearBuffer(); } catch (java.io.IOException e) {}
        if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
      }
    } finally {
      if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context);
    }
 }
}
 
返回给客户端的信息(通过浏览器的查看源文件功能可以看到):
DDDDDDDDDDDDDDDDDDDDDDDD
FFFFFFFFFFFFFFFF
 
3、 无状态的请求应答模式
用户通过客户端发送请求,可以通过地址栏、超链接、按钮或者表单元素的事件请求。不管采用什么方式发送请求,这些请求信息都会被封装成HttpServletRequest对象,服务器会把这个对象作为参数去调用页面对象,这个方法执行完会对客户端响应,之后这个HttpServletRequest对象就被删除了。如果再次发送请求,会创建新的HttpServletRequest对象,上一次访问时候的信息都不存在了。
所以服务器不会保存客户端以前访问的信息,称为无状态的请求应答模式。
接下来介绍JSP技术的基本问题:输入输出。首先看如何完成输入。
4、 输入元素
输入通过表单元素完成。常用的表单元素如下:
1)form
要提交信息,首先需要一个表单form,只有在form内的信息才可以提交。
开始标识<form>
结束标识</form>
主要的属性:
action属性:是目标文件的位置,要提交给谁处理;
method属性:请求方式,有get和post
注意:form不能嵌套。
2)单行文本框
基本语法格式:
<input type=”text” name=”username” value=”请输入用户名”>
type=”text” 就说明这是单行文本框;
name表示文本框的名字,非常重要,在服务器需要根据名字取值;
value给出初始值。
3)密码框
基本语法格式:
<input type=”password” name=”userpass” >
用法与单行文本框基本相同。
4)隐藏域
基本语法格式:
<input type=”hidden” name=”userpass” >
用于在多个页面之间传值,与当行文本框的用法也基本相同。
5)单选按钮
语法格式:
<input type=”radio” name=”sex” value=”男”>男
<input type=”radio” name=”sex” value=”女”>女
一组单选按钮的名字应该保持一致,这样能够保证多个选项只选择一个。
注意:单选按纽之后显示的内容与单选按纽没有关系,只是告诉用户这个单选按纽表示什么。
6)复选框
语法格式:
<input type=”checkbox” name=”fav” value=”音乐”>
<input type=”checkbox” name=”fav” value=”体育”>
同一组复选框的值也应该保持一致,可以采用统一的方式取值。
7)下拉列表
语法格式:
开始标识:<select name=”select”>
结束标识:</select>
下拉框中的每个选项:<option value=”1”>显示的信息</option>
性别下拉框:
<select name=”sex”>
   <option value=”男”>男</option>
   <option value=”女”>女</option>
</select>
8)多行文本域
语法格式:
<textarea name=””>sdsfsddddddddd</textarea>
要对文本域初始化,需要把初始值放在标签的开始和结束标识之间。
注意:这一点与其它元素通过value属性赋值是不一样的。
9)提交按钮
<input type=”submit” value=”提交”>
通常不需要名字。
10)重置按钮
<input type=”reset” value=”重置”>
通常不需要名字。
11)普通按钮
也可以通过普通按钮完成表单提交,需要编写JavaScript代码。
语法格式:
<input type=”button” value=”提交” onClick=”…”>
5、 输入实例:注册页面
参考代码register.jsp:
<%@ page contentType="text/html;charset=gb2312"%>
请注册<br>
<form method="post" name="fi1" action="process.jsp">
   用户ID:<input type="text" name="userid"><br>
   口令:<input type="password" name="userpass"><br>
   确认口令:<input type="password" name="userpass1"><br>
   性别:<input type="radio" name="sex" value="男" checked>男
         <input type="radio" name="sex" value="女">女<br>
   爱好:<input type="checkbox" name="fav" value="运动">运动
         <input type="checkbox" name="fav" value="音乐">音乐
         <input type="checkbox" name="fav" value="编程">编程<br>
   学历:
       <select name="degree">
           <option value="本科">本科</option>
           <option value="硕士">硕士</option>
           <option value="专科">专科</option>
           <option value="博士">博士</option>
       </select><br>
   备注:
       <textarea name="comment"></textarea><br>
       <input type="submit" value="提交"><input type="reset" value="重置">
</form>
该页面能够完成用户信息的提交,当用户输入和选择完之后点击提交按钮,浏览器会把这个请求发送到服务器,根据form中的action属性的值,我们知道服务器会调用process.jsp进行处理。下面介绍如何编写process.jsp来获取用户输入信息。
6、 获取信息
前面介绍运行原理的时候说过,客户的请求信息,包括输入的和选择的信息,都会被封装在HttpServletRequest对象中,所以在process.jsp中只需要访问这个对象即可,如何得到这个对象呢?
在JSP中提供了若干内部对象,其中之一是request,直接使用这个对象即可。对于内部对象,我们可以直接使用,不需要声明和实例化。
获取请求信息可以通过下面的两个方法:
getParameter(元素名字)
getParameterValues(元素名字)
前者用于获取单值元素的值,例如文本框、单选按钮、密码框等。后者用于获取多值元素的值,例如复选框、允许多选的列表框。
7、 实例:注册信息显示
process.jsp的源文件:
<%@ page contentType="text/html;charset=gb2312"%>
注册信息如下:
<%
   String userid = request.getParameter("userid");
 
   String userpass = request.getParameter("userpass");
 
   String userpass1 = request.getParameter("userpass1");
 
   String sex = request.getParameter("sex");
 
   // 对性别进行编码转换
   sex = new String(sex.getBytes("8859_1"));
  
   String[] fav = request.getParameterValues("fav");
   // 该方法用于获取多值元素的值
  
   String degree = request.getParameter("degree");
 
   String comment = request.getParameter("comment");
 
   out.println("用户ID:"+userid);
%>
<br>口令:<%=userpass%>
<br>确认口令:<%=userpass1%>
<br>性别:<%=sex%>
<br>爱好:
<%
   if(fav!=null)
   for(String s:fav)
   {
      s=new String(s.getBytes("8859_1"));
      out.print(s);
   }
%>
<br>学历:<%=degree%>
<br>备注:<%=comment%>
 
注:此种方式的代码(Java代码与HTML代码嵌套)不提倡,这里仅仅是为了让这个程序比较完整。但是获取值和编码转换的代码需要掌握,以后在Servlet中会用,没有什么变化。
8、 实训:完成图书添加界面,并把用户添加的信息重新显示出来。
参考教材:《Java Web程序设计基础教程》

JSP培训目录:

JSP培训(1)——概述
JSP培训(2)——运行原理、文档结构、简单输入输出
JSP培训(3)——客户端验证、常用输出方式、JSTL基本用法
JSP培训(4)——实例:登录功能、jsp:forward标签、jsp:include标签、include指令、EL、c:if
JSP培训(5)——使用JavaBean完成业务逻辑
JSP培训(6)——使用Servlet作为控制器实现MVC模式
JSP培训(7)——使用JDBC完成动态验证、采用MVC完成数据查询
JSP培训(8)——添加功能和分页显示
JSP培训(9)——使用MVC模式完成删除和修改功能
JSP培训(10)——使用JavaBean封装对数据库的访问、连接池的配置和使用
JSP培训(11)——Java Web中的安全控制
JSP培训(12)——Java Web应用国际化
JSP培训(13)——异常处理
JSP培训(14)——购物车实例(上)
JSP培训(15)——购物车实例(下)及小结
深入浅出:大型语言模型(LLM)的全面解读 在当今的数字化时代,人工智能技术已经成为各行各业的核心驱动力之一。而在人工智能的领域中,大型语言模型(LLM)作为一种引人瞩目的技术,正在以其强大的语言理解和生成能力引领着一场革命。本文旨在深入浅出地解读大型语言模型,探讨其背后的原理、技术突破、应用场景以及未来发展趋势。 阅读详情

相关推荐

手把手教你用Qt和DSP28335实现串口Bootloader,附赠源码和避坑指南

本文详细介绍了如何使用Qt和DSP28335实现串口Bootloader,包括开发环境搭建、通信协议设计、Qt上位机开发、DSP端Bootloader核心实现以及应用程序工程的特殊配置。通过实战案例和源码分享,帮助开发者快速掌握嵌入式固件升级技术,提升工业设备远程升级的效率和可靠性。

weixin_29176179的博客 137

Javaweb项目编程之实验五+使用JSP

Javaweb项目编程之实验五+使用JSP 一、实验目标: 熟练掌握JavaBean的编程; 学习在JSP中如何使用JavaBean。 二、实验内容: 1、页面输入收入,得到相应的缴纳税收 要求:Jsp提交收入,显示结果(可一个页面也可两个页面)。编写一个JavaBean计算税收,并在JSP页面输出结果 计算方法:全月应纳税所得额=月收入-1600元 级数 全月应纳税所得额 税率% 速算扣除法(元) 1 dr <=500 5 0 2 500 <dr<=3000

csq542586的博客 1333

深入解析EDID中Display Descriptor Block的配置技巧与实战应用

本文深入解析EDID中Display Descriptor Block的配置技巧与实战应用。通过剖析像素时钟、有效像素、消隐区与同步脉冲等核心参数,并结合1280x720@60Hz的实战配置案例,指导开发者如何正确为定制硬件或非标准显示器编写“身份证”,避免黑屏、分辨率异常等问题,确保显示设备完美点亮。

1a2s3d4f5g的博客 879

JSP中的输入输出流

JSP中的输入输出流 收藏  一、servlet response实现了HttpServletResponse接口,request实现了HttpServletRequest接口。 1、输出流有两个: 字节形式输出:response.getOutputStream() 字符形式输出:response.getWriter() 2、输入流有两个: 字节形式输入:request.ge

lizhi1250的专栏 2357

机理模型与数据模型融合的方式

风电场的发电量受到多种因素的影响,包括但不限于风速、温度、空气密度等。尽管这些环境变量可以直接测量并用作模型输入,但它们与发电量之间的关系往往是复杂的非线性关系。通过引入基于物理定律计算出的理论发电量作为额外特征,可以为数据驱动模型提供更丰富的信息,从而提高预测精度。在这个案例中,我们将使用贝茨理论(Betz Limit)来计算风电场的理论发电量,并将其作为一个新的特征添加到数据集中。然后,我们使用增强后的数据集训练一个简单的神经网络模型来进行发电量预测。

金石软件 4808

在jsp里实现左输入右输出

【代码】在jsp里实现左输入右输出。

2403_86929138的博客 340

Dify社区版多工作空间功能解锁:源码修改与多租户架构解析

多租户架构是现代SaaS平台实现数据隔离与资源管理的核心技术,其核心原理是通过租户模型将用户、应用和数据在逻辑上隔离。在AI应用开发平台中,这种架构能有效支持多团队、多项目并行开发,确保不同业务线的数据安全与独立迭代。Dify作为开源AI应用构建平台,其底层已设计完善的多租户模型,但社区版默认限制了单用户单工作空间。本文通过精准修改两处关键代码——账户初始化逻辑与系统功能开关,释放了平台固有的多工作空间管理能力。该方案无需改动数据库结构,直接利用现有RBAC权限体系,实现了类似企业版的**多租户隔离**体验

weixin_27059669的博客 1065

培训学习报告

跨站脚本攻击(XSS)是一种常见的网络安全威胁,它允许攻击者在受害者的浏览器中 执行恶意脚本。这些脚本通常是通过在网页中嵌入恶意的HTML代码来实现的,当用户浏 览这些网页时,嵌入的代码会被执行,从而允许攻击者进行各种恶意活动,如盗取用户的 cookie、篡改网页内容或重定向到其他网站。

volcanic_erupt的博客 975

有源滤波电路设计

目录一、低通滤波器1、同相输入低通滤波器(1)一阶低通滤波电路(2)二阶低通滤波电路(压控电压源;Sallen-Key)2、反相输入低通滤波器(1)一阶低通滤波电路(2)二阶低通滤波电路(无限增益多路反馈)二、高通滤波器1、同相输入高通滤波器(1)一阶高通滤波电路(2)二阶高通滤波电路(压控电压源;Sallen-Key)2、反相输入高通滤波电路(1)二阶高通滤波电路(无限增益多路反馈) 一、低通滤波器 1、同相输入低通滤波器 (1)一阶低通滤波电路 即在一阶无源低通滤波器的基础上,加了一个集成运放。 它的

qq_41873236的博客 3万+

R语言实战:从Raw Counts到TPM/FPKM的完整转换指南(含代码调试技巧)

本文详细介绍了在R语言环境中将RNA-seq原始计数(raw counts)转换为TPM/FPKM值的完整流程,包含代码实现和常见错误调试技巧。通过具体案例演示如何正确处理基因长度和测序深度因素,实现表达量标准化,为生物信息学分析提供可靠数据基础。特别适合需要进行转录组数据分析的研究人员和实验室技术人员参考。

weixin_28559803的博客 481

培训目录

李绪成的一亩三分地 1595

Algorithm:【算法进阶之路】之算法面试刷题集合—数据结构的简介、最强学习路线(逻辑结构【数组-链表-栈和队列/树-图-哈希】、物理结构【元素/关系】、数据运算【十大排序/四大查找-图三大搜索-

​ Algorithm:【算法进阶之路】之算法面试刷题集合—数据结构的简介、最强学习路线(逻辑结构【数组-链表-栈和队列/树-图-哈希】、物理结构【元素/关系】、数据运算【十大排序/四大查找-图三大搜索-树三大遍历】、高级算法【枚举/回溯/递归/分治/动规/贪心】)、问题为导向的十大类刷题算法总结之详细攻略 目录 相关文章 数据结构思维导图 基本术语 一、数据结构的概述 二、数据的逻辑结构 三、数据的物理结构 四、数据的运算

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 6851

ssm155基于Java的公务员培训机构管理系统+jsp(文档+源码)_kaic

摘要:本文设计并实现了一套基于SSM框架的公务员培训机构管理系统,旨在提升公务员培训管理效率。系统采用Java语言开发,使用MySQL数据库存储数据,实现了用户信息管理、课程管理、讲师管理等核心功能。系统界面简洁美观,操作流程规范,具备良好的扩展性和安全性。通过该系统,管理员可以高效处理培训事务,实现数据管理的自动化、规范化。测试结果表明,系统运行稳定,功能完善,能够满足公务员培训机构的日常管理需求。 关键词:公务员培训;管理系统;SSM框架;Java;MySQL

weixin_52720882的博客 886

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

传智播客---jsp,El,JSTL的语法与使用

首先回顾一下jsp技术:  1、JSP由来?JSP和Servlet技术区别关系?  Servlet技术在生成动态网页时,需要通过response的输出流,通过print语句生成HTML源代码  Servlet生成HTML源代码,编程非常复杂,不利于美工页面人员维护 ,也不能使用Dreamweaver所见即所得开发工具进行调试  sun公司为了简化动态网页生成,推出JSP技术 ,可以说JS

java爸爸的专栏 2523

廖雪峰Python教程[完整版]

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

一般java培训课程有哪些?

一般java培训课程有哪些?培训时间是多久?Java的培训课程是根据培训机构来的。但是一般情况下都是javaEE方向。一般培训机构java培训班都在4~6个月左右。 至于一般java培训课程有哪些,因为市面上培训机构实在太多,各机构之间的课程也存在差异。下面以成都朗沃java培训班课程为参考: 1、零基础点编程入门 编程有关的操作系统基本使用,HTML5规范、HTML5文档结构、HTML5元素、Web语义化;CSS3规范、CSS3选择器、层叠与继承、盒模型与视觉格式化模型、现代CSS布局、CSS3

yanghui0804的博客 1255

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

java培训学习阶段步骤讲解

  目前的培训机构行业比较热门的IT技术就是java技术,java技术在近几年广受关注,java所涉及的技术知识也比较广泛,下面小编就为大家详细的介绍一下java培训学习多有哪几个阶段?      java培训学习多有哪几个阶段:   第一阶段、Java设计和编程思想   1、Java语言基础   Java语言、Java环境变量、变量、运算符、表达式、分支语句、循环语句、数组、数组应用,行业规范。双色球抽奖程序实现。   2、Java面向对象   类、对象、属性、方法、构造、封装、继.

qinge_Crazy的博客 490

java培训课程有哪些

Java培训课程有哪些?这一定是很多想学习java的小伙伴最关心的问题。作为一门编程语言,没有谁能够像java这般独得恩宠。这十几年来java的发展大家有目共睹,各行各业都会应用到java,所以java的就业前景还是很可观的。那么对于零基础的小伙伴来说,java培训课程有哪些呢?就让朗沃小编来为你详细解答。 1、掌握Java语言的使用 语言语法、程序逻辑,OOP(面向对象)思想,封装、继承、多态,集合框架、泛型、File I\O技术,多线程技术、socket网络编程,XML技术。编程有关的操作系.

Ambition_yugurt的博客 4934

远程教育培训系统建议书

 物流系统规划报告 项目管理系统设计 项目管理相关文档 OA 系统需求分析 OA 系统详细设计 人力资源系统设计 数据库设计报告 [CRM 词汇大全] [彩信业务原理] [微软内容服务器介绍][软件项目开发技能要求] [UML 用例图设计]  [网上营销系统方案书] [电子政务方案书] [项目管理系统方案书][软件投标技巧] [网上证券系统方案书] [软件投标书规范] [技术发展与

我的专栏 3204

基于Java毕业设计在线培训课程网站管理系统源码+系统+mysql+lw文档+部署软件

基于Java毕业设计在线培训课程网站管理系统源码+系统+mysql+lw文档+部署软件。springboot基于Springboot的滑雪场学具租赁管理系统。springboot基于springboot的健身俱乐部综合管理系统。ssm基于javaweb开发数码产品推荐平台系统设计与实现。JSP影城管理系统的设计与实现sqlserver。ssm基于web的智慧医疗平台的设计与实现。...

m0_72303790的博客 216

JAVA JSP实现上传下载

需求:大文件上传,批量上传,断点续传,文件夹上传,大文件下载,批量下载,断点下载,文件夹下载文件夹:上传下载需要支持层级结构,采用非压缩方式文件大小:100G前端:vue2,vue3,vue-cli,jquery,html,webuploader后端:JSP,springbootweb服务:tomcat数据库:mysql,oracle,达梦,国产化数据库服务器:linux,信创国产化浏览器:ie8+,firefox,chrome,360,2345,QQ,搜狗,猎豹。

alisky119的博客 754

说说我们安排的培训

<br /><br />       在我们日常的工作中,项目组总会不时地安排些培训。有讲解基础知识的,如spring系统培训,struts2使用讲解,hibernate原理分析等;也有针对某个工具使用的培训,如powerdesigner如何使用,rose设计图形如何作,jira如何管理等;还有针对某个课题开展的讨论研究,如cmmi如何引入,敏捷开发如何开展,项目文档如何管理等;诸如这样的内部培训,经常发生在我们熟知的项目组内部,一般时间都以1-2个小时为主,其最终目的主要是抛砖引玉,引导大伙去关注软件开发

刀光剑影 559
上一篇: JSP培训(1)——概述
下一篇: JSP培训(3)——客户端验证、常用输出方式、JSTL基本用法
老李-大连
博客等级 码龄20年 3206粉丝 308原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值