MVC入门

JavaWeb——MVC架构模式 用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时不需要重新编写业务逻辑。2.在前后端分离的项目中,后端已经没有视图文件,该层次已经衍化成独立的前端项目;1.存放和数据库对应的实体类以及一些用于存储非数据库表完整相关的VO对象;1.存放一些视图文件相关的代码,例如html、css以及js等;2.存放一些对数据进行逻辑运算操作的一些业务处理代码;专门存放和数据库对应的实体类和一些VO对象;专门存放对数据进行业务逻辑运算的一些类; 阅读详情

来自:http://www.cnblogs.com/levenyes/p/3291557.html

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法。

                                                                                                                                                                                        ——《百度百科》

      记得我第一次接触jsp的时候是学校里面要求我们做课程设计,我和我的小伙伴们就打算模仿一个外卖网站做一个web项目。那时候啥都不懂,什么HTML啊CSS啊统统不会,更别说JSP了。用jsp的时候也是把几乎所有的逻辑控件都放到一个jsp里面,页面里充斥着各式各样的代码,纷繁杂乱,最后项目修改起来也相当麻烦,结果如何可想而知。

      后来买了本书,在这里也推荐一下,是台湾林信良老师的《Servlet&JSP学习笔记》。里面讲解深入浅出,通俗易懂的同时也不会像一些所谓实战的书籍那样流于表面,从中,我第一次了解到MVC框架,并且在之后的项目中派上用场。

      闲话少说,下面开始手把手教大家如何搭建MVC框架,作为例子,展示的是一个最简单的登录流程。

第一步:创建项目

     创建项目的工具我推荐MyEclipse,因为不用我们配置Tomcat之类的东西,可以省去不少的功夫,把精力集中到MVC框架的学习当中。创建项目完毕之后,我们可以立刻启动项目。

启动项目完毕之后,MyEclipse自带的浏览器会向我们展示这么一个简单到不能再简单的页面

 

    大家可能会想,为什么项目启动后会展示这么一个页面呢?这个页面又保存在哪里呢?现在,让我给大家一一揭晓。(知道个中原因的读者请跳过,写这么一段是为了让初学者更容易理解,见谅!)

    看到项目的文件结构,不难在WebRoot文件夹下找到名为index.jsp这一文件。浏览器所展示的页面,就是此文件经过处理过后的结果。点开之后,修改<body></body>之间的内容,例如改成This is My MVC project.。重新启动项目后,告诉我你看到了什么。

    好了,解决完页面来源问题之后,接下来就是解答为什么会展示这么一个页面的问题了。我们点WebRoot文件夹节点,再点击WEB-INF文件夹节点,找到web.xml文件并且双击打开,然后看看里面的内容——

复制代码
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app version="2.5" 
 3     xmlns="http://java.sun.com/xml/ns/javaee" 
 4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
 6     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 7 <!--以上内容暂时不需要理解,如果不明白可跳过-->
 8 
 9     
10   <welcome-file-list>     <!--welcome-file-list开头-->
11     <welcome-file>index.jsp</welcome-file>   <!--设置欢迎页面,也就是项目启动后浏览器展示的第一个页面-->
12   </welcome-file-list>    <!--welcome-file-list结尾-->
13  
14 </web-app>
复制代码

     看到第11行的代码中的index.jsp,是不是觉得似曾相识呢?没错,它就是我们刚才一直在讨论的那个页面。这里设置的就是项目启动后浏览器展示的第一个页面,读者可以试着再WebRoot目录下添加一个HTML文件或JSP文件,然后将这里的index.jsp改成所添加的文件名,重新启动项目,你就会发现有什么东西不一样了。web.xml文件,用处还不止一点,后面再讨论


前面已经创建完项目了,那么下面一个步骤就是逐一新建在MVC框架中负责V(视图)、C(控制器)、M(模型)的对应文件。

第一步:创建项目(已完成)

第二步:新建负责V(视图)的JSP文件

    在文件夹Web-Root下新建名为MyJsp.jsp的JSP文件,代码如下:

 

复制代码
 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 7 <html>
 8 <head></head>
 9              <!--对于初学者,上面的代码都可以暂时不必理会 -->
