jsp小练习

1.在JSP页面showPriceSum.jsp…

(1)在JSP页面showPriceSum.jsp中定义一个方法public double getPriceSum(String input),该方法可以返回参数input含有的各个数字的代数和。比如String str=”麻辣豆腐:20.6元,红烧肉:68.9元”,那么getPriceSum(str)返回的值是89.5。
(2)Java程序片中用String对象str封装表示菜单的字符序列。
(3)使用Java程序片显示str以及getPriceSum(mess)返回的值。

Show.jsp

<%@ page import="java.util.regex.Pattern" %>
<%@ page import="java.util.regex.Matcher" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<%!
    public double getPriceSum(String input){
        Pattern pattern;
        Matcher matcher;
        String regex="-?[0-9][0-9]*[.]?[0-9]*";
        pattern=Pattern.compile(regex);
        matcher=pattern.matcher(input);
        double sum=0;
        while (matcher.find()){
            String str=matcher.group();
            sum +=Double.parseDouble(str);
        }return sum;
    }
%>
<body bgcolor="#8a2be2">
  <p style="font-family: 黑体;font-size: 20px;">
      <br>张三的菜单:</br>
<%String str="麻辣豆腐:20.6元,红烧肉:68.9元";%>
<br><%=str%>
      <br><b><i>消费总和:<%=getPriceSum(str)%></i></b></br>
      <br>李四的菜单:</br>
          <% str="鱼头:62.9元,烤鸭:199元,红焖大虾:289.9元";%>
      <br><%=str%>
      <br><b><i>消费总和:<%=getPriceSum(str)%></i></b></br>
  </p>
</body>
</html>

2.time.jsp

(1)页面time.jsp负责显示该页面被访问时的日期时间。
(2)编写JSP页面userTime.jsp,要求useTime.jsp使用include指令标记在当前页面中嵌入time.jsp.
userTime.jsp

<%@ page import="java.time.LocalTime" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%@include file="time.jsp"%>
</body>
</html>

time.jsp

<%@ page import="java.time.LocalDate" %>
<%@ page import="java.time.LocalTime" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        LocalDate date = LocalDate.now();
        LocalTime time = LocalTime.now();
    %>
    用户在
    <%=date.getYear()%>/
    <%=date.getMonthValue()%>/
    <%=date.getDayOfMonth()%>
    <br>
    <%=time.getHour()%>:
    <%=time.getMinute()%>:
    <%=time.getSecond()%>访问了网页
</body>
</html>

3.编写三个JSP页面:main.jsp、circle.jsp、ladder.jsp

编写三个JSP页面:main.jsp、circle.jsp、ladder.jsp,将三个JSP页面保存在同一web服务目录中。main.jsp使用include动作标记加载circle.jsp和ladder.jsp页面。circle.jsp页面可以计算并显示圆的面积。ladder.jsp页面可以计算并显示梯形的面积。当circle.jsp和ladder.jsp被加载时获取main.jsp页面include动作标记的param子标记提供的圆的半径以及梯形的上底、下底和高的值。(根据要求自己编码实现)
circle.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<%!    public String getArea(double r)
{
    if(r>0)
    {
        double area=r*r*3.14;
        return ""+area;
    }
    else{
        return("半径为"+r+"不能为大于0以外的数字,无法计算面积");
    }
}
%>
<%
    String sideR=request.getParameter("sideR");
    double r=Double.parseDouble(sideR);
%>
<br><br>我是被加载的文件,负责计算圆的面积<br>
给我传递的半径是:<%=r%>
<br>圆的面积是:<%=getArea(r) %>
</body>
</html>

ladder.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<%!    public String getArea(double r)
{
    if(r>0)
    {
        double area=r*r*3.14;
        return ""+area;
    }
    else{
        return("半径为"+r+"不能为大于0以外的数字,无法计算面积");
    }
}
%>
<%
    String sideR=request.getParameter("sideR");
    double r=Double.parseDouble(sideR);
%>
<br><br>我是被加载的文件,负责计算圆的面积<br>
给我传递的半径是:<%=r%>
<br>圆的面积是:<%=getArea(r) %>

</body>
</html>

Main.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<%
    double r=3,a=2,b=5,c=2;
%>
<br>加载circle.jsp计算半径为<%=r %>的圆的面积:
<jsp:include page="circle.jsp">
    <jsp:param value="<%=r %>" name="sideR"/>
