Servlet(四):转发与重定向、路径问题

Servlet的重定向与转发 用户通过浏览器发送一个请求,Tomcat服务器接收这个请求,会给浏览器发送一个状态码302,并设置一个重定向的路径,浏览器如果接收到了这个302的状态码以后,就会去自动加载服务器设置的路径。应用场景:一个页面跳转到另外一个页面,登录页面跳转到主页面 login.jsp====>LoginServlet====>main.jsp。 阅读详情

在上次的小案例中用到了转发的技术,今天来仔细聊聊转发和重定向的问题,以及一些小知识的汇总。

一、转发

1、转发的概念

转发主要是将浏览器的请求交给另外一个servlet或jsp来处理,借助request对象完成,在服务器内部跳转,浏览器的地址并不发生改变,并且浏览器并不知道服务器内部发生了跳转,整个过程只会发生一次请求,转发的调用者和被调用者都可以共享request对象和response对象。

2、使用方法

因为是将数据交到另外一个servlet或jsp来处理请求,所以第一步是将需要处理的数据绑定到request对象上,可以使用request.setAttribute(String name, Object obj)方法,其中name是绑定名,obj是绑定值;也可以使用request.getSession().setAttribute(String name, Object obj)方法,绑定到session对象上。

第二步是获取转发器,也就是完成转发这件事需要用到的工具。

RequestDispatcher rd = request.getRequestDispatcher(String url);

url参数是转发的目标地址,可以是servlet,也可以是一个jsp页面,可以使用相对路径,也可以使用绝对路径。

第三步是调用转发器的方法来转发。

rd.forward(request,response);

当然,如果熟练后,可以将第二步和第三步合并为一步。

request.getRequestDispatcher(String url).forward(request, response);

3、转发的优缺点

转发的优点一是安全性高,在内部发生跳转,浏览器地址不变;二是节省资源,转发只需要一次请求,就可以访问至少两个servlet或jsp页面。在实际开发中,转发用到的较多。

转发的缺点是只能在同一web应用内使用,不能转发到外部的url地址。

二、重定向

1、重定向的概念

重定向是指服务器通知浏览器向一个新的地址发送请求,由response对象完成,可以重定向到新的servlet(服务器内部),也可以重定向到外部url(外部应用),浏览器地址发生改变,浏览器知道发生了跳转,整个过程会产生两次请求,重定向的调用者和被调用者不能共享request对象和response对象。

2、使用方法

response.sendRedirect(String url);

url是重定向的地址,可以是绝对路径,也可以是相对路径。

3、重定向的优缺点

重定向的优点是不限制应用范围,可以重定向到服务器内部其他资源,也可以是外部的应用。

重定向的缺点是耗费请求资源,重定向整个过程发生了两次的请求,一个是资源消耗上比转发大,效率也比转发低;另外,因为浏览器的地址发生了变化,相对转发来讲,安全性没有转发高。

三、路径问题

不管是使用转发还是重定向,都会涉及到路径的问题,路径分为相对路径、绝对路径。

绝对路径是指以"/"开头的路径信息。相对路径是指不以"/"开头的路径信息。

在项目中如果要使用绝对路径,重定向的路径是从应用名(上下文)开始,因为重定向时,服务器不知道这个请求是否在应用内部还是外部,所以需要加上应用名;转发时的路径是从应用名之后开始,转发是发生在服务器内部,在同一应用下,可以不用写应用名。

为了避免直接将应用名写在地址里面,可以使用request.getContextPath()方法来替代。

四、POST请求和GET请求

在前几次的小例子中,会经常看见jsp页面写post请求和get请求,在后台处理请求的doPost和doGet方法,下面对post请求和get请求来做下说明。

1、get请求

浏览器在下列三种情况出现时,会发送get请求,一是直接输入某个地址,二是点击链接,三是表单默认的提交方式。

get请求会将请求参数添加到请求资源路径的后面,是在get请求的url中发送的,url中只能存放2k左右的数据,并且请求参数会显示在浏览器地址栏,安全性较低,get请求会被缓存,会被保留在浏览器历史记录中,get请求只应用于取回数据。

2、post请求

设置表单的method属性值为post,浏览器会发送post请求。

