SpringBoot创建项目内网穿透过程在到jar包本地运行小案例

目录

    • 1.创建SpringBoot项目
    • 2.做这个demo的初衷(有赞获取token)
    • 3.解决内网穿透的问题
    • 4.测试内网穿透是否成功
    • 5.SpringBoot打包Jar运行
    • 6.本地运行jar

1.创建SpringBoot项目

创建SpringBoot项目步鄹
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第1张图片
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第2张图片
设置项目基础配置]
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第3张图片
勾选自己需要的依赖,本次项目中需要涉及到web开发,后续需要可以通过引入maven坐标来引用依赖
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第4张图片
配置项目的名称和保存项目路径
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第5张图片
进来后发现类是这样的不要慌
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第6张图片
点击maven让他加载相关依赖包等个几分钟就好如果引入的依赖比较多,那么下载的时间就会比较久,等就完事!!!
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第7张图片
加载完成后就正常了
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第8张图片
使用springboot的好处是帮助开发者快速的搭建Spring框架
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第9张图片
把配置文件后缀修改成yml
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第10张图片
本质上没什么区别使用

.yml :创建的配置以空格的缩进程度来控制层级关系
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第11张图片

.properties:配置如下
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第12张图片

正常的情况是先加载yml,接下来加载properties文件。

运行成功后,通过localhost:8080访问但是我们现在也没有页面所以访问也是404
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第13张图片
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第14张图片

2.做这个demo的初衷(有赞获取token)

由于本次做的demo是用来获取有赞的code授权数据,在通过有赞对应的包把code兑换token的过程,所以没有打算做页面,要做页面的话还需要引用和配置SpringMvc的相关依赖和配置!

在pom.xml引入有赞的远程仓库添加在project标签内

    <repositories>

        <repository>
            <id>baymax-releases</id>
            <name>Nexus Release Repository</name>
            <url>http://maven.youzanyun.com/repository/maven-releases/</url>
        </repository>

    </repositories>

在引入包的坐标,添加在dependencies标签内

 		<dependency>
            <groupId>com.youzan.cloud</groupId>
            <artifactId>open-sdk-core</artifactId>
            <version>1.0.5-RELEASE</version>
        </dependency>

        <dependency>
            <groupId>com.youzan.cloud</groupId>
            <artifactId>open-sdk-gen</artifactId>
            <version>1.0.5.201909051746-RELEASE</version>
        </dependency>

创建Controller类,添加注解

RestController:相当于@Controller + @ResponseBody不能返回jsp,html页面,视图解析器无法解析jsp,html页面
RequestMapping:请求地址映射的注解

SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第15张图片

简单对授权后的用户,有赞会把code发送到我们指定的请求接口中,现在来测试下我们写的Controller能不能接受到我们测试的数据信息!
使用请求的工具是ApiPost软件
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第16张图片
软件已经获取到数据信息了
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第17张图片

3.解决内网穿透的问题

因为我们现在的软件是在本机上,有赞的请求是没办法访问我们的软件,这个时候需要使用到natapp.exe做内网映射

网址:https://natapp.cn/

SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第18张图片
点击下载程序选择对应的操作系统下载(我是windows 64位的系统)SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第19张图片
解压后里面只有一个可运行文件
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第20张图片
我们创建一个config.ini文件用于存放我们一些配置,使用Notepad++编辑器修改
在里面添加以下配置:

#将本文件放置于natapp同级目录 程序将读取 [default] 段
#在命令行参数模式如 natapp -authtoken=xxx 等相同参数将会覆盖掉此配置
#命令行参数 -config= 可以指定任意config.ini文件
[default]
authtoken=xxxxxx                      #对应一条隧道的authtoken
clienttoken=                    #对应客户端的clienttoken,将会忽略authtoken,若无请留空,
log=stdout                        #log 日志文件,可指定本地文件, none=不做记录,stdout=直接屏幕输出 ,默认为none
loglevel=DEBUG                  #日志等级 DEBUG, INFO, WARNING, ERROR 默认为 DEBUG
http_proxy=                     #代理设置 如 http://10.123.10.10:3128 非代理上网用户请务必留空

SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第21张图片
你们只要修改authtoken这个字段的值,这个值是你登录Natapp账号里面生成的值
登录官网后点击购买隧道,一个注册的用户可以购买2条不同协议的隧道
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第22张图片
因为我之前搞微信公众号有创建过web隧道,所以没办法创建第二条web协议的隧道
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第23张图片
本地默认ip地址就是127.0.0.1
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第24张图片
更改完成记得点击修改,截图的时候没有把8288改成8080所以你们懂就好
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第25张图片
记得配置这个authtoken参数保存SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第26张图片
在创建一个文件natapp.bat用来运行natapp.exe和配置config.ini就一行命令
在里面配置以下内容:

start natapp -config=config.ini

