简介:这是一份面向 Java Web 初学者、运维人员以及需要维护旧版项目的开发者的 Tomcat 7.0.103 Windows 64 位免安装压缩包,解压后即可获得可运行的 Servlet/JSP 容器,适合搭建本地测试环境、复现历史项目或学习 Tomcat 的目录结构与配置方式。压缩包共 648 个文件,约 10.38MB,包含 html 文档与示例页面、class 与 java 源码、jsp 页面、jar 依赖库,以及 xml、properties 配置文件和 bat、sh 脚本等,较完整地保留了 bin、conf、lib、webapps 等核心目录,既能直接运行,也方便按模块查看容器组成。已有 573 人学习下载。读者可直接使用这套环境启动服务,结合配置文件理解端口、虚拟主机、部署路径和会话管理等设置,并通过示例页面与类文件排查版本兼容、字符编码及启动异常等问题;对于需要并行验证多个 Web 应用或临时搭建演示环境的场景,也能减少重复安装与配置的时间。
1. 先别急着解压:Tomcat 7.0.103 Windows x64 zip 的版本账要算清
Tomcat windows 环境最容易被当成“解压即用”,尤其是 tomcat-7.0 这种老版本:把 apache-tomcat-7.0.103-windows-x64.zip 解压到桌面,双击 startup.bat,窗口一闪而过,然后就开始怀疑压缩包坏了。真实情况通常是 JAVA_HOME 没落到 JDK、路径里带了空格或中文、8080 端口已被别的进程占住。7.0.103 这个版本号常见于老系统维护、内网小应用和教学演示,装不好不会立刻报大错,而是卡在 404、乱码、服务注册失败这些细碎现场。下面按 Windows x64 免安装压缩包的实际落点,把版本选择、解压路径、环境变量、server.xml、服务注册和验收串成一条能复现的安装链路,适合要维护旧 Tomcat 项目、又不想把机器环境搞乱的人。
2. 下载与解压:apache-tomcat-7.0.103-windows-x64.zip 的目录落点和版本配套
2.1 先确认 JDK,不要把 JRE 当成全部
Tomcat 7.0.103 是免安装 zip 包,压缩包里没有 Java 运行时。Windows 上最容易翻车的一步,是机器里只有某个软件自带的 JRE,java -version能输出,但JAVA_HOME没配,或者配到了jre目录。控制台启动时 Tomcat 会去找%JAVA_HOME%\bin\java.exe,找不到就直接闪退。我的习惯是先把 Java 这条链路查清楚,再谈解压。
# 查看当前命令行实际调用的 java 来自哪里 Get-Command java | Select-Object Source # 查看 Java 版本;这里只确认大版本,不在机器上装多个版本硬切 java -version # 如果已经设过 JAVA_HOME,检查它指向的目录是否存在 Write-Host "JAVA_HOME=$env:JAVA_HOME" Test-Path "$env:JAVA_HOME\bin\java.exe"这段命令的逻辑是先定位java.exe的真实来源,再确认版本和JAVA_HOME是否一致。Get-Command java的Source能看出是系统 PATH 里的 Java,还是某个软件目录下临时塞进来的 Java;Test-Path返回False时,后面所有启动脚本都会失败。Tomcat 7.0.103 在老项目里常见搭配是 JDK 8,JDK 7 也有人用;不要拿更新的大版本 JDK 去赌兼容性,旧版 Tomcat 对高版本 JDK 的类加载和 JSP 编译行为不一定友好。路径我一般用C:\Java\jdk8这种短路径,不放空格、不放中文、不放桌面。
提示:
JAVA_HOME指向 JDK 根目录,不是bin,也不是jre。写成C:\Java\jdk8\bin是典型错误,启动脚本会拼出\bin\bin\java.exe。
2.2 校验压缩包并解压到短路径
拿到apache-tomcat-7.0.103-windows-x64.zip后,先别双击解压到Program Files。Windows 对Program Files有 UAC 和目录权限限制,Tomcat 运行时要写logs、temp、work,服务账户权限不足时会出现“服务启动成功但页面 404/503”的玄学现场。我的落点是D:\env\tomcat-7.0.103,全英文、无空格、路径短,后面配CATALINA_HOME和注册服务都省事。
# 压缩包放在下载目录,先算一次 SHA256,和下载来源页给出的校验值对照 $zip = "D:\downloads\apache-tomcat-7.0.103-windows-x64.zip" Get-FileHash -Path $zip -Algorithm SHA256 # 解压到 D:\env;如果目录已存在,先确认里面没有正在使用的旧实例 Expand-Archive -Path $zip -DestinationPath "D:\env" -Force # zip 解压后通常多一层 apache-tomcat-7.0.103 目录,确认实际落点 Get-ChildItem "D:\env" -Directory | Select-Object Name,FullNameGet-FileHash只负责算哈希,值必须和压缩包来源页的校验值对照,不要拿网上随手贴的哈希来比。Expand-Archive的-DestinationPath是解压根目录,-Force会覆盖同名文件,适合首次解压或确认旧目录可弃用的场景;如果机器上已有旧 Tomcat,先停服务、改CATALINA_HOME,不要直接覆盖正在运行的实例。解压完成后确认目录名,后面环境变量必须和它完全一致。若压缩包内层目录名就是apache-tomcat-7.0.103,可以把CATALINA_HOME指到这一层,不必强行改名。
2.3 目录职责认一遍,CATALINA_HOME 才不容易指错
免安装包的价值在于目录边界清楚。把CATALINA_HOME指到解压后的根目录,Tomcat 启动时会按固定结构找配置、类库、日志和部署目录。认不清目录,后面改server.xml、放 war、看日志都会找错位置。
| 目录/文件 | 职责 | 安装时要注意的点 |
|---|---|---|
bin | 启动、停止、服务注册脚本 | startup.bat、catalina.bat、service.bat都在这里 |
conf | server.xml、web.xml、logging.properties | 改端口、编码、部署上下文主要动这里 |
lib | Tomcat 公共类库 | 不要把自己项目的 jar 随手丢进来 |
logs | 运行日志、访问日志 | 服务账户必须有写权限 |
temp | 临时文件 | 磁盘满或权限不足时启动会异常 |
webapps | 默认应用部署目录 | war 放这里会自动解压,注意旧解压目录 |
work | JSP 编译产物 | 清理缓存时只清这里,不要动业务数据 |
CATALINA_HOME指向 Tomcat 安装根目录,CATALINA_BASE指向运行实例的根目录。单实例部署两者可以一致;多实例才需要拆开。下面这组设置建议在管理员 PowerShell 里执行,写到机器级环境变量,服务模式和普通命令行都能读到。
$catalinaHome = "D:\env\apache-tomcat-7.0.103" # 单实例部署,CATALINA_BASE 与 CATALINA_HOME 一致即可 [Environment]::SetEnvironmentVariable("CATALINA_HOME", $catalinaHome, "Machine") [Environment]::SetEnvironmentVariable("CATALINA_BASE", $catalinaHome, "Machine") # 把 bin 加进 PATH,方便直接调 startup.bat / catalina.bat $machinePath = [Environment]::GetEnvironmentVariable("Path", "Machine") if ($machinePath -notlike "*$catalinaHome\bin*") { [Environment]::SetEnvironmentVariable("Path", "$machinePath;$catalinaHome\bin", "Machine") } # 当前窗口临时验证,不想重启终端时先这样看 $env:CATALINA_HOME = $catalinaHome Test-Path "$env:CATALINA_HOME\conf\server.xml"这段逻辑是把 Tomcat 根目录固定下来,并把bin加进系统 PATH。Machine表示机器级变量,需要管理员权限;普通用户级变量只对当前用户生效,服务账户可能读不到。Test-Path最后返回True,说明CATALINA_HOME至少指到了有conf\server.xml的目录。环境变量写完后旧终端不会刷新,必须新开一个 PowerShell 或 cmd 再验证,这是很多人“明明配了却说没配”的原因。
3. 环境变量与启动脚本:Windows 下 Tomcat 7.0.103 的手动启动链路
3.1 JAVA_HOME 与 JRE_HOME 的取舍
Tomcat 启动脚本会先判断 Java 环境。JAVA_HOME指向 JDK 根目录,JRE_HOME指向 JRE 根目录;只跑 Tomcat 理论上 JRE 也能启动,但 JSP 编译、排查类加载问题时 JDK 更稳。我的做法是只设JAVA_HOME,不额外设一个版本不一致的JRE_HOME。两个变量同时存在且指向不同版本时,启动脚本可能优先用 JRE,结果catalina.bat version显示的 Java 版本和你以为的不一样,后面内存参数也会跟错。
:: 在 cmd 里检查,不要只看 PowerShell 的 $env echo JAVA_HOME=%JAVA_HOME% echo JRE_HOME=%JRE_HOME% "%JAVA_HOME%\bin\java.exe" -version这段是为了排除“环境变量有,但指向空目录”的情况。%JAVA_HOME%\bin\java.exe能正常输出版本,才说明 Tomcat 能找到运行时。如果JRE_HOME指向了别的目录,建议先清掉或改成与JAVA_HOME一致,避免两个版本打架。设置 JDK 路径的示例如下,路径按机器实际安装位置替换,不要照抄一个不存在的目录。
$javaHome = "C:\Java\jdk8" [Environment]::SetEnvironmentVariable("JAVA_HOME", $javaHome, "Machine") $env:JAVA_HOME = $javaHome # 验证 JDK 根目录下同时有 java 和 javac,JSP 编译更稳 Test-Path "$env:JAVA_HOME\bin\java.exe" Test-Path "$env:JAVA_HOME\bin\javac.exe"JAVA_HOME只写到 JDK 根目录,Test-Path检查java.exe和javac.exe是否存在。javac.exe不是 Tomcat 启动的硬性条件,但老项目 JSP 编译、排查编译异常时很有用。Machine写入后同样要新开终端。路径里不要出现空格;如果实际 JDK 装在带空格的目录,启动脚本里某些引号处理会带来额外麻烦,能换短路径就换。
3.2 startup.bat 与 catalina.bat run 的区别
startup.bat会新开一个窗口启动 Tomcat,原窗口马上返回;启动失败时新窗口一闪而过,错误信息来不及看。catalina.bat run在当前窗口前台运行,日志直接打出来,是排查启动问题的第一选择。我的顺序是:先用catalina.bat version验证环境,再用catalina.bat run看第一屏异常,确认能起后再用startup.bat或注册服务。
cd /d D:\env\apache-tomcat-7.0.103\bin :: 先确认脚本读到的 Tomcat 版本和 Java 版本 catalina.bat version :: 前台启动,窗口不要关,直接看启动日志和异常栈 catalina.bat runcd /d会切换盘符和目录,避免在错误目录下执行脚本。catalina.bat version输出里能看到 Tomcat 版本和 JVM 版本,两者对不上就回头查JAVA_HOME。catalina.bat run是前台阻塞运行,Ctrl+C停止;如果启动时抛ClassNotFoundException、NoSuchMethodError或端口占用,第一屏就能看到。启动成功后再开一个窗口访问http://127.0.0.1:8080/。确认没问题后,可以用startup.bat让它在后台窗口运行,或者直接注册成 Windows 服务。
:: 后台启动,日志会写到 logs 目录 startup.bat :: 停止对应实例 shutdown.batstartup.bat和shutdown.bat依赖CATALINA_HOME和端口配置。shutdown.bat走的是server.xml里Server的 shutdown 端口,不是 8080;如果改过Server port或shutdown属性,停止脚本也要对应。服务模式注册后,优先用net stop停服务,不要混用shutdown.bat,否则可能出现“页面停了但 Java 进程还在”的现场。
3.3 注册 Windows 服务:service.bat install 的实际落点
手动启动适合调试,真正给内网小应用用,还是注册成 Windows 服务省心。service.bat install会把tomcat7.exe注册成服务,服务名自己定,别用中文和空格。执行前必须确认JAVA_HOME、CATALINA_HOME都对,并且当前 cmd 是管理员权限。
cd /d D:\env\apache-tomcat-7.0.103\bin :: 安装服务,服务名用英文和下划线,不要用中文 service.bat install Tomcat7_70103 :: 启动并查看状态 net start Tomcat7_70103 sc query Tomcat7_70103 :: 如果服务名重复或装错了,先移除再重装 :: service.bat remove Tomcat7_70103service.bat install的参数是服务名,不是显示名;服务名一旦确定,后面net start、sc query、tomcat7w.exe都用它。sc query返回RUNNING说明服务进程起来了,但不等于应用一定可用,还要看端口和日志。服务模式下的 JVM 参数和在命令行里跑setenv.bat不是一条链路:控制台模式读bin\setenv.bat,服务模式更多是通过tomcat7w.exe配 Java 选项卡。装完服务后可以执行下面这条打开图形配置,确认 JVM 路径和初始内存。
:: 打开服务配置界面,检查 Java 选项卡里的 JVM 路径和内存参数 tomcat7w.exe //ES//Tomcat7_70103//ES//后面跟服务名,打开的是该服务的配置编辑器。这里能看到Java Virtual Machine路径、Initial memory pool、Maximum memory pool等参数。服务模式改完参数通常要重启服务生效。常见翻车是服务注册成功但启动即停,原因多是JAVA_HOME在服务账户下读不到,或者logs、temp、work没有写权限。
4. server.xml 与 web.xml 配置:端口、编码、应用部署参数
4.1 Connector 端口与 URIEncoding
conf\server.xml里的Connector是 HTTP 请求入口。Tomcat 7 的 GET 参数编码默认不是 UTF-8,老项目里中文查询参数乱码,很多时候就是这里没配URIEncoding。端口冲突也在这里改。下面是一段可用的 Connector 配置,端口、线程数、压缩按机器规格取舍,不是越大越好。
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" maxThreads="200" minSpareThreads="20" acceptCount="100" compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json" />port是 HTTP 监听端口,被占用就改成 8081 或别的空闲端口;connectionTimeout是连接超时毫秒数,20000 是常见起点;redirectPort指向 HTTPS 端口,没配 SSL 时保留默认不影响 HTTP;URIEncoding="UTF-8"解决 GET 请求参数中文乱码,Tomcat 7 老版本尤其要显式写。maxThreads是最大工作线程数,内网小应用 200 够用,盲目调到 1000 只会让线程切换和内存压力变大;minSpareThreads是常驻空闲线程;acceptCount是等待队列长度。compression对文本响应有效,图片和压缩包不要再压,compressionMinSize控制最小压缩阈值,太小会增加 CPU 开销。
注意:改
server.xml前先备份原文件。Tomcat 启动时 XML 语法错误不会“部分生效”,而是直接起不来。改完用前台catalina.bat run看第一屏,比双击 startup 后猜日志快。
4.2 Host/Context 部署 war 与外部目录
最简单的部署是把 war 放进webapps,Tomcat 启动时自动解压。war 名就是上下文路径,例如sim-demo.war部署后访问/sim-demo/。如果不想把应用放安装目录,可以用外部docBase。Tomcat 7 支持在conf\Catalina\localhost\下放一个以上下文命名的 XML,比直接改server.xml里的Context更稳,因为改server.xml往往要重启整个容器。
<!-- 文件:conf\Catalina\localhost\sim-demo.xml --> <Context docBase="D:/apps/sim-demo" reloadable="false" />这个文件的名字sim-demo.xml决定访问路径是/sim-demo,docBase指向应用目录,路径用正斜杠,Windows 下也建议写D:/apps/sim-demo而不是反斜杠混排。reloadable="false"适合稳定环境,避免类文件变动触发整应用重载;开发阶段可以设true,但会额外占内存。应用目录必须真实存在,WEB-INF\web.xml要能被读到,否则启动日志里会出现docBase相关异常。
<!-- 文件:conf\server.xml 中的 Host 片段,保持默认部署行为 --> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> </Host>appBase="webapps"是默认部署根目录;unpackWARs="true"表示 war 会自动解压成目录,老项目里有些代码依赖解压后的路径;autoDeploy="true"表示运行期检测新 war 和上下文变更。生产环境如果追求可控,可以关掉自动部署,改为维护窗口手动发布,但老项目通常保持默认更省事。部署后 404 先看logs\localhost.*.log,再看webapps下是否真的解压出目录,最后确认访问路径大小写。
4.3 JVM 内存与日志落盘
Tomcat 7 可能跑在 JDK 7,也可能跑在 JDK 8,内存参数不能一套通吃。JDK 8 用 Metaspace,JDK 7 用 PermGen;把 JDK 8 的MetaspaceSize写到 JDK 7 上会被忽略或报错。控制台模式在bin\setenv.bat里配,服务模式在tomcat7w.exe里配,两条链路不要混。
@echo off :: 文件:bin\setenv.bat,控制台模式启动时生效 :: JDK 8 环境示例:堆内存 + Metaspace + 文件编码 set "JAVA_OPTS=-Dfile.encoding=UTF-8 -Duser.timezone=GMT+8" set "CATALINA_OPTS=-Xms256m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m"@echo off :: 文件:bin\setenv.bat,JDK 7 环境示例:用 PermGen 参数 set "JAVA_OPTS=-Dfile.encoding=UTF-8 -Duser.timezone=GMT+8" set "CATALINA_OPTS=-Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256m"JAVA_OPTS里的-Dfile.encoding=UTF-8影响 JVM 默认字符集,-Duser.timezone=GMT+8避免日志时间差;CATALINA_OPTS只给 Tomcat 启动用,堆内存-Xms和-Xmx按机器内存和并发量调,内网小应用 256m 到 512m 是常见起点。JDK 8 的MetaspaceSize是初始阈值,MaxMetaspaceSize是上限;JDK 7 的PermSize和MaxPermSize对应永久代。setenv.bat必须放在bin目录,文件名不要改,启动脚本会自动调用。服务模式不读这个文件时,去tomcat7w.exe的 Java 选项卡里填同样的参数。
日志默认写到logs目录,catalina.YYYY-MM-DD.log记录容器启动和严重错误,localhost.YYYY-MM-DD.log记录应用部署和上下文异常。磁盘小或日志增长快时,改conf\logging.properties里的文件处理器和保留策略,但不要直接把日志目录删掉;服务账户没有写权限时,Tomcat 可能启动到一半失败,Windows 事件查看器里只给一个笼统错误。
5. 常见问题与避坑:Tomcat 7.0.103 在 Windows 上的五个翻车现场
5.1 双击 startup.bat 一闪而过
现象:双击startup.bat后黑窗口出现又消失,浏览器打不开 8080,logs目录也没有新日志。原因通常不是压缩包坏了,而是启动脚本找不到 Java,或者JAVA_HOME指向了带空格、带中文的路径,脚本拼接命令时断掉。解决方式是用前台方式启动,把错误留在窗口里。
cd /d D:\env\apache-tomcat-7.0.103\bin catalina.bat run如果窗口里直接报JAVA_HOME is not defined correctly,回头检查echo %JAVA_HOME%和"%JAVA_HOME%\bin\java.exe" -version。路径有空格时换短路径,权限不足时用管理员 cmd 再试。前台能看到异常栈,比在logs里翻半天快。
5.2 8080 端口被占用,服务启动但页面打不开
现象:服务状态显示RUNNING,访问http://127.0.0.1:8080/却连接失败或跳到别的页面。原因多半是 8080 已经被另一个 Java 进程、旧 Tomcat 或本地开发工具占用。解决先定位 PID,再决定停进程还是改端口。
# 找 8080 的监听进程 netstat -ano | findstr ":8080" # 用 PID 查进程名;把 1234 换成实际 PID tasklist /FI "PID eq 1234"确认是旧 Tomcat 就停旧实例,不确定的进程不要直接杀。另一个办法是改server.xml的Connector port="8081",重启后访问新端口。改端口后别忘了同步防火墙和调用方地址。
5.3 部署 war 后 404,路径大小写和 docBase 对不上
现象:war 已经放进webapps,启动日志没有明显报错,访问/sim-demo/却是 404。原因常见有三类:war 名和访问路径大小写不一致;docBase指到了不存在的目录;work里残留了旧编译缓存。解决先看logs\localhost.*.log,再确认部署目录。
# 看 webapps 下是否解压出目录,war 名是否和访问路径一致 Get-ChildItem "D:\env\apache-tomcat-7.0.103\webapps" | Select-Object Name,Mode # 看应用日志里有没有 docBase 或 web.xml 解析异常 Get-Content "D:\env\apache-tomcat-7.0.103\logs\localhost.*.log" -Tail 80确认目录存在后,清理work\Catalina\localhost\sim-demo再重启;如果是外部docBase,检查 XML 文件名和docBase路径。不要一上来删整个webapps,先分清是部署失败还是应用自身报错。
5.4 中文参数乱码,GET 和 POST 各查一半
现象:页面能打开,表单提交的中文变成问号或乱码,GET 查询参数尤其明显。原因在 Tomcat 7 上要分两层看:GET 参数受Connector的URIEncoding影响,POST 参数受应用自身request.setCharacterEncoding和 JSP 页面编码影响。只在 JSP 里写pageEncoding="UTF-8"不一定能救 GET。
<!-- 先确保 Connector 有 URIEncoding --> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="UTF-8" />改完server.xml必须重启。POST 乱码要在应用入口加编码过滤器,或者在web.xml里配项目已有的字符编码过滤器;JSP 页面统一<%@ page pageEncoding="UTF-8" %>。数据库连接串和表字符集也要对,不然页面正常、入库仍然乱。
5.5 服务模式内存溢出或无权写日志
现象:手动catalina.bat run正常,注册成服务后跑一段时间OutOfMemoryError,或者logs、temp目录没有新文件。原因通常是服务模式没吃到setenv.bat的内存参数,或者服务登录账户对安装目录没有写权限。解决打开tomcat7w.exe配 JVM 内存,再检查目录权限。
:: 打开服务配置,确认 Java 选项卡里的初始内存和最大内存 tomcat7w.exe //ES//Tomcat7_70103JDK 8 配 Metaspace,JDK 7 配 PermGen;服务账户如果用的是内置系统账户,确认它对logs、temp、work有修改权限。改完参数重启服务,再用catalina.*.log确认启动时的 JVM 参数是否生效。
6. 装完怎么验证跑通:从 8080 到模拟项目X 的三段验收
装完 Tomcat 7.0.103 后,我不看“服务已启动”这一行就收工,而是按三段验收走一遍:进程和端口、HTTP 响应、应用日志。先确认 Java 进程真的在跑,再确认 8080 真的能连,最后确认模拟项目X 部署后没有隐藏异常。三段都过,才算这套 Windows 环境能交付。
# 第一段:进程和端口 Get-Process java -ErrorAction SilentlyContinue | Select-Object Id,ProcessName,Path Test-NetConnection 127.0.0.1 -Port 8080 # 第二段:HTTP 根页面状态码 $resp = Invoke-WebRequest "http://127.0.0.1:8080/" -UseBasicParsing $resp.StatusCode # 第三段:应用日志和部署目录 Get-ChildItem "D:\env\apache-tomcat-7.0.103\webapps" | Select-Object Name Get-Content "D:\env\apache-tomcat-7.0.103\logs\catalina.*.log" -Tail 80Get-Process java看进程路径是不是你配的 JDK,避免机器上另一个 Java 进程冒充;Test-NetConnection的-Port 8080返回TcpTestSucceeded : True才说明端口通了;Invoke-WebRequest的StatusCode期望是 200,如果是 404 再查上下文路径。最后看webapps下有没有sim-demo解压目录,日志尾部有没有SEVERE或Exception。验收表可以按下面四项打勾。
| 检查项 | 命令/位置 | 期望结果 |
|---|---|---|
| Java 版本 | catalina.bat version | 显示 Tomcat 7.0.103 和预期 JDK |
| 端口监听 | Test-NetConnection 127.0.0.1 -Port 8080 | TcpTestSucceeded : True |
| 根页面 | http://127.0.0.1:8080/ | HTTP 200,出现 Tomcat 欢迎页 |
| 应用部署 | webapps\sim-demo与localhost.*.log | 目录存在,日志无部署异常 |
从那以后我每次装完 Tomcat,都强制先前台catalina.bat run看第一屏,再注册服务,最后跑这三段验收;不再用“双击没报错”当成功标准。需要复现的直接取apache-tomcat-7.0.103-windows-x64.zip,按第 2 章的落点解压,再照第 3 章把环境变量和启动链路走一遍,能省掉不少回头排查的时间。希望帮到你。
本文还有配套的精品资源,点击获取