10 <body>
11     <form action="login.do"  method="post">      <!--所提交的表单,action为"login.do",发出请求是post-->
12 <p>账号:<input type="text" name="id" /></p>      <!--所输入的"账号"在提交后的标示是"id",下同 -->
13                                                     
14 <p>密码:<input type="text" name="password" />
15       
16 <p><input type="submit" value="登录"> </p>           <!--表单提交按钮,显示名称为"登录"-->
17     </form>
18   </body>
19 </html>
复制代码

 

    在创建完之后,记得在web.xml中,将<welcome-file-list>节点中的内容改成上面这个文件的文件名MyJsp.jsp。(建议初学者做完这个步骤之后先运行一遍项目,看看效果如何,再看看有没有出错的地方)
    如果运行的效果如下图,那应该就没什么问题了。

      所谓的V(视图),通俗地来讲,就是用户所看到的内容。具体到这个java web项目,就是用户所看到的页面。

第三步:新建负责C(控制器)的Servlet

      首先,要在src目录下新建一个包,包名为cc.MyMVC.servlet。然后,再在该包下新建一个servlet文件,名为MyServlet,代码如下:

复制代码
 1 package cc.MyMVC.servlet;
 2 import java.io.IOException;
 3 import javax.servlet.ServletException;
 4 import javax.servlet.http.HttpServlet;
 5 import javax.servlet.http.HttpServletRequest;
 6 import javax.servlet.http.HttpServletResponse;
 7 
 8 import cc.MyMVC.POJO.MyPOJO;
 9 
10 public class MyServlet extends HttpServlet {
11     public MyServlet() {
12         super();
13     }
14     
15     public void destroy() {
16         super.destroy();
17     }
18 
19     public void doGet(HttpServletRequest request, HttpServletResponse response)
20             throws ServletException, IOException {
21     }
22 
23 //以下为关键代码,初学者只需看此处,其他地方都可以暂且不管
24     public void doPost(HttpServletRequest request, HttpServletResponse response)//处理post请求的方法
25             throws ServletException, IOException {
26         boolean b=false;
27         MyPOJO myPOJO=new MyPOJO();//新建MyPOJO类的对象myPOJO
28         
29         //根据标示名获取JSP文件中表单所包含的参数
30         String id=request.getParameter("id");
31         String password=request.getParameter("password");
32         
33         b=myPOJO.login(id,password);//使用模型对账号和密码进行验证,返回一个boolean类型的对象
34         
35         if(b){  //如果验证结果为真,跳转至登录成功页面
36             response.sendRedirect("LoginSuccessful.jsp");
37         }
38         else {  //如果验证结果为假,跳转至登录失败页面
39             response.sendRedirect("LoginFailed.jsp");
40         }
41         
42     }
43     
44     public void init() throws ServletException {
45     }
46 }
复制代码

     很不幸,第三步提到的模型(M)还没有创建,大家可以略过。大家可以看到,这个servlet中doGet方法里的代码都被删光光了,无法处理get请求。而这个对我们这个项目可以说是毫无影响,看到我们第二步创建的jsp文件,会发现表单提交的方式是post请求,所以,我们只需要实现doPost方法就好了,并且这个方法将处理提交的post请求。

     控制器(C)的作用,就是对流程的控制,接收视图传来的参数,交由模型进行处理,再根据处理的结果决定下一步的操作。具体到本项目,servlet接收jsp传来的参数id和password,交由POJO处理,根据返回的boolean结果跳转到登录成功(失败)的页面。

 

第四步:修改web.xml文件,注册servlet并且建立action与servlet之间的映射。

    前面说到,MyServlet.servlet会处理提交的请求,那么,为什么servlet会接收到这个请求呢?因为,我事先修改了web.xml文件,在里面添加了相应的代码。web.xml的完整代码如下:

复制代码
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app version="2.5" 
 3     xmlns="http://java.sun.com/xml/ns/javaee" 
 4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
 6     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 7 <!--以上内容暂时不需要理解,如果不明白可跳过-->
 8 
 9   <servlet>
10     <servlet-name>MyServlet</servlet-name><!--定义servlet的名称 -->
11     <servlet-class>cc.MyMVC.servlet.MyServlet</servlet-class><!--对应servlet所属的文件名 -->
12   </servlet>
13 
14   <servlet-mapping> <!-- 建立servlet与action之间的映射 -->
15     <servlet-name>MyServlet</servlet-name>  <!-- 映射中servlet的名称,已定义 -->
16     <url-pattern>/login.do</url-pattern>    <!-- 所对应的action -->
17   </servlet-mapping>
18 <!--以上内容为新添加的代码,请重点关注-->
19 
20     
21   <welcome-file-list>     <!--welcome-file-list开头-->
22     <welcome-file>MyJsp.jsp</welcome-file>   <!--设置欢迎页面,也就是项目启动后浏览器展示的第一个页面-->
23   </welcome-file-list>    <!--welcome-file-list结尾-->
24  
25 </web-app>
复制代码

    看到关于action的那一行XML代码,是否想到了什么呢?没错,就是jsp表单中所定义的action。试着修改,看看会有什么效果?