</jsp:include>
<br>加载ladder.jsp计算上底、下底、高为<%=a %>,<%=b %><%=c %>的梯形面积
<jsp:include page="ladder.jsp">
    <jsp:param value="<%=a %>" name="sideA"/>
    <jsp:param value="<%=b %>" name="sideB"/>
    <jsp:param value="<%=c %>" name="sideC"/>
</jsp:include>
</body>
</html>

4.编写input.jsp…

(1)编写input.jsp,该页面提供一个form表单,该form表单提供两个text文本框,用于用户输入数字,提供一个select下拉列表,该下拉列表有加、减、乘、除四个选项,供用户选择运算符号。用户在form表单中数学的数字,选择运算符号,单击submit提交键将这些数据提交给computer.jsp页面。
(2)computer.jsp页面获取input.jsp提交的数据,计算出相应的结果显示给用户。如果computer.jsp页面没有获取到数据,就将用户重新定向到input页面。
Input.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body bgcolor=#ffccff>
<form action="computer.jsp" method=post name=form>
    <p style ="font-family:宋体;font-size:18;color:blue">
        输入运算数,选择运算符号:<br>
        <input type=text name="numberOne" size=6/>
        <select name="operator">
            <option selected="selected" value="+"><option value="-"><option value="*"><option value="/"></select>
        <input type=text name="numberTwo" size=6/>
        <br><input type="submit" name="submit" value="提交"/>
    </p >
</form>
</body>
</html>

Computer.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body bgcolor =cyan>
<p style ="font=family:宋体;font-size:18;color:black">
        <%
String numberOne=request.getParameter("numberOne");
String numberTwo=request.getParameter("numberTwo");
String operator=request.getParameter("operator");
if(numberOne == null||numberOne.length()==0){
 response.sendRedirect("input.jsp");
 return;
}
try{
 double a=Double.parseDouble(numberOne);
 double b=Double.parseDouble(numberTwo);
 double r=0;
 if(operator.equals("+"))
  r=a+b;
 else if(operator.equals("-"))
  r=a-b;
 else if(operator.equals("*"))
  r=a*b;
 else if(operator.equals("/"))
  r=a/b;
 out.print(a+""+operator+""+b+"="+r);
}
catch(Exception e){
 out. println("请输入数字字符");
}
%>
</body>
</html>

5.编写choiceGrage.jsp,该页面中的form…

(1)编写choiceGrage.jsp,该页面中的form表单中使用radio(单选按钮)提供选择记忆测试级别:初级、中级和高级。初级需要记忆一个长度为5个字符的字符序列(例如,☆□☆△○),中级需要记忆一个长度为7个字符的字符序列,高级需要记忆一个长度为10个字符的字符序列。在choiceGrage.jsp页面选择级别后,单击form表单的提交键,提交给giveTest.jsp页面。
(2)编写giveTest.jsp页面,该页面获取choiceGrage.jsp页面提交的级别后,根据级别随机显示一个字符序列,比如,对于中级,这个字符序列的长度为7个字符。然后提示用户在5秒内记住这个字符序列。5秒后,该页面将自动定向到answerTest.jsp页面。
(3)编写answerTest.jsp页面,该页面的form表单提供用户给出答案的界面,即使用radio标记让用户选择字符序列中的各个字符,以此代表用户认为自己记住的字符序列。单击提交键,将选择提交给judgeAnswer.jsp页面
(4)编写judgeAnswer.jsp页面,该页面负责判断用户是否记住了giveTest.jsp页面给出的字符序列。
(5)运行choiceGrage.jsp页面。
giveTest.jsp

<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Random" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body bgcolor="orange">
<style>
    #textStyle{
        font-family: 宋体;font-size: 36px;color: plum;
    }
</style>
<%!
    static ArrayList<String> list=new ArrayList<String>();
    static {
        list.add("W");
        list.add("Y");
        list.add("S");
        list.add("Z");
        list.add("L");
    }
    String getNextTestString(int length){
        StringBuffer buffer = new StringBuffer();
        Random random = new Random();
        for (int i = 0; i <length ; i++) {
            int index = random.nextInt(list.size());
            String str = list.get(index);
            buffer.append(str);
        }return new String(buffer);
    }
%>
<%
    String grade = request.getParameter("grade");
    if (grade==null){
        grade  = (String)session.getAttribute("grade");

    }
    int number = Integer.parseInt(grade);
    session.setAttribute("grade",grade);
    String testString=null;
    String yesORNo=null;
    yesORNo=(String) session.getAttribute(yesORNo);
    if (yesORNo==null){
        testString=getNextTestString(number);
        session.setAttribute("yesORNo","yes");
        session.setAttribute("testString",testString);

    }else if (yesORNo.equals("yes")){
        response.sendRedirect("answer.jsp");
        return;
    }
    else if (yesORNo.equals("no")){
        testString=getNextTestString(number);
        session.setAttribute("yesORNo","yes");
        session.setAttribute("testString",testString);
    }