post请求会将请求参数放在http消息主体中发送,可以提交大量数据,不会显示在浏览器地址栏,相对安全,但是对于敏感数据需要进行手动加密处理,post请求不会被缓存,也不会被保留在浏览器历史记录中。

五、验证转发与重定向,分别使用相对路径、绝对路径

第一步,新建一个Maven项目,建好两个Servlet类,写好两个jsp页面

package servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 测试转发和重定向,分别使用相对路径、绝对路径
 * @author 小川94
 * @date 2018年6月10日
 */
public class FirstServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    
    public FirstServlet() {
        super();
    }
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("FirstServlet--->>> 进入doGet方法,交由doPost方法处理...");
        doPost(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("FirstServlet--->>> 执行POST请求...");
        // 转发到second.jsp,使用绝对路径(不需要带应用名)
        //request.getRequestDispatcher("/second/second.jsp").forward(request, response);
        
        // 转发到second.jsp,使用相对路径(不需要带应用名)
        //request.getRequestDispatcher("second/second.jsp").forward(request, response);
        
        // 重定向到second.jsp,使用绝对路径(需要带应用名),推荐使用第二种写法
        //response.sendRedirect("/servlet_day04/second/second.jsp");
        //response.sendRedirect(request.getContextPath()+"/second/second.jsp");
        
        // 重定向到second.jsp,使用相对路径(不需要带应用名)
        //response.sendRedirect("second/second.jsp");
        
        
        // 转发到SecondServlet,使用绝对路径(不需要带应用名)
        //request.getRequestDispatcher("/SecondServlet").forward(request, response);
        
        // 转发到SecondServlet,使用相对路径(不需要带应用名)
        //request.getRequestDispatcher("SecondServlet").forward(request, response);
        
        // 重定向到SecondServlet,使用绝对路径(需要带应用名),推荐使用第二种写法
        //response.sendRedirect("/servlet_day04/SecondServlet");
        //response.sendRedirect(request.getContextPath()+"/SecondServlet");
        
        // 重定向到SecondServlet,使用相对路径(不需要带应用名)
        response.sendRedirect("SecondServlet");
    }

}
package servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class SecondServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public SecondServlet() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("SecondServlet--->>> 进入doGet方法,交由doPost方法处理...");
        doPost(request, response);
    }
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("SecondServlet--->>> 执行POST请求...");
        response.setContentType("text/html;charset=utf-8");
        PrintWriter pw = response.getWriter();
        pw.println("<h1>这是SecondServlet中的响应数据</h1>");
        pw.flush();
        pw.close();
    }

}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>第一个jsp页面</title>
</head>
<body>

    <h1>这是第一个jsp页面</h1>
    <hr>
    <!-- ../表示根目录 -->
    <a href="../FirstServlet">这是第一个GET请求</a>
    <br/>
    <!-- request.getContextPath()方法获取的是应用名 -->
    <a href="<%=request.getContextPath() %>/FirstServlet">这是第二个GET请求</a>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>第二个jsp页面</title>
</head>
<body>

    <h1>这是第二个jsp页面</h1>
    <hr>

</body>
</html>

整个项目的目录结构如下图

第二步,分别使用相对路径和绝对路径测试转发和重定向

相对路径和绝对路径都是针对部署在Tomcat上文件的位置,不是工程目录结构,first文件夹和second文件夹下存放的是jsp页面,web-inf文件夹下存放的是编译的servlet的class文件。测试完你会发现使用相对路径是最省事的,但是如果你对相对路径不熟悉,那还是写绝对路径吧,好把控一些。


文章首发于我的个人公众号:悦乐书。喜欢分享一路上听过的歌,看过的电影,读过的书,敲过的代码,深夜的沉思。期待你的关注!

公众号后台输入关键字“Java学习电子书”,即可获得12本Java学习相关的电子书资源,如果经济能力允许,还请支持图书作者的纸质正版书籍,创作不易。

