1)修改后端配置
确保 <font style="color:rgb(64, 64, 64);">application.yml</font> 或 <font style="color:rgb(64, 64, 64);">application.properties</font> 中的数据库连接指向服务器MySQL:
yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/数据库名?useSSL=false
username: your_user
password: your_password
2)解决跨域问题
如果后端未配置 CORS,在 Spring Boot 中添加:
java
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*") // 允许所有来源(或指定前端地址)
.allowedMethods("GET", "POST", "PUT", "DELETE")
.allowedHeaders("*");
}
}
2)打包jar
进入文件根目录(有pom.xml的那一级)
运行
bash
mvn clean package
3)上传到服务器
4)在服务器运行后端
bash
java -jar C:\Users\Administrator\Desktop\ngpos-boot3-1.0.jar --server.port=8081
检查是否运行:
plain
ps aux | grep java
netstat -tulnp | grep 8080
步骤 3:配置本地Vue前端访问服务器API
(1)修改Vue的API请求地址
在 <font style="color:rgb(64, 64, 64);">vue.config.js</font> 中配置代理:
javascript
module.exports = {
devServer: {
proxy: {
'/api': {
target: 'http://服务器IP:8080', // 后端地址
changeOrigin: true,
pathRewrite: {
'^/api': ''
}
}
}
}
}
或者在 <font style="color:rgb(64, 64, 64);">.env.development</font> 中设置:
env
复制
下载
bash
VUE_APP_API_BASE_URL=http://服务器IP:8080
然后在代码中使用:
javascript
axios.get(`${process.env.VUE_APP_API_BASE_URL}/api/data`);
(2)解决跨域问题
如果后端未配置 CORS,在 Spring Boot 中添加:
java
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*") // 允许所有来源(或指定前端地址)
.allowedMethods("GET", "POST", "PUT", "DELETE")
.allowedHeaders("*");
}
}
步骤 4:测试访问
(1)直接访问后端API
在浏览器或 Postman 访问:
如果返回数据,说明后端正常运行。
(2)本地Vue访问
运行本地前端:
bash
npm run dev
访问 <font style="color:rgb(64, 64, 64);">http://localhost:8080</font>,检查是否能获取服务器数据。
===============================================================
错误:
PS C:\Users\17035\Desktop\新建文件夹\back-end-of-western-restaurant - 副本\dish\target> java -jar ngpos-boot3-1.0.jar ngpos-boot3-1.0.jar中没有主清单属性
完整的解决方案:
根据你的 pom.xml 文件,我发现导致 JAR 文件无法运行的关键问题是 spring-boot-maven-plugin 配置中的 true。这个参数会跳过 Spring Boot 的可执行 JAR 打包过程,导致生成的 JAR 文件缺少必要的启动信息。以下是
- 问题修复步骤
(1) 修改 spring-boot-maven-plugin 配置
将以下部分:
xml
<configuration>
<mainClass>com.example.dish.DishApplication</mainClass>
<skip>true</skip> <!-- 删除这一行 -->
</configuration>
改为
xml
<configuration>
<mainClass>com.example.dish.DishApplication</mainClass>
</configuration>
1. 正确的端口映射命令(管理员权限运行)
powershell
netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=8081 connectaddress=127.0.0.1 protocol=tcp
2. 命令参数说明
| 参数 | 值 | 说明 |
|---|---|---|
<font style="color:rgb(64, 64, 64);">listenport</font> |
80 | 外部访问的端口 |
<font style="color:rgb(64, 64, 64);">listenaddress</font> |
0.0.0.0 | 监听所有网络接口 |
<font style="color:rgb(64, 64, 64);">connectport</font> |
8081 | 内部服务实际端口 |
<font style="color:rgb(64, 64, 64);">connectaddress</font> |
127.0.0.1 | 转发到本机 |
<font style="color:rgb(64, 64, 64);">protocol</font> |
tcp | 使用TCP协议 |
3. 验证映射是否成功
powershell
netsh interface portproxy show all
预期输出:
plain
侦听 ipv4: 连接到 ipv4:
地址 端口 地址 端口
--------------- ---------- --------------- ----------
0.0.0.0 80 127.0.0.1 8081
4. 开放防火墙80端口(如果尚未开放)
powershell
netsh advfirewall firewall add rule name="HTTP_80" dir=in action=allow protocol=TCP localport=80
5. 测试访问
现在可以通过以下方式访问:
powershell
http://8.138.207.62:80/ticket/listAll
6. 注意事项
- 需要以管理员身份运行CMD/PowerShell
如果80端口被系统服务占用,可改用其他端口(如8080):
powershell
netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=8081 connectaddress=127.0.0.1
- 重启后映射会失效,如需持久化可以创建计划任务
7. 完整操作示例
plain
:: 添加端口映射
netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=8081 connectaddress=127.0.0.1
:: 查看所有映射规则
netsh interface portproxy show all
:: 开放防火墙
netsh advfirewall firewall add rule name="HTTP_80" dir=in action=allow protocol=TCP localport=80
:: 测试映射是否生效(在服务器本地执行)
curl http://localhost:80/kitchen/tasks
如果仍然遇到问题,可能是:
- IIS或其他服务占用了80端口(使用
<font style="color:rgb(64, 64, 64);">netstat -ano | findstr :80</font>检查) - 云服务商限制了80端口(需在控制台开放)
- 本地网络屏蔽了80端口(尝试手机热点访问)