第五步:新建M(模型)的POJO文件

    POJO(Plain Ordinary Java Objects)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。POJO实质上可以理解为简单的实体类,顾名思义POJO类的作用是方便程序员使用数据库中的数据表。——《百度百科》

    首先,在src文件下新建包,包名为cc.MyMVC.POJO。然后在该包下新建class文件,名为MyPOJO。

    为了让读者,尤其是初学者更快地理解MVC,而不是将精力耗费在理解POJO以及数据库操作上面,我将POJO进行了尽可能的简化。代码如下:

复制代码
 1 package cc.MyMVC.POJO;
 2 
 3 public class MyPOJO {
 4     public boolean login(String id,String password){
 5       if(id.equals("admin")&&password.equals("123456")){//判断用户名以及密码是否与设定相符
 6           return true;
 7       }
 8       else return false;
 9     }
10 }
复制代码

第六步:新建V(视图)中的另外两个JSP文件
    在Web-Root文件夹下新建两个jsp文件,分别命名为LoginSuccessful.jsp以及LoginFailed.jsp。代码如下:

复制代码
 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6 
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10   </head>
11   <body>
12     Login Successful. <br>
13   </body>
14 </html>
复制代码
复制代码
 1 <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6 
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10   </head>
11   
12   <body>
13     Login Failed. <br>
14   </body>
15 </html>
复制代码

第七步:跑项目,看效果

      (1)输入账号:admin,密码:123456 将会跳转到页面如下:

     (2)输入错误的账号或错误的密码,将会跳转到页面如下:

      直到这里,示例项目已经构建和演示完毕了。为了简化说明,狠心把许多重要但是对此次说明可能有妨碍的知识点给砍掉了。例如,web.xml为什么可以决定欢迎页,为什么可以进行servlet的配置;HTTP中的post请求以及get请求又是什么样的?诸如此类,不一而足。再提一下林信良老师的《Servlet&JSP学习笔记》,里面有更加详细的讲解,强烈推荐!
      MVC框架,主要是对应用的分层,在web项目中尤其流行,算是最基础的分层模式。初学者可能还不了解MVC框架的作用,甚至会觉得这样做故作高深,最后像我当初那样,把所有的代码都挤到一个或几个jsp文件当中。其实,随着项目规模的逐渐庞大以及团队成员的增加,分层的思想不仅有助于分工合作,还增加了项目的伸缩性,降低了测试和debug的工作量和难度。

      最后,一句话,实践最重要!



java_web项目mvc框架demo java_web项目mvc框架demo;java_web项目mvc框架demo;java_web项目mvc框架demo 立即下载

相关推荐

javaweb使用mvc框架实现注册登录

初学javaweb时借鉴过的小实例,曾经对我很有帮助,分享一下

Java Web ——MVC基础框架讲解及代码演示

了解一下类似Spring MVC框架的底层实现 相信看完这个短文,MVC你就懂了,还不懂请艾特我······ 带着问题去学习 MVC到底是什么? 如何实现MVC? 开始! MVC是什么? Web开发 在讲MVC之前,还是简要介绍一下Web开发吧,相信搞程序的或多或少都知道Web编程、Socket编程等等。 其实开发Web应用最原始的方式面向Http连接的底层进行开发,自己编写Web服务,需要了解和考虑的内容包括但不限于:Socket编程、端口号、报文处理、IO多路复用、线程池等等。 举个例子,用Ja.

青玉白露的博客 3294

手把手教你用三菱PLC控制JET伺服原点:从硬件接线到GXWORKS3程序调试

本文详细介绍了如何使用三菱PLC控制JET伺服系统实现原点回归功能,涵盖硬件接线、参数配置到GX Works3程序调试的全流程。通过实战指南,帮助工程师快速掌握伺服控制技术,提升工业自动化项目的实施效率。

weixin_30642561的博客 535

Java框架——springMVC基础