web实验一.1-- servlet请求转发、请求转发与重定向区别 1. 简单的综合应用,掌握Servlet将请求转发给另一个Servlet的方法。 【步骤1】创建一个名为input.html的HTML页面,其中包括一个表单,表单中包含两个文本域,分别供用户输入学号和姓名,该页面也包含提交和重置按钮。 【步骤2】 定义一个名为com.demo.Student类,其中包括学号sno和姓名name两个private的成员变量,定义访问和修改sno和name的方法。 阅读详情

相关推荐

Servlet--超链接,表单提交,重定向,转发4种情况的路径

实际编码中我们经常写路径,写路径既可以写相对路径,也可以写绝对路径。我2年以前我就养成了习惯,只要是写路径我从来都是写绝对路径,因为万一将来我们的项目的目录发生变化,原来要是写相对路径的话就会有路径依赖关系,改的地方太多了。而且相对路径在某些情况下还有点特殊,有的是相对于原来的请求的目录,有的是相对于整个web应用,所以我强烈建议大家以后写路径统一用绝对路径(以“/”开头)来写,“/”表示站点的根

LinkinPark的博客 3202

Servlet实现页面重定向的几种方法

servlet重定向 在servlet/JSP编程中,服务器端重定向可以通过下面两个方法来实现: 1,运用javax.servlet.RequestDispatcher接口的forward方法, 2,或者运用javax.servlet.http.HttpServletResponse接口的sendRedirect方法。 要运用RequestDispatcher接口的forward方法,首先要得到一个RequestDispatcher对象。servlet技术提供了三种方式来得到它: 通过运用javax.se

sw_1433223的博客 5323

servlet中的请求转发和重定向

假设有这样的场景,你在web网站上输入相关的信息,点击提交,网站的页面会跳转到新的页面。那么这样是如何做到的? 这里就要用到请求转发或是重定向了。 请求转发: 顾名思义,就是将本次的请求扭转到下一个处理事务中去。我们来看一下它的具体流程。 我们假设有登录页面:PageServlet,(form表单会将请求数据发送到LoginServlet) 登...

MADE_哒哒 1280

Servlet学习之转发与重定向

文章目录1.概要2.转发2.1 代码演示2.2 原理图3.重定向3.1 代码演示3.2 原理图4.转发与重定向的区别4.1 从表层来看4.2 从里层来看5.资源跳转方式的选择 1.概要 转发与重定向都是在Web中进行资源跳转的方式。具体来说就是我们从也页面中跳转至另一个服务器资源,这个资源可以是html文件,也可以是一个Servlet对象。 在讲解之前我们先说明一下原理图中的大概内容 左边的框框是我们的浏览器(Browser) 右边的内容是我们的Web服务器 oa是我们Web服务器中的一个项目名

少不入川。的博客 3889

Servlet中请求转发和重定向的路径问题

此外,可以使用ServletContext提供的方法获取Web应用的信息,如getContextPath()获取根路径,以确保路径的正确性。在进行请求转发时,可以使用ServletContext的getContextPath()方法获取当前Web应用的根路径,然后拼接目标资源的路径。在上述示例代码中,ForwardServlet通过请求转发将请求转发到名为target的Servlet,而RedirectServlet则通过重定向将请求重定向到/target路径。在进行请求转发时,需要注意路径的正确性。

KiMysql的博客 304

从软体机器人到鞋垫分析:Abaqus超弹性材料(Ogden模型)仿真配置全流程

本文详细介绍了Abaqus中Ogden模型在超弹性材料仿真中的应用全流程,涵盖从实验数据导入、参数拟合到模型构建与求解优化的关键步骤。特别针对鞋垫分析等生物力学场景,提供了单元选择、接触设置和并行计算等实用技巧,帮助工程师实现高精度仿真分析。

weixin_42525385的博客 400

Servlet之页面重定向

Servlet之页面重定向白话解释:页面重定向页面重定向方法-sendRedirect页面重定向案例案例描述HTML页面login.html登录页面welcome.html登录页面Java后端代码ReDirectPageServlet 子类编写web.xml虚拟路径映射配置ajax技术导致的页面重定向失败 白话解释:页面重定向     页面重定向,大白话说——简单可以认为是控制浏览器进行网页页面的跳转操作。     页面重定向

席木木的博客 3744