%>
<p id="textStyle">5秒记住您看到的字符序列:<br>
    <%=testString%>
    <br>5秒后,将转到答题页
    <%
    response.setHeader("refresh","5");
    %>
</p>
</body>
</html>

choiceGrade.jsp


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body bgcolor="orange">
<style>
    #textStyle{
        font-family: 宋体;font-size: 26px;color: plum;
    }
</style>
<form action="giveTest.jsp" id="textStyle" method="post" name="form">
    <input type="radio" name="grade" value="5"/> 初级
    <input type="radio" name="grade" value="7" checked="ok"/> 中级
    <input type="radio" name="grade" value="10"/> 高级
    <br>
    <input type="submit" name="submit"  id="textStyle" value="提交"/>
    <input type="reset" id="textStyle" value="重置"/>
</form>
</body>
</html>

answerTest.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body bgcolor="orange">
<style>
    #textStyle{
        font-family: 宋体;font-size: 26px;color: plum;
    }
</style>
<form>
    <%
        int n = Integer.parseInt((String) session.getAttribute("grade"));
        session.setAttribute("yesORNo","no");
        for (int i = 0; i <n ; i++) {
            out.print("<br>第"+i+"个字符");
            out.print(
                    "<input type=radio name=R"+i+"value='W'/>W"+
                    "<input type=radio name=R"+i+"value='Y'/>Y"+
                    "<input type=radio name=R"+i+"value='S'/>S"+
                    "<input type=radio name=R"+i+"value='Z'/>Z"+
                    "<input type=radio name=R"+i+"value='L'/>L"
            );
        }
    %>
    <br>
    <input type="submit" name="submit" id="textStyle" value="提交"/>
    <input type="reset"id="textStyle" value="重置"/>
</form>
</body>
</html>

judgeAnswer.jsp

<%@ page import="com.sun.org.apache.xpath.internal.operations.String" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body bgcolor="white">
<p style="font-family: 宋体;font-size: 26px ;color:plum" >
    <%
        session.setAttribute("yesORNo","no");
        request.setCharacterEncoding("utf-8");
        int n=Integer.parseInt((String)session.getAttribute("grade"));
        StringBuffer buffer = new StringBuffer();
        for (int i = 0; i <n ; i++) {
            buffer.append(request.getParameter("R"+i));
            out.print(""+request.getParameter("R"+i));
        }
        String userAnswer = new String(buffer);
         String testString = (String)session.getAttribute("testString");
         if (testString.equals(userAnswer)){
             out.print("您的记忆真不错");
         }else {
             out.print("您没有记忆住,答案是:<br>"+testString);
         }

    %>
    <br><a href="giveTest.jsp">返回,继续记忆</a>
    <br><a href="choiceGrade.jsp">返回,继续记忆</a>
</p>
</body>
</html>

6、双色球福利彩票

(1)编写buyLottery.jsp,用户在该页面输入双色球彩票的6个红球和一个蓝球的号码,代表用户购买的彩票,然后单击form表单的提交键,请求名字是lottery的servlet。
(2)编写创建servlet的Servlet类,该类创建的servlet可以判断用户的中奖情况。
(3)部署servlet。
(4)运行buyLottery.jsp页面
BuyLottery.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<style>
    #red{
        font-family: 宋体;font-size: 26px;color: red;
    }
</style>
<style>
    #blue{
        font-family: 宋体;font-size: 26px;color: deepskyblue;
    }
</style>
<html>
<head>
    <title>Title</title>
</head>
<body bgcolor="aqua">
<form action="lottery" method="post">
    <br>输入6个红球号码(1-33)逗号或非数字字符分隔:<br>
    <textarea name="digitRedball" id=red rows=1 cols=30></textarea>
    <br>输入1个蓝球号码(1-16):<br>
    <input type="text" name="digitBlueball"  maxlength=2 size=2/>
    <input type=submit  value="提交"/>
</form>

</body>
</html>

Lottery_Servlet.java