Spring MVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架。查看官方文档:https://docs.spring.io/spring/docs/5.2.0.RELEASE/spring-framework-reference/web.html#spring-web我们为什么要学习SpringMVC呢?轻量级,简单易学高效 , 基于请求响应的MVC框架与Spring兼容性好,无缝结合约定优于配置。

qq_51936245的博客 2411

当知识图谱遇见多模态:突破文本界限的智能认知革命

本文探讨了知识图谱与多模态技术的融合,揭示了其在医疗诊断、文化保护等领域的革命性应用。通过图神经网络、对比学习框架和跨模态注意力机制等技术,实现了文本、图像和音频数据的智能关联与认知。文章还分享了在Neo4j等图数据库中的实践案例和优化策略,为构建下一代智能认知系统提供了技术参考。

weixin_29197835的博客 464

解决WSL2网络隔离:Ubuntu子系统共享Windows代理的3种方法

本文详细解析了WSL2的网络隔离特性,并提供了三种在Ubuntu子系统中共享Windows代理的实用方法:环境变量法、配置文件法和系统服务法。通过具体代码示例和方案对比,帮助开发者快速解决WSL2网络访问问题,实现一键设置代理,提升开发效率。

weixin_29295541的博客 452

【Java编程】MVC框架和经典三层结构

经典三层架构是一种设计模式,而 MVC 框架只是该模式的一个具体实现。设计模式比框架更加抽象。设计模式更像建筑师手中的图纸,而框架则代表了实际的建筑。框架可用代码表示并直接执行或复用,模式只是对问题的描述或解决问题的方法的描述。

Data · Model · Agent · Repeat 2553

Unity Spine动画控制全攻略:播放、回调与停止的实战技巧

本文深入解析Unity中Spine动画的核心控制技巧,涵盖动画播放、轨道分层、事件回调与平滑停止等实战方法。通过封装SpineAnimationController,详细讲解了如何利用动画播放结束回调实现精准的游戏逻辑同步,并提供了避免内存泄漏和动画卡顿的避坑指南,助力开发者打造流畅专业的2D游戏动画系统。

weixin_29021291的博客 379

通俗易懂讲解MVC架构

首先,我们需要了解MVC的基本概念。MVC是Model-View-Controller的缩写,分别代表模型、视图和控制器。这三个部分分别负责不同的功能,它们之间的关系是相互独立、松散耦合的。

一只未秃顶的不合格程序猿的博客 3714

Unity小游戏接入抖音敏感词检测

摘要: 本文介绍了Unity小游戏接入抖音敏感词检测的方法。抖音官方提供了两种API:SensitiveWordCheck用于检测敏感词,ReplaceSensitiveWords用于替换敏感词。此外,若使用键盘输入事件,可通过tt.onKeyboardComplete监听回调,平台会自动屏蔽敏感词(替换为*)。接入官方字库可有效避免审核驳回,适用于小游戏中的用户输入功能(如起名系统)。附官方文档链接及参数说明。

类人_猿的博客 4594

Altium Designer应用技巧5: Altium Live账号的获得

为了更好的应用Altium Designer,我们需要得到一个Altium Live账号,但从其英文或者中文官方网站取得,都需要7个工作日的时间,而且对于个人用户来说,并不是100%都能够获取到。本文介绍一种,从俄罗斯Altium官方网站获取账号的方法,可以立即使用。     1、点击http://live.altium-ru.com/#Join网址进入俄罗斯Altium官方网站,Altiu

snmplink的博客 1万+

MVC入门教程