Tushare Pro的安装使用——“抱歉,您没有访问该接口的权限,权限的具体详情访问:https://tushare.pro/document/1?doc_id=108”问题

最近做毕设关于量化交易的, 因此一直使用tushare作数据源,但是过程中到一些问题,因此这里写篇文章,供大家一起交流下。 Tushare简介 Tushare是一个免费、开源的python财经数据接口包。拥有如股票、基金、期货等行情数据,公司财务、基金经理等基本面数据,以及债券、外汇、行业、大数据、区块链。Tushare返回的绝大部分的数据格式都是pandas DataFrame类型,因此非常方便...

sinat_40875078的博客 1万+

Servlet 请求转发与URL重定向

一、Web组件的交互 Web组件(Servlet/JSP)的交互:Web组件之间的跳转,数据共享。 1、Web组件之间的跳转方式有: 1)请求转发 forword HttpServletRequest对象调用getRequestDispatcher(path)方法,path指定转发到的目标地址 ge...

Charge8的博客 2352

无人机室内悬停如何稳?光流与IMU数据融合实战解析

在无GPS的室内环境中,无人机自主悬停依赖多传感器融合,其中光流与IMU是核心组合。光流传感器通过图像像素位移估算相对地面的速度,长期无漂移,但易受光照和纹理影响;IMU高频响应出色,却存在积分累积漂移。两者在频率与误差特性上天然互补,融合后可实现高精度位置估计。工程实践中,需合理选型、正确处理坐标变换与时间对齐,并通过互补滤波或扩展卡尔曼滤波将光流速度修正引入状态估计,进而支撑位置环与速度环控制。这一技术不仅解决室内定点悬停,也为视觉惯性里程计等更复杂的自主定位提供基础。本文结合真实调试案例,梳理从硬件安

weixin_33314040的博客 297

RTDETR多模态融合实战:基于注意力机制的红外与可见光目标检测优化

本文深入探讨了基于RTDETR模型的红外与可见光多模态目标检测优化方案。针对复杂光照下的检测难题,文章提出并实战演示了如何利用注意力机制(如SimAM与交叉注意力)实现RGB与IR特征的智能动态融合,从而构建更鲁棒的“全天候”检测系统,有效提升安防、自动驾驶等场景在夜间及恶劣天气下的检测精度与可靠性。

weixin_29083373的博客 189

Servlet中转发和重定向的路径问题以及表单提交路径问题

转自:http://blog.sina.com.cn/s/blog_7ffb8dd501013tbg.html 一、请求转发与响应重定向的种类    有两种方式获得Servlet转发对象(RequestDispatcher):一种是通过HttpServletRequest的getRequestDispatcher()方法获得,一种是通过ServletContext的getRequestDi

u011943172的博客 5291

Metal ECO实战:如何在不修改底层掩模的情况下修复芯片时序问题

本文深入探讨了Metal ECO技术在芯片设计中的应用,这是一种在不修改底层晶体管掩模的前提下,仅通过调整金属连线和替换预置填充单元来修复时序问题的“微创手术”。文章详细解析了其原理、适用场景、关键操作流程与命令,并分享了实战中的高级技巧与常见陷阱,为面临流片前时序违例的工程师提供了宝贵的修复指南。

wdx0123456的博客 433

Servlet的转发和重定向

在实际的网站开发中,页面的跳转是最常见的。Servlet中的页面跳转可以通过转发或者重定向来实现。 使用response对象提供的sendRedirect()方法,可以将网页重定向到另一个页面。SendRedirect()方法的语法格式:response.sendRedirect(String path)。参数path指的是目标的路径,这个路径可以是相对的,也可以是不同主机的其他URL地址。 接下...

一起摆摊啊 1万+

用友U8库龄分析避坑指南:物料出入库日期计算的5个常见错误

本文深入剖析了在用友U8系统中进行库龄分析时,物料出入库日期计算的五个常见陷阱。从数据源选择、业务类型过滤、计价方式逻辑、期初数据处理到查询性能优化,逐一解析错误根源并提供避坑指南,帮助企业获得准确的库龄数据,有效管理库存与资金风险。

weixin_29209801的博客 457

Android SDK安装教程(超详细),从零基础入门到精通,从这篇开始_android sdk下载安装