public class Lottery_Servlet extends HttpServlet {
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
    }
    public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("Text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        out.println("<html><body bgcolor=cyan>");
        String digitRedball = request.getParameter("digitRedball");
        String digitBlueball = request.getParameter("digitBlueball");
        if (digitRedball.length()==0||digitBlueball.length()==0) {
            response.sendRedirect("/buyLottery.jsp");
            return;
        }
        //用户买的全部红、蓝球号码
        HashSet<Integer> userRedball=getUserDigit(digitRedball);
        HashSet<Integer> userBlueball=getUserDigit(digitBlueball);
        if (userRedball.size()!=6||userBlueball.size()!=1) {
            response.sendRedirect("/buyLottery.jsp");
            return;
        }
        HashSet<Integer> drawLotteryRedBall=dawLottery(6,33);
        HashSet<Integer> drawLotteryBlueBall=dawLottery(1,16);
        out.print("<h1>摇奖出的红球br>"+drawLotteryRedBall.toString()+"<br>");
        out.print("摇奖出的蓝球"+drawLotteryBlueBall.toString()+"</h1>");
        out.print("摇奖出的蓝球"+drawLotteryBlueBall.toString()+"</h1>");
        drawLotteryRedBall.removeAll(userRedball);//摇奖红球去除用户红球
        drawLotteryBlueBall.removeAll(userBlueball);//去除用户蓝球
        int leftRedball=drawLotteryRedBall.size();//剩余红球数量
        int leftBlueball=drawLotteryBlueBall.size();//剩余蓝球数量
        if(leftRedball==0&&leftBlueball==0) {
            out.println("<h1>头奖</h1>");
        }
        else if(leftRedball==0&&leftBlueball==1) {
            out.println("<h1>二等奖</h1>");
        }
        else if(leftRedball==1&&leftBlueball==0) {
            out.println("<h1>三等奖</h1>");
        }
        else {
            out.println("<h1>没中奖</h1>");
        }
        out.print("<h1>用户买的红球<br>"+userRedball.toString()+"<br>");
        out.print("用户买的蓝球"+userBlueball.toString()+"</h1>");
    }

    public HashSet<Integer> getUserDigit(String input){
        HashSet<Integer> set = new HashSet<>();
        Pattern pattern;
        Matcher matcher;
        String regex="[0-9][0-9]*";//匹配正整数的正则表达式
        pattern=Pattern.compile(regex);
        matcher  = pattern.matcher(input);
        double sum=0;
        while (matcher.find()) {
            String str = matcher.group();
            set.add(Integer.parseInt(str));//用户买的彩票放入集合

        }
        return set;
    }
    public HashSet<Integer> dawLottery(int count,int allNumber){
        LinkedList<Integer> saveNumber = new LinkedList<Integer>();
        HashSet<Integer> set = new HashSet<>();
        for (int i = 1; i <=allNumber ; i++) {//1-allNumber球号
            saveNumber.add(i);
        }
        Random random = new Random();
        while (count>0) {
            int index = random.nextInt(saveNumber.size());
            Integer number = saveNumber.remove(index);//抽取一个球不放回
            count--;
            set.add(number);//开奖号码放入集合
        }
        return set;
    }

}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <servlet>
        <servlet-name>lottery</servlet-name>
        <servlet-class>com.exercise.demo1.Lottery_Servlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>lottery</servlet-name>
        <url-pattern>/lottery</url-pattern>
    </servlet-mapping>

</web-app>

7.查询成绩

(1)启动数据库服务器,创建exercise数据库,创建表scoreReport,此表的列及意义如下:
id(char):存放学号,主键
name(char):存放姓名
mathScore(int):存放数学成绩
englishScore(int):存放英语成绩
(2)向数据表中输入数据。
(3)编写两个JSP页面inputNumber.jsp和queryShow.jsp。inputNumber.jsp页面提供1个form表单,该表单提供用户输入要查询的学生的学号或姓名,然后单击名字是“按学号查询”或“按姓名查询”提交键,请求queryShow.jsp页面,queryNumber.jsp负责连接数据库,查询学生的成绩并显示查询结果,其中按姓名查询是模糊查询,按学号查询是精准查询。

在这里插入图片描述

queryShow.jsp


<%@ page import="java.sql.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<style>
    #tom{
        font-family: 宋体;font-size: 20px;color: black;
    }