一、前言 以下是我自己写的MVC入门教程和一个外国人写的。觉得都很基础,够入门了。现整理成目录,先后顺序不代表排名。 二、我自己写的MVC入门教程 1.无废话MVC入门教程一[概述、环境安装、创建项目] 2.无废话MVC入门教程二[第一个小Demo] 3.无废话MVC入门教程三[路由设置及视图入门] 4.无废话MVC入门教程四[视图中的Layout使用] 5.无废话MVC入门教程五[...

weixin_34008933的博客 235

huggingface使用git上传model或者Dataset到HF,当然也可以上传代码,以及大文件,很哇塞!!!

huggingface使用git上传model或者Dataset到HF,当然也可以上传代码,以及大文件,很哇塞!!! 第一次使用时,需要使用设置系统全局的huggingface token,这。点击huggingface首页右上角的头像 → settings → access tokens,创建一个write权限的token,名字可以随便取。

拥抱具身智能,昇腾Ascend C 3105

Spring MVC MVC介绍和入门案例

M:Model,模型层,指工程中的JavaBean,作用是处理数据JavaBean分为两类:一类称为数据承载Bean:专门存储业务数据的,如 Student、User 等一类称为业务处理Bean:指 Service 或 Dao 对象,专门用于处理业务逻辑和数据访问。V:View,视图层,指工程中的html或jsp等页面,作用是与用户进行交互,展示数据C:Controller,控制层,指工程中的servlet,作用是接收请求和响应浏览器MVC的工作流程。

jyx_boy的博客 954

Android 14.0 系统设置显示主菜单添加屏幕旋转菜单实现旋转屏幕功能

在14.0的系统rom定制化开发中,在对系统设置进行定制开发中,有产品需求要求增加 旋转屏幕功能的菜单,就是在点击旋转屏幕菜单后弹窗显示旋转0度,旋转 90度,旋转180度, 旋转270度针对不同分辨率的无重力感应的大屏设备的屏幕旋转功能的实现, 接下来就来分析实现这个功能

安卓兼职framework和app工程师的博客 1311

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【Spring篇】初始Spring MVC框架之Spring MVC入门程序编写

Spring MVC是一个基于Java的实现了MVC(Model-View-Controller)设计模式的Web框架。它是Spring框架的一部分,专门用于构建Web应用程序。Spring MVC通过将应用程序分离成模型(Model)、视图(View)和控制器(Controller)三个核心组件,来帮助开发者构建可维护、可测试的Web应用程序。

m0_74202856的博客 3893

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Spring MVC入门

本内容采用最新SpringBoot3框架版本,MVC是一种编程思想,它将应用分为模型(Model)、视图(View)、控制器(Controller)三个层次,这三部分以最低的耦合进行协同工作,从而提高应用的可扩展性及可维护性。模型层主要包括实体类Bean(存储业务数据的类,如Student)和处理业务逻辑的Bean(如Service、Dao)。用户与应用程序交 互的、展示数据的界面,例如工程中的html页面。工程中的servl et,接收视图层发出的请求,将请求转给模型,响应用户请求渲染视图。

分享各类实战项目,提供源码与教程,供大家学习参考。 1391

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Spring MVC简介附入门案例

SpringMVC是一个基于MVC模式的轻量级Web框架,是Spring框架的一个模块,和Spring可以直接整合使用。SpringMVC代替了Servlet技术,它通过一套注解,让一个简单的Java类成为处理请求的控制器,而无须实现任何接口。

qq_53317005的博客 5104

Spring MVC 配置详解与入门案例

Spring MVC 配置

2301_81096101的博客 1070

Spring_MVC 快速入门指南

SpringMvc快速入门案例

2301_77129242的博客 1472

ASP.NET MVC​ 入门指南

模型(Model):负责处理数据和业务逻辑。例如,在一个电商应用中,模型可以处理商品信息的存储、查询和更新等操作。视图(View):负责呈现数据给用户。它通常是 HTML 页面,展示从模型获取的数据。控制器(Controller):负责接收用户的请求,调用模型处理数据,并选择合适的视图来显示结果。通过本教程,你学习了 MVC 模式的基本概念,以及如何使用ASP.NETMVC 框架创建一个简单的 Web 应用程序。MVC 模式可以帮助你更好地组织代码,提高应用程序的可维护性和可扩展性。

1483

Spring Web MVC入门

RequestMapping 是Spring Web MVC应⽤程序中最常被⽤到的注解之⼀,它是⽤来注册接⼝的 路由映射的.路由映射:当⽤⼾访问⼀个URL时,将⽤⼾的请求对应到程序中某个类的某个⽅法的过程就叫路由映射.@RestController 是 Spring MVC 框架中的一个注解,它是一个复合注解,等价于在类上同时使用 @Controller 和 @ResponseBody。

YQY18289570091的博客 1317

Spring Web MVC 入门

Spring MVC 快速上手~

2301_80313139的博客 1289

java mvc入门_Java学习之Spring MVC入门

Java学习之Spring MVC入门0x00 前言前面写了SSM 的两大框架,分别是Mybatis和Spring,这里来写一下Spring MVC框架的相关内容。0x01 Spring MVC概述是一种基于Java实现的MVC设计模型的请求驱动类型的轻量级WEB框架。Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架...

weixin_29661213的博客 203
上一篇: Eclipse 版本
下一篇: java实现邮件的发送包括网页文件的发送
xiaodanjava
博客等级 码龄15年 90粉丝 26原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值