整合vue-cli前端、基于springboot的javaweb后端

整合vue-cli前端、基于springboot的javaweb后端

服务器使用的系统是CentOS 8.5 64位 UEFI版

vue-cli中对后端的所有请求路径都要改为:http或者https://服务器的公网IP:后端的端口号(在application.yml的server:port:配置)/请求路径

build后得到的dist的static替代springboot后端的resources.static,dist的index.html替代后端的resources.template的index.html

并将index.html中的请求路径对应配置好application.yml中的spring:resources:static-locations:,

比如我的html中的静态资源请求路径原为:

<script type=text/javascript src=/static/js/manifest.2ae2e69a05c33dfc65f8.js></script>
<script type=text/javascript src=/static/js/vendor.4b79585197a373acf211.js></script>
<script type=text/javascript src=/static/js/app.65ea499b53b62ad6f85b.js></script>

被我改为:

<script type=text/javascript src=js/manifest.2ae2e69a05c33dfc65f8.js></script>
<script type=text/javascript src=js/vendor.4b79585197a373acf211.js></script>
<script type=text/javascript src=js/app.65ea499b53b62ad6f85b.js></script>

同时,application.yml的spring:resources:static-locations:配置为:

spring:
  application:
    name: travelwebsite
  resources:
    static-locations: [classpath:/static/] #就是这个

这样就将“js/manifest.2ae2e69a05c33dfc65f8.js”映射为:“classpath:/static/js/manifest.2ae2e69a05c33dfc65f8.js”,如果没配置正确的话,访问到的index.html就会加载不了css、JavaScript等静态资源

后端控制层创建一个控制器,内容如下,这样才可以通过thymeleaf将ip:端口号/映射访问到首页,thymeleaf的映射路径不做配置(即使用默认的配置)

@Controller
public class IndexController {//类名可变
    @RequestMapping(value = {"/","/index"})
    public String index() {
        return "index"; // 地址指向index.hml
    }
}

然后在maven的生命周期中运行:install,在target中生成该项目的jar包传到服务器上

后端的部分配置

<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.12</version>

<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.17</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

服务器的Tomcat

使用Tomcat9.0.76(springboot2.7.12中的内嵌Tomcat版本是9.0.75)

解压安装包、启动Tomcat、配置防火墙、配置服务器安全组,见文章:Linux系统部署项目 笔记

服务器的mysql

参考文章

版本:mysql-8.0.22(springboot2.7.12中mysql-connector-j的默认版本是8.0.22)

解压、安装、启动服务、修改密码、修改密码策略、设置远程连接、配置防火墙上的3306端口、服务器安全组的3306端口

mysql报错:

[root@iZf8z6i6vaudoz84vmocfcZ mysql]# mysql -uroot -p
Enter password:
ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)

这个错误消息表明在尝试使用给定的用户名和密码访问 MySQL 数据库时被拒绝了。可能是由于使用的密码不正确或者 MySQL 用户权限配置问题引起的。如果确定密码是正确的,那么可能是由于 MySQL 用户权限配置的问题导致访问被拒绝。您可以尝试检查以下几个方面:

  1. 检查使用的用户名和密码是否对应一个具有正确访问权限的 MySQL 用户。可以使用 mysql> SHOW GRANTS FOR 'root'@'localhost'; 命令检查用户的权限。

  2. 确认 MySQL 服务是否正在运行。可以使用 systemctl status mysql 命令检查 MySQL 服务状态,如果服务没有运行,则需要使用 systemctl start mysql 命令启动服务。

  3. 检查 MySQL 是否启用了远程连接。默认情况下,MySQL 只允许本地连接。可以通过修改 MySQL 配置文件来允许远程连接。

mysql报错:

update user set host = ‘%’ where user = ‘root’;
ERROR 1046 (3D000): No database selected

该错误消息表明您在更新用户表时没有选择要使用的数据库。您需要先选择一个数据库,然后才能执行 update 命令。

先创建需要用到的数据库:create database 数据库名;

可以使用 USE 命令来选择要使用的数据库,例如:

mysql> USE 数据库名;

请注意将上述命令中的 mydatabase 替换为您要使用的数据库名称。然后您可以执行更新用户表的命令:

mysql> update user set host = '%' where user = 'root';

这个命令将会把 root 用户的可访问主机设置为任意主机(%)。请注意,在生产环境中,通常不应该将主机设置为 %,因为这将允许来自任何 IP 地址的连接到数据库。

记得最后使用 FLUSH PRIVILEGES; 命令来刷新权限并应用新的更改。

运行项目

在项目目录下:

nohup java -jar boot工程.jar &> hello.log & 后台运行 java -jar 命令,并将日志输出到 hello.log 文件
kill -9 进程ID 停止SpringBoot程序

在本地使用Navicat连接到服务器上的mysql服务并创建数据库中的数据表

端口被占用

查找占用了端口80的进程,并手动杀死该进程。具体操作步骤如下:

  1. 打开终端。

  2. 运行以下命令找到占用80端口的进程:

sudo lsof -i:80
  1. 找到占用80端口的进程ID(PID),并使用以下命令终止该进程:
sudo kill -9 <PID>

请求网址里的端口号后面需要有项目名吗?

这取决于你是否在Spring Boot应用程序中设置了上下文路径。如果你没有显式地设置应用程序的上下文路径,那么访问静态文件的URL将是 “http://localhost:8080/static/js/app.091cb8f40353b8b51e12.js” ,其中端口号后面没有项目名。这是因为默认情况下Spring Boot将项目的根路径设置为应用程序的上下文路径。例如,访问一个控制器可以使用类似于 “http://localhost:8080/hello” 的URL,其中 “hello” 是你定义的控制器的请求映射路径,它会被映射到与请求路径相同的控制器方法上。

如果你显式地设置了应用程序的上下文路径,那么访问静态资源的URL将需要包含该上下文路径。例如,如果你在应用程序的配置文件(如application.properties或application.yml)中设置了上下文路径为 “/myapp” ,那么访问静态资源的URL将变为 “http://localhost:8080/myapp/static/js/app.091cb8f40353b8b51e12.js” ,其中 “myapp” 是你设置的上下文路径。

因此,要回答你的问题,URL是否需要包含项目名称取决于你是否设置了应用程序的上下文路径。如果你没有设置上下文路径,URL中不需要包含项目名称。否则,URL需要包含应用程序的上下文路径。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值