</style>
<html><body bgcolor="beige">
<div>

    <%   //获取提交的属性值
        request.setCharacterEncoding("utf-8");
        String mess=request.getParameter("mess");
        mess=mess.trim();
        String submit=request.getParameter("submit");
        if(mess.length()==0){
            response.sendRedirect("inputNumber.jsp");
            return;
        }
        //连接数据库
        Connection con=null;
        Statement sql;
        ResultSet rs;
        try{
            //加载jabc-mysql 8.0 连接器
            Class.forName("com.mysql.cj.jdbc.Driver");
        }
        //返回连接异常信息
        catch(Exception e){
            out.print("<p id=tom>"+e);
        }
        String url="jdbc:mysql://localhost:3306/exercise?"+
                "useSSL=false&serverTimezone=CST&characterEncoding=utf-8";
        String user="root";
        String password="root";
        out.print("<table border=1>");
        out.print("<tr>");
        out.print("<th id=tom width=100>"+"学号"+"</th>");
        out.print("<th id=tom width=100>"+"姓名"+"</th>");
        out.print("<th id=tom width=100>"+"数学成绩"+"</th>");
        out.print("<th id=tom width=100>"+"英语成绩"+"</th>");
        out.print("</tr>");
        //连接数据库
        try{con = DriverManager.getConnection(url,user,password);
            sql=con.createStatement();
            String SQL=null;
            if(submit.contains("姓名")){
                SQL="SELECT * FROM scorereport WHERE name like '%"+mess+"%'";
            }
            else if(submit.contains("学号")){
                SQL="SELECT * FROM scorereport WHERE id='"+mess+"'";
            }
            rs=sql.executeQuery(SQL);
            while(rs.next()){
                out.print("<tr>");
                out.print("<td id=tom>"+rs.getString(1)+"</td>");
                out.print("<td id=tom>"+rs.getString(2)+"</td>");
                out.print("<td id=tom>"+rs.getInt(3)+"</td>");
                out.print("<td id=tom>"+rs.getInt(4)+"</td>");
                out.print("</tr>");
            }
            out.print("</table>");
            con.close();
        }
        catch(SQLException e){
            out.print("<h3>"+e+"</h3>");
        }
    %>

</div>
</body></html>

inputNumber.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<style>
    #tom{
        font-family: 宋体;font-size: 28px;color: black;
    }
</style>
<html>
<head>
    <title>Title</title>
</head>
<body bgcolor="#da70d6">
<form action="queryShow.jsp"  method="post">
    请输入学号或姓名查询成绩:<br>
    <input type="text"  name="mess"/><br>
    <input type="submit" name="submit" value="按照姓名查询"/>
    <input type="submit"  name="submit" value="按照学号查询"/>
</form>

</body>
</html>

  • 7
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
JSP100选择题 适合考前练习 1 J2EE 中,()类的()方法用于创建对话。(选择一项) a) HttpServletRequest、getSession b) HttpServletResponse、newSession c) HtttpSession、newInstance d) HttpSession、getSession 2 给定一个 Servlet 的doGet方法中的代码片段,如下: request.setAttribute(“name”,”zhang”); response.sendRedirect(“http://localhost:8080/servlet/MyServlt”); 那么在 MyServlet 中可以使用()方法把属性 name的值取出来。(选择一项) a) String str=request.getAttribute(“name”); b) String str=(String)request.getAttribute(“name”); c) Object str=request.getAttribute(“name”); d) 无法取出来 3.在Servlet里,能实现重定向的方法有()。(选择两项) A.运用javax.servlet.http.HttpServletRequest接口的sendRedirect方法 B.运用javax.servlet.http.HttpServletResponse接口的sendRedirect方法 C.运用javax.servlet.RequestDispatcher接口的forward方法 D.运用javax.servlet.ResponseDispatcher接口的forward方法 4.利用MyEclipse开发Servlet,下列说法正确的是( )。(只选两项) A. MyEclipse可自动产生web.xml B. MyEclipse不能自动产生web.xml,需要手工编写 C.可利用MyEclipse自带的Tomcat作为Servlet容器 D. MyEclipse没有自带Tomcat,需要自己安装配置。 5.编写Servlet 的doPost方法时,需要抛出异常为()。(只选一项) A.ServletException, IOException B.ServletException, RemoteException C.HttpServletException, IOException D.HttpServletException, RemoteException 6.有关会话跟踪技术描述正确的是()。(选择三项) A.Cookie是Web服务器发送给客户端的一小段信息,客户端请求时,可以读取该信息发送到服务器端 B.关闭浏览器意味着会话ID丢失,但所有与原会话关联的会话数据仍保留在服务器上,直至会话过期 C.在禁用Cookie时可以使用URL重写技术跟踪会话 D.隐藏表单域将字段添加到HTML表单并在客户端浏览器中显示 …………
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

只会写bug的菜鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值