在这里插入图片描述
目录结构:
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第27张图片
双击natapp.bat运行程序
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第28张图片
这个时候你可能就会有疑问,既然是做内网穿透那外网怎么访问域名或ip来访问请求我们本地的程序呢?

SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第29张图片
看这段json数据其中里面:

Url:参数显示的域名地址就是外网通过这个域名访问我们的本地服务 (注意:这个域名每次关了在启动域名都会发生变化,充钱就可以解决这个问题)
Protocol:使用的协议Http或Https
LocalAddr:这个就是我们配置映射我们本地访问的ip和程序端口号

4.测试内网穿透是否成功

使用ApiPost来测试请求是否可以被程序接收
1.把之前的localhsot:8080改成natapp里面的域名
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第30张图片
由于前面误操作把这个窗口关了域名也就变了,变成了http://jqbxmv.natappfree.cc
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第31张图片
2.替换参数
不影响我们测试把这个域名复制到ApiPost把localhost:8080替换
请求已经接受到响应数据
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第32张图片
后台程序也获取到数据了
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第33张图片
5.通过Code换取token
有赞云开发文档中有流程我们需要把我们的回调地址改成natapp生成的域名以ApiPost请求的地址为例

http://jqbxmv.natappfree.cc/YouzanController/getCode?code=4564sd4ds546s5d4
解析:
http://jqbxmv.natappfree.cc由natapp生成,前面说了每一次软件关闭在开启域名都会发生改变那么我们就要重新修改回调地址
/YouzanController/getCode:为我们springboot的请求接口
?code=4564sd4ds546s5d4:由我们点击授权用户,有赞会自动把回调地址拼接上code=值(值为企业的code信息)

SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第34张图片
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第35张图片
当然这个code的拼接也不是为随便乱写的哦是看文档得来的
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第36张图片
剩下通过code获取token就更简单了把我们获取到的code添加到有赞的实例中去获取代码在下面

        DefaultYZClient yzClient = new DefaultYZClient();
        TokenParameter tokenParameter = TokenParameter.code()
                .clientId("请填写您的client_id")
                .clientSecret("请填写您的client_secret")
                .code("请填写您获取的code")
                .build();
        OAuthToken codeToken = yzClient.getOAuthToken(tokenParameter);

改造我们的方法:由于我们已经引入了有赞的包所以可以直接调用并且添加try避免响应超时报错等问题

client_id:有赞云颁发给开发者的应用id
client_secret:有赞云颁发给开发者的密钥
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第37张图片

SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第38张图片
到这边就大功告成啦

有赞点击企业获取code这步我们可以通过ApiPost来模拟,本质上就是使用的的回调地址进行拼接企业的code信息在发送请求到我们程序的服务端,由于code是乱输入的所以也不会成功我们就看一下效果,说干就干!
ApiPost打开
拼接好乱输入的code重启服务端
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第39张图片
发送请求后服务端已经接收到信息有赞返回非法授权的错误
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第40张图片
不影响我们,等真实测试的时候就不会出现这个!

5.SpringBoot打包Jar运行

添加2个参数一个是配置打包方式,另外一个是打包后的名称需要
注意:在添加的标签要在对应标签里面不然也会报错


 	<packaging>jar</packaging><!--打包方式jar 或 war -->
 	
    <build>
		 <finalName>itmei</finalName><!--打包后的名称-->
    </build>

SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第41张图片
打包前先clean下
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第42张图片
接着在运行package命令打包,打包完成后会生成target目录里面就有存放我们的程序.jar
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第43张图片

6.本地运行jar

我们创建一个文件夹最好名称是英文以免遇到问题,把jar包复制进去

这个时候你可能会问为什么我们写的代码没有多少但是打包出来的程序有25m大小,由于引入的maven包比较多导致打包都把一些SpringBoot用不到的包也打包进去了
可以看出外部库的包有很多,我们不纠结
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第44张图片

SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第45张图片
创建一个windows的启动文件名称我取名start.bat至于你们取什么都可以里面也就一行命令
java -jar固定写法 后面跟可运行的jar文件

start java -jar itmei.jar

SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第46张图片
使用命令行的方式就把start给去掉运行,前提是命令行是在当前目录上不然会报找不到的错误

教你们一个方法打开文件目录点击shift+鼠标右键选择Powershell窗口
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第47张图片

运行前需要保证程序的端口不能被占用了
被占用程序就报错结束了
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第48张图片
先测试命令行的运行成功状态
在这里插入图片描述
使用ApiPost请求测试下运行情况
可以看出可以获取到数据信息
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第49张图片
双击运行我们创建的start.bat运行程序
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第50张图片
大功告成,创作不易



真实操作有赞获取code兑换token
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第51张图片
在线网址解析一下json我们已经可以获取到企业的token和refreshToken了
SpringBoot创建项目内网穿透过程在到jar包本地运行小案例_第52张图片

你可能感兴趣的:(Spring知识,java开发知识,maven,spring,boot,jar,java,开发语言)