spring mobile简单试用

Spring Boot 整合——Spring Mobile用来识别请求设备类型的小工具 文章前面 关于版本 依赖 版本 springboot 2.0.8.RELEASE spring-mobile-starter 2.0.0.M2 关于项目 本内容也是我尝试整理工作中接触过各种工具在springboot中使用的方法。下面介绍的所有方法都已经提供了测试用例。因为每个例子涉及代码较多,所以文章中只贴出了部分代码。全部的代码在这里:https://gitee.com/daifyutils/springboot-samples。 Spring Mobile spring mob 阅读详情

spring mobile 是spring新推出的一个用于支持移动浏览的小框架,用起来很简单,和spring mvc结合也很方便。


首先建立一个spring mvc的工程


然后,在pom.xml中添加spring mobile的支持

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <dependency>  
  2.     <groupId>org.springframework.mobile</groupId>  
  3.     <artifactId>spring-mobile-device</artifactId>  
  4.     <version>1.1.0.RELEASE</version>  
  5. </dependency>  

修改servlet-content.xml

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <!-- Enables the Spring MVC @Controller programming model -->  
  2. <annotation-driven>  
  3.     <argument-resolvers>  
  4.         <beans:bean  
  5.             class="org.springframework.mobile.device.DeviceWebArgumentResolver" />  
  6.         <beans:bean  
  7.             class="org.springframework.mobile.device.site.SitePreferenceWebArgumentResolver" />  
  8.     </argument-resolvers>  
  9. </annotation-driven>  
  10.   
  11. <interceptors>  
  12.     <!-- On pre-handle, resolve the device that originated the web request -->  
  13.     <beans:bean  
  14.         class="org.springframework.mobile.device.DeviceResolverHandlerInterceptor" />  
  15.     <!-- On pre-handle, manage the user's site preference (declare after DeviceResolverHandlerInterceptor) -->  
  16.     <beans:bean  
  17.         class="org.springframework.mobile.device.site.SitePreferenceHandlerInterceptor" />  
  18. </interceptors>  
  19.   
  20. <!-- Handles HTTP GET requests for /resources/** by efficiently serving   
  21.     up static resources in the ${webappRoot}/resources directory -->  
  22. <resources mapping="/resources/**" location="/resources/" />  
  23.   
  24. <!-- Resolves views selected for rendering by @Controllers to .jsp resources   
  25.     in the /WEB-INF/views directory -->  
  26.     <beans:bean class="org.springframework.mobile.device.view.LiteDeviceDelegatingViewResolver">  
  27.     <beans:constructor-arg>  
  28.         <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
  29.             <beans:property name="prefix" value="/WEB-INF/views/" />  
  30.             <beans:property name="suffix" value=".jsp" />  
  31.         </beans:bean>  
  32.     </beans:constructor-arg>  
  33.     <beans:property name="enableFallback" value="true" />  
  34.     <beans:property name="mobilePrefix" value="mobile/" />  
  35.     <beans:property name="tabletPrefix" value="tablet/" />  
  36. </beans:bean>  

然后在views目录下,新增两个目录:mobile和tablet。拷贝home.jsp页面进去。


为了区分,分别修改3个home.jsp,如下

home.jsp

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
  2. <%@ page session="false" %>  
  3. <html>  
  4. <head>  
  5.     <title>Home</title>  
  6. </head>  
  7. <body>  
  8. <h1>  
  9.     Hello world!    
  10. </h1>  
  11. <P>  This is normal. </P>  
  12. <P>  The time on the server is ${serverTime}. </P>  
  13. </body>  
  14. </html>  

moblie/home.jsp

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
  2. <%@ page session="false" %>  
  3. <html>  
  4. <head>  
  5.     <title>Home</title>  
  6. </head>  
  7. <body>  
  8. <h1>  
  9.     Hello world!    
  10. </h1>  
  11. <P>  This is mobile. </P>  
  12. <P>  The time on the server is ${serverTime}. </P>  
  13. </body>  
  14. </html>  

tablet/home.jsp

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
  2. <%@ page session="false" %>  
  3. <html>  
  4. <head>  
  5.     <title>Home</title>  
  6. </head>  
  7. <body>  
  8. <h1>  
  9.     Hello world!    
  10. </h1>  
  11. <P>  This is tablet. </P>  
  12. <P>  The time on the server is ${serverTime}. </P>  
  13. </body>  
  14. </html>  

这样就完成了,容易吧。

当检测到时手机访问的时候,会自动将view映射到moblie目录下,当检测到平板访问的时候会将view映射到tablet目录下,其他时候,映射到根目录下。

这是电脑访问的样子


这是手机访问的样子

很方便呢。spring mobile还提供了其他的几种方式,在官网有个例子的链接,很直观。https://github.com/spring-projects/spring-mobile-samples

kali破解wifi之airmon-ng 工具利用 ...... 阅读详情

相关推荐

从轴承润滑到代码实现:手把手教你用Python FDM求解稳态雷诺方程

本文详细介绍了如何用Python FDM(有限差分法)求解稳态雷诺方程,从轴承润滑理论到代码实现的全过程。通过构建无量纲方程、有限差分格式和迭代求解算法,开发者可以快速实现专业级润滑分析,应用于涡轮发电机、汽车曲轴等场景。文章还提供了完整的Python代码示例和结果可视化方法,帮助工程师优化轴承设计。

weixin_28689507的博客 119

**Spring Mobile 2.0.0 M3** 是 Spring 框架的一个模块,专注于为移动设备提供开发支持

Spring Mobile 2.0.0 M3 提供了强大的功能,用于简化移动应用开发,支持多种移动平台,并提供设备适配、模板引擎支持、国际化与本地化等功能。是 Spring 框架的一个模块,专注于为移动设备提供开发支持。它提供了一套工具和 API,帮助开发者更容易地构建适用于各种移动设备的应用程序。

[Blog][Domain] programb.blog.youkuaiyun.com 625

MID360+fastlio功能笔记

前言。

qq_35598561的博客 5302

Spring Mobile检测多种设备类型

spring mobile框架是一个很小的,用于获取设备信息,然后跳转到不同视图的框架。 集成方式 一、pring Moblie是什么? SpringMoblie是SpringMvc的一个扩展项目,它旨在简化移动web应用程序的开发。 开源地址为 https://github.com/spring-projects/spring-mobile 二、Spring Moblie可以...

Thinkingcao的专栏 1119

MobaXterm远程连接频繁掉线?3个SSH保活设置让你告别断连烦恼

本文针对MobaXterm远程连接频繁掉线问题,提供了3个SSH保活设置方案。从基础的SSH心跳机制到进阶的会话超时调整,再到TCP层保活与代理优化,全方位解决断连烦恼。特别适合需要稳定远程连接的开发者和运维人员,有效提升工作效率。

weixin_29250573的博客 487

SAP UI5 和 Fiori 的一些小技巧合集 - 持续更新中

本文介绍笔者从事 SAP UI5 和 Fiori 开发多年以来,积累的一些经验和小技巧。会保持更新。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 913

Spring Boot集成Spring Mobile快速入门Demo

Spring Mobile是一个基于Spring Web MVC框架扩展的一个针对不同移动终端的应用开发框架。通过它我们在适配不同终端方面,就不用费劲心思了。Spring Mobile的主要功能自动设备检测: Spring Mobile在 server端内置了一个设备解析器的抽象层。它会分析所有过来的请求,然后侦测到设备信息,比如,设备的类型,操作系统等等。网站偏好管理:使用网站偏好管理,Spring Mobile允许用户选择移动/平板电脑/网站的视图。

HBLOG 1589

基于YOLO26的实时目标追踪实战:从训练到视频追踪(附完整可视化代码)

核心组合:YOLO26(高精度检测)+ ByteTrack(稳定追踪)是实时目标追踪的最优工业组合,Ultralytics内置集成无需额外开发;训练优化:追踪场景需优先提升检测框精度(增加box损失权重),保证ID稳定性;可视化核心:为每个ID分配唯一颜色、绘制运动轨迹、显示FPS,是落地场景的必备功能;性能调优:轻量化模型+降分辨率+OpenVINO导出,可在边缘设备(如研华工控机)实现实时追踪。这套代码可直接复用到智慧园区、停车场、工业产线等场景,仅需修改park.yaml中的类别和。

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

Java移动框架篇--Spring mobile简单试用

spring mobile 是spring新推出的一个用于支持移动浏览的小框架,用起来很简单,和spring mvc结合也很方便。 首先建立一个spring mvc的工程 然后,在pom.xml中添加spring mobile的支持 [html] view plain copy dependency>       group

非淡泊无以明志,非宁静无以致远 6195

《UDS协议从入门到精通》系列——到底什么是DTC?

到底什么是DTC?看这里,深度图解DTC格式,详述DTC状态位、快照信息和扩展信息!!

车载系统攻城狮 1万+

S32K144 UDSdoCAN 升级刷写实现笔记

本篇旨在描述如何开发“车规级”的软件升级程序,通过在S32K144平台上实现基于UDSdoCAN的刷写升级功能,带你一步步建立安全升级的“工程思维”,在这里既能收获经验还能获得工程源码、测试脚本,助你起飞,避坑提速!

汽车电子软件领域知识分享 811

Spring @Configuration

1、新建Mobile.java与Product.java Mobile.java: package com.mrw.springtest4; public class Mobile {     public void create(){         System.out.println("一部手机正在被创造。。。");     } } Product.java: packag

MRWisme的博客 491

ANSYS——“There is at least 1 small equation solver pivot term”问题的解决办法

ANSYS——“There is at least 1 small equation solver pivot term”问题的解决办法

python_AI_fans的博客 1万+

Spring Mobile 集成springmvc的使用

spring mobile框架是一个很小的,用于获取设备信息,然后跳转到不同视图的框架。集成方式<filter> <filter-name>sitePreferenceRequestFilter</filter-name> <filter-class>org.springframework.mobile.device.site.SitePreferenceReques

风景美如画的博客 2353

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

spring mobile 的扩展

spring mobile 是spring新推出的一个用于支持移动浏览的小框架,用起来很简单,和spring mvc结合也很方便。

Timor 885

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

spring mvc+spring mobile简单的用法

spring mobile是个啥???它具备以下功能 Features A Device resolver abstraction for server-side detection of mobile and tablet devices Site preference management that allows the user to indicate if he or she pre

xiejx618的专栏 1万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Spring Mobile 开源项目教程

Spring Mobile 开源项目教程 项目介绍 Spring Mobile 是 Spring Framework 和 Spring Web MVC 的一个扩展,旨在简化移动 Web 应用的开发。它提供了以下主要功能: 设备解析器抽象,用于服务器端检测移动和 tablet 设备。 站点偏好管理,允许用户指示他或她偏好“正常”、“移动”或“tablet”体验。 站点切换器,能够根据用户的设备和可...

gitblog_00150的博客 624

spring mobile -- hello world

搭建一个web项目 添加maven管理 maven引入相关包 配置web.xml 配置xxx-servlet.xml SpringMobileHelloController.java 添加mobile、tablet 相关页面 测试访问 1,2 这里就不介绍了,从3开始   maven导入相关包 &lt;dependencies&gt; &lt;!-- spri...

一缕疯狂0 227

Spring Mobile 示例项目教程

Spring Mobile 示例项目教程 1、项目介绍 spring-mobile-samples 是一个由 VMware 不再积极维护但仍然有价值的开源项目。该项目是基于流行的 Spring Web MVC 框架的扩展,旨在简化移动 Web 应用程序的开发。它包含了一系列示例项目,展示了如何使用 Spring Mobile 进行设备检测和网站偏好处理。 2、项目快速启动 环境准备 Java 8...

gitblog_00245的博客 810

Spring系列学习之Spring Mobile

英文原文:https://projects.spring.io/spring-mobile/ 目录 特性 快速开始 设备检测 网站偏好 设备感知视图分辨率 Sample Projects Getting Started Guides Spring Mobile是Spring MVC的扩展,旨在简化移动Web应用程序的开发。 Spring Mobile是一个框架,它提供了检测向S...

纸上得来终觉浅,绝知此事要躬行 5296

使用Spring Mobile实现网站移动端适配及更换主题

在/resources/templates目录下,新建theme-mobile-blue目录,用于存放移动端蓝色主题的视图。在/resources/templates目录下,新建theme-blue目录,用于存放PC端蓝色主题的视图。在/resources/templates目录下,新建default目录,用于存放PC端默认主题的视图。在/resources/templates目录下,新建mobile目录,用于存放移动端默认主题的视图。// true表示如果找不到移动端视图,则使用PC端默认视图。

2403_88996764的博客 684

spring---mobile模块

在现如今的应用中,我们时常会区分访问应用的主体,将不同的访问主体进行分类统计,或根据访问主体返回不同页面。spring有一个mobile的模块可以区分访问主体是手机、平板、还是PC,接下来我们通过代码来看一下如何使用spring的mobile模块。编码添加依赖jar包:<dependency> <groupId>org.springframework.mobile</groupId>

丹凤朝阳 4421

mobile还有人用吗 spring_spring-mobile

Spring Mobileis an extension to the popularSpring Web MVCweb framework that aims to simplify the development of mobile web applications.Spring Mobile 提供了对 Spring MVC 的扩展,用于帮助开发跨平台的移动Web应用。文档地址 : ht...

weixin_34088048的博客 406

推荐使用:Spring Mobile 示例项目

推荐使用:Spring Mobile 示例项目 1、项目介绍 spring-mobile-samples 是一个由 VMware 不再积极维护但仍然有价值的开源项目。该项目是基于流行的 [Spring Web MVC] 框架的扩展,旨在简化移动web应用程序的开发。它包含了一系列示例项目,展示了如何使用 [Spring Mobile] 进行设备检测和网站偏好处理。 2、项目技术分析 Spring ...

gitblog_00028的博客 468
上一篇: spring mvc+spring mobile简单的用法
下一篇: Spring Mobile 介绍
CodingSir
博客等级 码龄21年 2149粉丝 812原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值