Android SDK安装教程(超详细),从零基础入门到精通,从这篇开始_android sdk下载安装

Jinmindong 5021

Servlet请求转发与重定向

JavaServlet

weixin_42051619的博客 2710

EAAI title-page-template 怎么填写: 期刊投稿作者信息填写指南

本文详细介绍了期刊投稿时作者信息填写的规范要求。主要内容包括:1)核心填写原则(信息一致性、标注清晰性、通讯作者唯一性);2)具体填写方法演示(作者姓名、单位/机构、通讯作者);3)常见错误规避指南(如单位上标错误、邮箱无效等);4)提供可直接套用的规范模板。特别强调作者姓名拼写、单位标注、通讯作者指定等关键细节,并以深圳大学和同济大学研究团队为例进行说明,帮助投稿者避免因格式问题被退回修改。

ZhangJiqun&191cm&85kg 1097

Servlet 转发与重定向

当文档移动到新的位置,我们需要向客户端发送这个新位置时,我们需要用到网页重定向。当然,也可能是为了负载均衡,或者只是为了简单的随机,这些情况都有可能用到网页重定向。 重定向请求到另一个网页的最简单的方式是使用 response 对象的 sendRedirect() 方法。下面是该方法的定义: public void HttpServletResponse.sendRedirect(String location) throws IOException 该方法把响应连同状态码和新的网页位置发送回浏览器。您

qq_44336097的博客 2215

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

Servlet转发与重定向和JSP路径问题

存在的问题 相对路径,相对于当前资源的路径,转发可能会导致相对路径出现问题 所有推荐Servlet转发与重定向和JSP都使用绝对路径 一、JSP路径 假如当前项目名为JavaWeb,所有页面上的绝对路径,/都是代表从服务器根开始,http://localhost:8080 栗:<a href="/hello.jsp"></a>代表访问路径为http://local...

Luck_ZZ的博客 927

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

servlet中的请求转发和重定向的路径问题

servlet中的请求转发和重定向的路径问题

linjinglq的博客 2228

请求转发与重定向中的路径填写指南

优先使用绝对路径尤其是在重定向时,使用绝对路径可以避免相对路径带来的不确定性。使用动态获取应用根路径,确保路径的准确性。理解请求转发与重定向的区别请求转发:服务器内部跳转,客户端不可见。适用于在服务器内部资源之间的跳转。重定向:客户端跳转,浏览器地址栏会更新。适用于需要通知客户端跳转的场景。合理使用**目录**:将敏感资源置于WEB-INF下,增强应用的安全性。通过Servlet或控制器访问WEB-INF资源,避免直接暴露给客户端。路径一致性。

qq_51263863的博客 1307

Servlet 转发请求与重定向,以及路径问题

转发请求   当一个servlet接收到请求后,如果需要将请求转发给另外一个servlet或者jsp文件,可使用下面这种方法: package cn.ganlixin.servlet; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet...

JOKER0707的博客 360

jsp重定向与请求转发的路径404问题

jsp重定向与请求转发的路径404问题 请求转发特点: 1. 浏览器地址栏路径不发生变化 还停留在首次访问的Servlet的URL 2. 只能转发到当前服务器内部资源中。 3. 转发是一次请求,可以使用request共享数据 4. 自我归纳:forward方式究竟是get还是post方式取决于第一次访问servlet方式 另外 href是get方式访问。 重定向: 1. 地址栏发生变化 2. 重...

qq_42744046的博客 4066

转发与重定向

摘要:本文深入探讨了Servlet中的转发(Forward)与重定向(Redirect)机制。转发是服务器内部资源跳转,保持URL不变且共享请求对象;重定向则是客户端发起二次请求,URL会变化且不共享数据。文章详细对比了两者的工作原理、API实现及路径规则,并通过用户登录案例展示了具体应用场景。转发适合应用内部流程控制,而重定向适用于跨应用跳转或防止表单重复提交的场景。

weixin_46136757的博客 900
上一篇: Servlet(三):获取表单数据、解决乱码和报错问题
下一篇: Servlet(五):一个Servlet处理多个请求
程序员小川
博客等级 码龄10年 47粉丝 305原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值