简介:本资源是一套完整的高校机房管理系统毕业设计/期末项目实战方案,面向Java初学者与计算机专业本科生,解决机房设备登记、实验室预约、维修报修、用户权限管理等典型校园信息化场景需求。压缩包共450个文件,涵盖62个Java业务类、32个JSP前端页面、64个Jar依赖库、102个JS交互脚本及37个PNG界面图标,辅以CSS样式、XML配置与Properties参数文件,完整支撑JSP+MySQL技术栈的本地快速部署;整体体积达574.28MB,所有运行环境(含Tomcat、MySQL安装包及配置说明)与交付文档(设计说明书、文献综述、运行说明书、Word作业稿)均已集成。目前已有1339人学习下载,开箱即用——无需额外配置,按说明书操作即可启动系统,源码结构清晰、模块职责分明(如EquipmentAction、LaboratoryAction、RepairLogAction等对应核心功能),命名规范、注释完整,稍作修改即可直接提交课程作业。
1. 高校机房管理系统(JSP+MySQL):不是“有手就能运行”的玄学,而是能闭环交付的JavaWeb最小可行工程
你手头正赶着期末作业 deadline,老师要求交一个“可运行、有文档、能演示”的机房管理系统——不是 Demo,是真能录入学生上机记录、查设备状态、管教师排课、导出使用报表的系统。网上搜“高校机房管理系统 JSP MySQL”,一堆压缩包标着“附设计说明书+源码+文献综述+运行说明书+所需软件”,但解压后要么 Tomcat 启动报ClassNotFoundException: com.mysql.cj.jdbc.Driver,要么登录页空白不跳转,要么 MySQL 连不上提示Access denied for user 'root'@'localhost'……最后发现所谓“有手就能运行”,其实是“有手+懂 JDBC 驱动版本+会改 context.xml+能修 web.xml servlet 映射+会配 MySQL 8.0 默认认证插件”的委婉说法。这篇笔记不讲理论套话,只拆解:这个系统到底由哪几块硬骨头组成、每块怎么亲手焊牢、哪些坑我踩过三次以上、以及为什么现在还值得用 JSP+MySQL 做这类教学级系统——它不是过时技术,而是 JavaWeb 工程能力的实体化沙盘。
2. 搭建底层骨架:JDK+Tomcat+MySQL 三件套的版本协同与初始化配置
高校机房管理系统本质是传统 JavaWeb MVC 架构的典型落地:JSP 负责视图层渲染,Servlet 处理请求分发与业务逻辑,DAO 层通过 JDBC 连接 MySQL 完成数据持久化。整个系统能否跑通,第一道门槛就是 JDK、Tomcat、MySQL 三者版本必须咬合。常见翻车点不是“装不上”,而是“装上了但连不上”——比如 JDK 17 + Tomcat 10 + MySQL 8.0 组合下,mysql-connector-java-8.0.33.jar无法加载,因为 Tomcat 10 默认启用 Jakarta EE 9 规范,而旧版 JDBC 驱动包名仍是javax.*,需升级为mysql-connector-j-8.3.0.jar并手动替换WEB-INF/lib/下的驱动包。
2.1 JDK 8u291 与 Tomcat 9.0.87 的黄金组合(教学场景实测最稳)
提示:不要用 JDK 17 或更高版本跑这个系统。JSP 编译依赖
javax.servlet.jsp.JspFactory,而 JDK 17+ 移除了java.xml.bind模块,会导致org.apache.jasper.JasperException: Unable to compile class for JSP。教学环境建议锁定 JDK 8u291(LTS),对应 Tomcat 9.0.87(非 10.x),二者在 Windows 10 和 Ubuntu 20.04 上均验证通过。
安装步骤(Windows 为例):
# 1. 下载并解压 JDK 8u291(官网已归档,可从 Oracle Legacy Archive 获取) # 2. 设置 JAVA_HOME=C:\Program Files\Java\jdk1.8.0_291,并将 %JAVA_HOME%\bin 加入 PATH # 3. 下载 apache-tomcat-9.0.87-windows-x64.zip,解压到 D:\tomcat9 # 4. 修改 D:\tomcat9\bin\setenv.bat(若不存在则新建),添加: set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_291 set JRE_HOME=%JAVA_HOME%\jre验证是否生效:
D:\tomcat9\bin> startup.bat # 成功启动后访问 http://localhost:8080,应看到 Tomcat 欢迎页 # 注意:若页面空白或 404,请检查 logs/catalina.out 中是否有 "SEVERE: Failed to initialize connector" 类错误2.2 MySQL 5.7.44 安装与 root 权限重置(绕过 mysql_native_password 认证陷阱)
高校系统多基于 MySQL 5.7 开发,因其默认认证插件为mysql_native_password,而 MySQL 8.0+ 默认改为caching_sha2_password,JSP 项目中若未显式指定useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true,连接必然失败。因此推荐直接使用 MySQL 5.7.44(官方最后一个 5.7.x LTS 版本)。
安装关键操作(Windows MSI 安装器):
- 在 “Authentication Method” 页面,务必选择 “Use Legacy Authentication Method (Retain MySQL 5.x Compatibility)”
- 设置 root 密码时,记牢该密码(后续
db.properties中要用) - 安装完成后,以管理员身份运行 CMD,执行:
-- 登录 MySQL(默认端口 3306) mysql -u root -p -- 创建机房管理专用数据库(避免污染 default schema) CREATE DATABASE IF NOT EXISTS computer_lab CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 创建应用专用用户(比直接用 root 更安全,教学环境也需养成习惯) CREATE USER 'labuser'@'localhost' IDENTIFIED BY 'Lab@2024'; GRANT ALL PRIVILEGES ON computer_lab.* TO 'labuser'@'localhost'; FLUSH PRIVILEGES;参数说明:
utf8mb4是 MySQL 5.5.3+ 推荐字符集,支持 emoji 和四字节 UTF-8 字符;COLLATE utf8mb4_unicode_ci提供更准确的中文排序与比较;labuser用户权限限定在computer_lab库内,符合最小权限原则。
3. 部署核心代码:从源码结构到 web.xml 与 JDBC 配置的逐层缝合
拿到“高校机房管理系统”压缩包后,典型目录结构如下:
computer-lab-system/ ├── WebContent/ # JSP 页面、CSS、JS、图片资源 │ ├── index.jsp │ ├── login.jsp │ ├── admin/ │ └── student/ ├── WEB-INF/ │ ├── web.xml # Servlet 注册与欢迎页配置 │ ├── classes/ # 编译后的 .class 文件(含 DAO、Servlet、Bean) │ └── lib/ # mysql-connector-java-5.1.47.jar 等依赖 ├── src/ # Java 源码(部分项目会提供) ├── db/ # SQL 初始化脚本(如 create_table.sql) └── doc/ # 设计说明书、运行说明书等文档3.1 web.xml 中的三大命脉配置:欢迎文件、Servlet 映射、上下文参数
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"> <!-- 1. 欢迎文件列表:确保访问 http://localhost:8080/ 自动跳转到 login.jsp --> <welcome-file-list> <welcome-file>login.jsp</welcome-file> </welcome-file-list> <!-- 2. Servlet 注册:LoginServlet 是登录入口,必须显式声明 --> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>com.lab.servlet.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> <!-- 3. 上下文初始化参数:数据库连接信息不应硬编码在 Java 中 --> <context-param> <param-name>driverClass</param-name> <param-value>com.mysql.jdbc.Driver</param-value> </context-param> <context-param> <param-name>jdbcUrl</param-name> <param-value>jdbc:mysql://localhost:3306/computer_lab?useUnicode=true&characterEncoding=UTF-8</param-value> </context-param> <context-param> <param-name>username</param-name> <param-value>labuser</param-value> </context-param> <context-param> <param-name>password</param-name> <param-value>Lab@2024</param-value> </context-param> </web-app>逻辑说明:
<welcome-file>决定根路径行为;<servlet-mapping>将/login请求路由给LoginServlet类;<context-param>使 Servlet 可通过getServletContext().getInitParameter("jdbcUrl")安全读取数据库配置,避免密码明文写死在 Java 代码里。注意&在 XML 中需转义为&,否则部署时报org.xml.sax.SAXParseException。
3.2 JDBC 连接池的轻量替代:DBUtil 工具类的手动实现与复用
教学项目通常不引入 DBCP 或 Druid,而是用静态工具类封装 Connection 获取与释放。这是理解 JDBC 生命周期的关键一课:
// src/com/lab/util/DBUtil.java package com.lab.util; import javax.naming.Context; import javax.naming.InitialContext; import javax.sql.DataSource; import java.sql.*; public class DBUtil { private static DataSource dataSource; // 静态块:首次调用时初始化数据源(Tomcat context.xml 配置优先) static { try { Context initCtx = new InitialContext(); Context envCtx = (Context) initCtx.lookup("java:comp/env"); dataSource = (DataSource) envCtx.lookup("jdbc/ComputerLabDB"); } catch (Exception e) { // 若 context.xml 未配置,则回退到 DriverManager(教学环境常用) System.err.println("JNDI lookup failed, using DriverManager fallback."); } } // 主连接方法:优先尝试 JNDI,失败则用 DriverManager public static Connection getConnection() throws SQLException { if (dataSource != null) { return dataSource.getConnection(); } else { String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost:3306/computer_lab?useUnicode=true&characterEncoding=UTF-8"; String username = "labuser"; String password = "Lab@2024"; try { Class.forName(driver); return DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException ex) { throw new SQLException("JDBC Driver not found", ex); } } } // 标准化关闭资源(必须按 ResultSet → Statement → Connection 顺序) public static void close(Connection conn, Statement stmt, ResultSet rs) { if (rs != null) try { rs.close(); } catch (SQLException e) {} if (stmt != null) try { stmt.close(); } catch (SQLException e) {} if (conn != null) try { conn.close(); } catch (SQLException e) {} } }参数说明:
useUnicode=true&characterEncoding=UTF-8强制客户端与服务器使用 UTF-8 编码,避免中文乱码;Class.forName(driver)在 JDBC 4.0+ 已非必需,但保留可提升兼容性;close()方法中try-catch忽略关闭异常是标准做法,因资源已不可用,再抛异常无意义。
4. 数据库建模与 SQL 脚本执行:从 ER 图到 create_table.sql 的字段级推演
高校机房管理系统核心实体通常包括:student(学生)、teacher(教师)、computer(设备)、reservation(预约)、usage_log(上机日志)。设计说明书中的 ER 图需转化为可执行的 SQL,且必须考虑教学场景的实用性与扩展性。
4.1 五张核心表的字段设计与约束逻辑(附 create_table.sql)
以下是经教学项目验证的最小完备表结构(MySQL 5.7 语法):
-- 1. 学生表:学号为主键,姓名非空,学院为枚举值(避免外键复杂度) CREATE TABLE student ( stu_id VARCHAR(12) PRIMARY KEY COMMENT '学号,如 20230001', name VARCHAR(20) NOT NULL COMMENT '姓名', college ENUM('计算机学院', '信息学院', '自动化学院') NOT NULL COMMENT '所属学院', major VARCHAR(30) NOT NULL COMMENT '专业', phone VARCHAR(15) COMMENT '手机号', email VARCHAR(50) COMMENT '邮箱', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生基本信息'; -- 2. 教师表:工号为主键,职称用 tinyint 编码(助教=1,讲师=2,副教授=3,教授=4) CREATE TABLE teacher ( tch_id VARCHAR(10) PRIMARY KEY COMMENT '工号,如 T2023001', name VARCHAR(20) NOT NULL, title TINYINT NOT NULL DEFAULT 2 COMMENT '职称:1-助教,2-讲师,3-副教授,4-教授', department VARCHAR(30) NOT NULL COMMENT '所属系部', phone VARCHAR(15), email VARCHAR(50) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 3. 设备表:编号唯一,状态用 tinyint(0-空闲,1-使用中,2-维修中,3-报废) CREATE TABLE computer ( pc_id VARCHAR(10) PRIMARY KEY COMMENT '设备编号,如 PC001', brand VARCHAR(20) NOT NULL COMMENT '品牌', model VARCHAR(30) COMMENT '型号', cpu VARCHAR(50) COMMENT 'CPU', memory VARCHAR(20) COMMENT '内存', disk VARCHAR(30) COMMENT '硬盘', status TINYINT NOT NULL DEFAULT 0 COMMENT '状态:0-空闲,1-使用中,2-维修中,3-报废', location VARCHAR(50) COMMENT '所在机房位置,如 A区-3排-5号', purchased_date DATE COMMENT '采购日期', remark TEXT COMMENT '备注' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 4. 预约表:联合主键 (stu_id, pc_id, reserve_date),确保同一学生同天不重复预约同一台机器 CREATE TABLE reservation ( stu_id VARCHAR(12) NOT NULL, pc_id VARCHAR(10) NOT NULL, reserve_date DATE NOT NULL COMMENT '预约日期', start_time TIME NOT NULL COMMENT '开始时间,如 08:00:00', end_time TIME NOT NULL COMMENT '结束时间,如 10:00:00', status TINYINT NOT NULL DEFAULT 0 COMMENT '状态:0-待确认,1-已确认,2-已取消,3-已过期', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (stu_id, pc_id, reserve_date), FOREIGN KEY (stu_id) REFERENCES student(stu_id) ON DELETE CASCADE, FOREIGN KEY (pc_id) REFERENCES computer(pc_id) ON DELETE RESTRICT ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 5. 上机日志表:记录实际使用情况,含指纹/刷卡 ID(模拟字段) CREATE TABLE usage_log ( log_id BIGINT PRIMARY KEY AUTO_INCREMENT, stu_id VARCHAR(12) NOT NULL, pc_id VARCHAR(10) NOT NULL, login_time DATETIME NOT NULL COMMENT '登录时间', logout_time DATETIME COMMENT '登出时间,为空表示未登出', duration_minutes INT COMMENT '使用时长(分钟),由 login/logout 计算得出', fingerprint_id VARCHAR(32) COMMENT '生物识别ID(教学模拟用)', ip_address VARCHAR(15) COMMENT '登录IP', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (stu_id) REFERENCES student(stu_id) ON DELETE CASCADE, FOREIGN KEY (pc_id) REFERENCES computer(pc_id) ON DELETE RESTRICT ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;字段设计逻辑:
ENUM和TINYINT替代外键关联简单分类,降低教学理解成本;FOREIGN KEY使用ON DELETE CASCADE保证学生删除时其预约自动清除,但对computer表用ON DELETE RESTRICT防止误删设备导致数据断裂;PRIMARY KEY (stu_id, pc_id, reserve_date)是复合主键经典用法,天然去重且索引高效。
4.2 执行 SQL 脚本的三种可靠方式(避开命令行编码陷阱)
教学环境执行create_table.sql最易出错的是中文注释乱码。推荐以下任一方式:
方式一:Navicat Premium 图形化执行(最稳妥)
- 新建连接 → 选择
computer_lab库 → 右键“运行SQL文件” → 选择create_table.sql→ 编码选UTF-8→ 执行
方式二:MySQL 命令行(需指定字符集)
# Windows CMD 中,先切到 MySQL bin 目录 cd C:\Program Files\MySQL\MySQL Server 5.7\bin # 执行时强制指定字符集 mysql -u labuser -p --default-character-set=utf8mb4 computer_lab < D:\project\db\create_table.sql # 输入密码 Lab@2024 后,若无输出即成功方式三:Tomcat 启动时自动建表(适合二次开发)
在ServletContextListener中监听应用启动,检查表是否存在,不存在则执行建表语句(需将 SQL 写入 Java 字符串或 classpath 下.sql文件)。此法适合进阶,此处不展开。
5. 避坑指南:JSP+MySQL 机房系统部署中 5 个血泪高频问题
注意:以下问题均来自真实教学项目现场,非理论推测。每个问题都对应一次重启 Tomcat、三次清浏览器缓存、两次重装 MySQL 的崩溃时刻。
5.1 现象:登录页输入账号密码后,页面卡住不动,Network 面板显示login请求 500 Internal Server Error
原因:LoginServlet中request.getParameter("username")返回null,因 JSP 表单<form>的method属性漏写或写成METHOD="POST"(大小写敏感),而 ServletdoPost()方法未覆盖doGet(),导致 Tomcat 调用HttpServlet.service()默认抛出HttpServletResponse.SC_NOT_IMPLEMENTED。
解决:检查login.jsp中<form action="login" method="post">,确保method全小写;确认LoginServlet继承HttpServlet并重写了doPost()方法;在doPost()开头加System.out.println("Login request received");日志验证是否进入。
5.2 现象:Tomcat 控制台报java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver,但lib/下明明有mysql-connector-java-8.0.33.jar
原因:JDK 8 环境下必须使用mysql-connector-java-5.1.47.jar(针对 MySQL 5.7)或mysql-connector-java-8.0.29.jar(兼容 JDK 8 的 8.0.x 版本),8.0.33+要求 JDK 11+。且 JAR 包名不能含-sources.jar或-javadoc.jar。
解决:删除lib/下所有 MySQL 驱动 JAR,仅保留mysql-connector-java-5.1.47.jar;重启 Tomcat;验证WEB-INF/lib/目录下该 JAR 文件大小约为 3.5MB(非 1KB 的空包)。
5.3 现象:登录成功后跳转到admin/main.jsp,页面显示HTTP Status 404 – Not Found,但文件物理存在
原因:web.xml中<welcome-file-list>未包含main.jsp,且main.jsp未被任何 Servlet 显式转发,Tomcat 默认不处理 JSP 路径的直接访问(安全策略)。
解决:在admin/目录下新建index.jsp,内容为<% response.sendRedirect("main.jsp"); %>;或修改web.xml,添加<welcome-file>main.jsp</welcome-file>到admin/对应的<welcome-file-list>(需配合 Servlet 容器配置)。
5.4 现象:新增学生信息时,中文姓名存入数据库变成??,但数据库和表字符集均为utf8mb4
原因:JDBC URL 缺少characterEncoding=UTF-8参数,或 Tomcatserver.xml中Connector未设置URIEncoding="UTF-8",导致 GET 请求参数解码失败。
解决:检查web.xml中jdbcUrl参数值,确认包含?useUnicode=true&characterEncoding=UTF-8;编辑D:\tomcat9\conf\server.xml,找到<Connector port="8080" ... />,添加属性URIEncoding="UTF-8";重启 Tomcat。
5.5 现象:reservation.jsp中用<c:forEach>遍历预约列表,页面空白无报错
原因:JSTL 标签库未正确引入,web.xml缺少taglib声明,或lib/下缺少jstl-1.2.jar和standard-1.1.2.jar(JSP 2.0+ 需jstl-api-1.2.jar+jstl-impl-1.2.jar)。
解决:下载jstl-1.2.jar(Jakarta EE 8 兼容版),放入WEB-INF/lib/;在reservation.jsp顶部添加<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>;确认web.xml中web-app版本为3.0或4.0(支持taglib自动发现)。
6. 进阶验证与教学交付技巧:用三个真实场景检验系统健壮性
做完以上步骤,系统能跑只是及格线。真正体现工程能力的是:它能否应对教学场景中的典型压力?能否被同学快速接手?能否作为课程设计答辩的扎实底牌?我带过 7 届毕业设计,总结出三个必做验证动作,每个都直击答辩评委最常问的问题。
6.1 场景一:模拟 200 名学生并发预约(用 Apache Bench 做轻量压测)
高校机房常有整班学生同时预约,系统若没做并发控制,会出现同一台电脑被多人抢到。验证方法:
# 安装 ab(Apache Bench),Windows 可从 Apache Lounge 下载 binaries ab -n 200 -c 20 "http://localhost:8080/login?username=20230001&password=123456" # 观察结果中 "Failed requests" 是否为 0,"Requests per second" 是否 > 30 # 若失败率高,检查 reservation 表的 INSERT 是否加了 SELECT FOR UPDATE 锁技巧:在
ReservationDAO.addReservation()方法中,对computer表执行SELECT * FROM computer WHERE pc_id=? FOR UPDATE,再INSERT INTO reservation,可避免超约。这是教学项目中性价比最高的并发方案。
6.2 场景二:生成可演示的假数据(用 Python 脚本批量插入)
答辩时评委常要求“现场演示新增学生、预约、查询”,手动输太慢。我用 Python 写了个 20 行脚本,一键填充测试数据:
# generate_demo_data.py import pymysql import random from datetime import date, timedelta conn = pymysql.connect(host='localhost', user='labuser', password='Lab@2024', database='computer_lab', charset='utf8mb4') cursor = conn.cursor() # 插入 50 名学生 colleges = ['计算机学院', '信息学院', '自动化学院'] for i in range(1, 51): stu_id = f"2023{str(i).zfill(4)}" name = f"学生{i}" college = random.choice(colleges) sql = "INSERT INTO student (stu_id, name, college, major) VALUES (%s, %s, %s, %s)" cursor.execute(sql, (stu_id, name, college, "软件工程")) conn.commit() cursor.close() conn.close() print("50 条学生数据插入完成")执行前确保
pymysql已安装:pip install pymysql;脚本放在项目根目录,运行后刷新数据库即可看到数据。这比手敲 50 次表单快 10 倍,且数据真实可查。
6.3 场景三:制作“一键运行包”(打包 Tomcat+MySQL+项目+启动脚本)
所谓“有手就能运行”,终极形态是双击start_system.bat即启动全部服务。我打包结构如下:
computer-lab-package/ ├── mysql/ # MySQL 5.7.44 portable 版(免安装) ├── tomcat/ # Tomcat 9.0.87(已配好 server.xml 和 context.xml) ├── project/ # WAR 包或 exploded 目录(已含正确 lib 和 web.xml) ├── data/ # 初始化 SQL 脚本和备份 ├── start_system.bat # 启动脚本(先启 MySQL,再启 Tomcat) └── stop_system.bat # 停止脚本(先停 Tomcat,再停 MySQL)start_system.bat核心内容:
@echo off echo 正在启动 MySQL... start /min mysql\bin\mysqld --defaults-file=mysql\my.ini timeout /t 3 /nobreak >nul echo 正在启动 Tomcat... start /min tomcat\bin\startup.bat echo 系统启动完成!请访问 http://localhost:8080 pause关键细节:MySQL portable 版需
my.ini配置basedir和datadir绝对路径;Tomcatconf/context.xml中<Resource>标签已预配 JNDI 数据源;project目录名必须与server.xml中<Context path="/computer-lab">一致。这个包我传给过 32 个同学,0 人反馈启动失败。
最后说句实在的:JSP+MySQL 不是古董,它是把 JavaWeb 底层链路(请求生命周期、JDBC、MVC 分层、HTML 表单交互)一次性串起来的实体教具。你亲手修过web.xml的映射,调通过mysql-connector的版本,填满过reservation表的并发坑,那 Spring Boot 里的@RestController和JdbcTemplate就不再是黑匣子。这些调试日志里的报错、Tomcat 控制台的红色堆栈、MySQL 命令行的Query OK,才是期末答辩时最硬的底气。希望帮到你。
本文还有配套的精品资源,点击获取