IDEA使用Maven搭建SSM项目

        IDEA楼主也是刚使用没几天,用起来确实比MyEclipse或者Eclipse方便,代码提示功能真的有可以“飞上天”的感觉(偷笑),强烈建议开发人员使用,无论使用什么开发工具都会有个过渡期,刚开始的两三天肯定会不舒服,一回生二回熟,当你习惯IDEA以后,你会爱不释手,(绝壁顺手*****五颗星推荐),好了,多余的话我们就不多说了,高质量的代码并非由工具来决定的。进入今天的正题:

        IDEA使用Maven搭建SSM项目(MyEclipse建立ssm框架Demo可点击这里:点我呀

一、 IDEA的激活:这里给大家一个网址:http://idea.iteblog.com/

            这里提供了两种方式激活:

  1. 按要求输入就行,(这种方式激活后,有一定的时间限制,但是后面开发时有网无网都可以使用)
  2. 输入“http://idea.iteblog.com/key.php” (此种方式也可以激活,据说只有在网时才能使用)

二、maven的安装,csdn上有很多教程,这里就不再陈述了,有一点需要说明的是:使用maven时,oracle由于版权问题,无法在pom.xml中下载驱动包,这个就要手动安装oracle驱动包到本地maven仓库中了,具体方法也可以去http://blog.csdn.net/sutongxuevip/article/details/54574156 查看,安装完成后我们就可以愉快地使用oracle数据库了

三、Demo开始,跟往常一样,我们还是分步骤:


  • File--》Project



  • 更改空间名称

  • Cancel

  • 关闭后选择  this window ==》File ==>settings ==》 maven


  • Apply==>OK==>File ==> New ==> Module








既然建立ssm框架,我们要明确ssm框架所需jar

junit-4.8.2.jar  
mybatis-3.4.1.jar  
mybatis-spring-1.3.0.jar  
ojdbc14.jar  
spring-aop-4.3.5.RELEASE.jar  
spring-aspects-4.3.5.RELEASE.jar  
spring-beans-4.3.5.RELEASE.jar  
spring-context-4.3.5.RELEASE.jar  
spring-context-support-4.3.5.RELEASE.jar  
spring-core-4.3.5.RELEASE.jar  
spring-expression-4.3.5.RELEASE.jar  
spring-jdbc-4.3.5.RELEASE.jar  
spring-tx-4.3.5.RELEASE.jar  
spring-web-4.3.5.RELEASE.jar  
spring-webmvc-4.3.5.RELEASE.jar 
这里列举的只是所必需要有的jar,还有其它。。。
  • 修改pom.xml文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.ssm</groupId>
  <artifactId>Demo</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>Demo Maven Webapp</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

    <!-- spring版本号 -->
    <spring.version>4.3.5.RELEASE</spring.version>

    <!-- mybatis版本号 -->
    <mybatis.version>3.2.8</mybatis.version>

  </properties>

  <dependencies>
    <!-- springmvc所需jar -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-expression</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <!-- mybatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>${mybatis.version}</version>
    </dependency>
    <!-- mybatis-spring所需jar -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.0</version>
    </dependency>

    <!-- log4j -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.18</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.18</version>
    </dependency>

    <!-- json -->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.8.0</version>
    </dependency>
    <dependency>
      <groupId>org.codehaus.jackson</groupId>
      <artifactId>jackson-mapper-asl</artifactId>
      <version>1.9.13</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.8.0</version>
    </dependency>

    <!-- 上传组件 -->
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.1</version>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
    </dependency>
    <dependency>
      <groupId>commons-codec</groupId>
      <artifactId>commons-codec</artifactId>
      <version>1.9</version>
    </dependency>

    <!-- jstl标签 -->
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    <!-- jsp-api -->
    <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>javax.servlet.jsp-api</artifactId>
      <version>2.3.2-b02</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.0-b01</version>
    </dependency>

    <!-- junit测试 -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <!-- oracle 数据库添加 -->
    <dependency>
      <groupId>com.oracle</groupId>
      <artifactId>ojdbc14</artifactId>
      <version>11.1.0.6.0</version>
    </dependency>
  </dependencies>

  <build>
    <finalName>Demo</finalName>
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
      </resource>
    </resources>
  </build>
</project>
这里我们使用的是oracle数据库,IDEA默认是不支持oracle数据库的。需要手动添加oracle驱动到本地的maven仓库中。(详情可查看: http://blog.csdn.net/sutongxuevip/article/details/54574156

如果pom.xml里面的参数不知道该怎么去写,我们可以去 http://mvnrepository.com/
输入所需要的jar就可以查看该参数了例如:spring-aop.jar




  • src--main--》java--》新建包


  • resources中编写applicationContext.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
	   xmlns:context="http://www.springframework.org/schema/context"
	   xmlns:mvc="http://www.springframework.org/schema/mvc"
	   xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context-3.1.xsd
                        http://www.springframework.org/schema/mvc
                        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

	
	<!-- 配置DataSource数据源 -->
	<bean id="dataSource" class=" org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
		<property name="url" value="jdbc:oracle:thin:@192.168.6.25:1521:orcl"/>
		<property name="username" value="scott"/>
		<property name="password" value="tiger"/>

	</bean>

	<!--配置工厂, 创建SqlSessionFactory,同时指定数据源 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"/>
		<!-- 自动扫描mapping.xml文件 -->
		<property name="mapperLocations" value="classpath*:com/ssm/entity/EmpMapper.xml"></property>
	</bean>

	<!-- 配置MapperScannerConfigurer  -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<!-- DAO接口所在地包,spring会自动查找 -->
		<property name="basePackage" value="com.ssm.dao"></property>
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
	</bean>

	<!-- 开启注解扫描 -->
	<context:component-scan base-package="com.ssm"/>

	<!-- 开启RequestMapping 注解 -->
	<mvc:annotation-driven />


	<!-- 处理请求转发 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/emp/"/>
		<property name="suffix" value=".jsp"/>
	</bean>

</beans>
我们只是做个简单的Demo,这里的配置并没有写完整,只写了所必须的
  • 在resources下编辑log4j.properties文件
#\u5B9A\u4E49LOG\u8F93\u51FA\u7EA7\u522B
log4j.rootLogger = info ,stdout,D

log4j.logger.com.wisemedia = info

### \u8f93\u51fa\u5230\u63a7\u5236\u53f0 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern =  %d{ABSOLUTE} %5p %c{1}:%L - %m%n
 
### \u8f93\u51fa\u5230\u65e5\u5fd7\u6587\u4ef6 ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = D:/logs/log.log
log4j.appender.D.Append = true

## \u8f93\u51faDEBUG\u7ea7\u522b\u4ee5\u4e0a\u7684\u65e5\u5fd7
log4j.appender.D.Threshold = info 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
 

#mybatis\u663e\u793aSQL\u8bed\u53e5\u65e5\u5fd7\u914d\u7f6e  
log4j.logger.java.sql=debug,sqlLog
log4j.appender.sqlLog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.sqlLog.File=D:/logs/sqlLog.log
log4j.appender.sqlLog.layout=org.apache.log4j.PatternLayout
log4j.appender.sqlLog.layout.ConversionPattern=%d %p %m%n

这里的日志不是输出在控制台的,是在D盘下的logs文件下,需要手动创建该文件夹
  • 编写web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
						http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">
    <display-name></display-name>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <servlet>
        <servlet-name>SpringMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath*:applicationContext.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>SpringMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>


  • 编辑实体类
Emp实体类
package com.ssm.dao;

import java.util.Date;

/**
 * Created by LiangYafeng on 2017.01.16.
 */
public class Emp {
    private Integer empno;
    private String ename;
    private String job;
    private Integer mgr;
    private Date hiredate;
    private Double sal;
    private Double comm;
    private Integer deptno;

    public Integer getEmpno() {
        return empno;
    }

    public void setEmpno(Integer empno) {
        this.empno = empno;
    }

    public String getEname() {
        return ename;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }

    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }

    public Integer getMgr() {
        return mgr;
    }

    public void setMgr(Integer mgr) {
        this.mgr = mgr;
    }

    public Date getHiredate() {
        return hiredate;
    }

    public void setHiredate(Date hiredate) {
        this.hiredate = hiredate;
    }

    public Double getSal() {
        return sal;
    }

    public void setSal(Double sal) {
        this.sal = sal;
    }

    public Double getComm() {
        return comm;
    }

    public void setComm(Double comm) {
        this.comm = comm;
    }

    public Integer getDeptno() {
        return deptno;
    }

    public void setDeptno(Integer deptno) {
        this.deptno = deptno;
    }
}

 
  
  • Condition实体类
package com.ssm.entity;

import java.util.List;

/**
 * Created by LiangYafeng on 2017.01.16.
 */
public class Condition {
    private Integer deptno;
    private Double salary;
    private List<Integer> empnos;

    public Integer getDeptno() {
        return deptno;
    }

    public void setDeptno(Integer deptno) {
        this.deptno = deptno;
    }

    public Double getSalary() {
        return salary;
    }

    public void setSalary(Double salary) {
        this.salary = salary;
    }

    public List<Integer> getEmpnos() {
        return empnos;
    }

    public void setEmpnos(List<Integer> empnos) {
        this.empnos = empnos;
    }
}


 
  
  • EmpMapper.xml文件
 
   
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >

<mapper namespace="com.ssm.dao.EmpDao">


    <select id="findAll" resultType="com.ssm.entity.Emp">
        select * from t_emp order by empno
    </select>


    <insert id="save" parameterType="com.ssm.entity.Emp">
        insert into t_emp values(
        emp_seq.nextval,
        #{ename,jdbcType=VARCHAR},
        #{job,jdbcType=VARCHAR},
        #{mgr,jdbcType=NUMERIC},
        #{hiredate,jdbcType=DATE},
        #{sal,jdbcType=NUMERIC},
        #{comm,jdbcType=NUMERIC},
        #{deptno,jdbcType=NUMERIC}
        )
    </insert>


    <select id="findById" parameterType="java.lang.Integer" resultType="com.ssm.entity.Emp">
        select * from t_emp where empno=#{id}
    </select>


    <update id="update" parameterType="com.ssm.entity.Emp">
        update t_emp set
        ename = #{ename,jdbcType=VARCHAR},
        job = #{job,jdbcType=VARCHAR},
        sal = #{sal,jdbcType=NUMERIC}
        where empno=#{empno,jdbcType=NUMERIC}
    </update>



    <delete id="delete" parameterType="java.lang.Integer">
        delete from t_emp where empno=#{id}
    </delete>


</mapper>


 
 
 
 
 
 
 
 
 
 
  • 编写EmpDao接口
 
 

package com.ssm.dao;

import com.ssm.entity.Emp;

import java.util.List;

/**
 * Created by LiangYafeng on 2017.01.16.
 */
public interface EmpDao {

    public List<Emp> findAll();        // 查询全部

    public void save(Emp emp);            // 添加

    public Emp findById(int id);        // 按id查询

    public void update(Emp emp);        // 更新

    public void delete(int id);            // 删除
}

  • 编写Controller类
package com.ssm.controller;

import com.ssm.dao.EmpDao;
import com.ssm.entity.Emp;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.annotation.Resource;
import java.util.List;

/**
 * Created by LiangYafeng on 2017.01.16.
 */
@Controller
public class EmpController {
    @Resource
    private EmpDao empDao;
    public void setEmpDao(EmpDao empDao) {
        this.empDao = empDao;
    }

    @RequestMapping("/find.do")
    public String find(Model model) {
        List<Emp> list = empDao.findAll();
        model.addAttribute("emps", list);
        return "emp_list";
    }

    /*
     * 打开新页面
     */
    @RequestMapping("/toAddEmp.do")
    public String toAdd(){

        return "add_emp";
    }
    /*
     * 新增保存
     */
    @RequestMapping("/addEmp.do")
    public String add(Emp emp){
        empDao.save(emp);
        return "redirect:find.do";
    }

    /*
     * 打开修改页面
     */
    @RequestMapping("/toUpdateEmp.do")
    public String toUpdate(@RequestParam("id") int id, Model model){
        Emp emp =empDao.findById(id);
        model.addAttribute("emp",emp);
        return "update_emp";
    }

    /*
     * 修改保存
     */
    @RequestMapping("/updateEmp.do")
    public String update(Emp emp){
        empDao.update(emp);
        return "redirect:find.do";
    }

    /*
     * 删除
     */
    @RequestMapping("/deleteEmp.do")
    public String delete(@RequestParam("id") int id){
        empDao.delete(id);
        return "redirect:find.do";
    }

}

  • 在WEB-INF下建立emp文件夹编辑jsp页面
  • emp_list.jsp
<%--
  Created by IntelliJ IDEA.
  User: LiangYafeng
  Date: 2017.01.16
  Time: 17:27
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>emp_list.jsp</title>
    <script type="text/javascript">
        function delete_emp(id){
            var str = window.confirm("are you sure ?");

            if(str){
                location.href="deleteEmp.do?id="+id;
            }
        }
    </script>
</head>
<body>
<div align="center">
    <input type="button" value="新增" οnclick="location.href='toAddEmp.do'" >
</div>
<table width="80%" border="1" cellpadding="2" cellspacing="0" align="center">
    <tr>
        <th>EMPNO</th>
        <th>ENAME</th>
        <th>JOB</th>
        <th>MGR</th>
        <th>HIREDATE</th>
        <th>SAL</th>
        <th>COMM</th>
        <th>DEPTNO</th>
    </tr>
    <c:forEach items="${emps}" var="emp">
        <tr>
            <td>${emp.empno}</td>
            <td>${emp.ename}</td>
            <td>${emp.job}</td>
            <td>${emp.mgr}</td>
            <td>${emp.hiredate}</td>
            <td>${emp.sal}</td>
            <td>${emp.comm}</td>
            <td>${emp.deptno}</td>
            <td>
                <input type="button" value="修改" οnclick="location.href='toUpdateEmp.do?id=${emp.empno}'" />
                <input type="button" value="删除" οnclick="delete_emp(${emp.empno});" />
            </td>
        </tr>
    </c:forEach>
</table>
</body>

</html>
  • emp_add.jsp
<%--
  Created by IntelliJ IDEA.
  User: LiangYafeng
  Date: 2017.01.16
  Time: 17:29
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>add_emp.jsp</title>
</head>
<body>
<form action="addEmp.do" method="post">
    <table width="40%" border="1" cellpadding="2" cellspacing="0" align="center" >
        <tr>
            <td>姓名</td>
            <td><input type="text" name="ename" /></td>
        </tr>
        <tr>
            <td>岗位</td>
            <td><input type="text" name="job" /></td>
        </tr>
        <tr>
            <td>工资</td>
            <td><input type="text" name="sal" /></td>
        </tr>
        <tr>
            <td colspan="2"><input type="submit" value="保存" /></td>
        </tr>
    </table>
</form>
</body>
</html>
  • emp_update.jsp
<%--
  Created by IntelliJ IDEA.
  User: LiangYafeng
  Date: 2017.01.16
  Time: 17:30
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="updateEmp.do" method="post">
    <table width="40%" align="center" border="1" cellpadding="2" cellspacing="0" >
        <tr>
            <td>EMPNO:</td>
            <td><input type="text" name="empno" value="${emp.empno }" > </td>
        </tr>
        <tr>
            <td>姓名:</td>
            <td><input type="text" name="ename" value="${emp.ename }" > </td>
        </tr>
        <tr>
            <td>岗位:</td>
            <td><input type="text" name="job" value="${emp.job }" > </td>
        </tr>
        <tr>
            <td>工资:</td>
            <td><input type="text" name="sal" value="${emp.sal }" > </td>
        </tr>
        <tr>
            <td> <input type="submit" value="保存" > </td>
        </tr>
    </table>
</form>
</body>
</html>

  • 配置Toncat

  • 访问页面 http://localhost:8080/ssm/find.do





  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值