【Java】java | 配置静态资源 | web服务器 | vue build后放到SpringBoot项目中 | 前后端不分离
一、概述
项目vue + springboot,前后端分离项目;但部署时,不想用nginx代理,想要前端npm run build:prod后,将dist的目录整体复制到SpringBoot项目中,通过静态资源映射,节省一个端口。
二、操作步骤
1、前端
1)修改服务访问前缀
VUE_APP_CONTEXT_PATH = '/dist/'
说明1: 必须增加此前缀,用于区分是前端的请求还是后端的请求;dist可以根据项目自行定义;修改后注意修改后端的代码;
说明2: npm run build:prod直接打包
说明3: 注意下前后都有【/】,是【/dist/】,不是【/dist】
~~
2、后端
1)配置application.yml
spring: web: resources: # jar包同级目录,static文件夹 static-locations: "classpath:/dist/" mvc: # 静态资源匹配,前端 static-path-pattern: /**
说明1: pattern匹配的所有,所以会拦截所有请求,包含前端/web以及后端/business等请求
;区别在于,前端都是get请求,后端有get有post,所以需要通过前缀进行区分;
说明2: dist整体复制就可以,位于/resouces下;【/resources/dist】
2)copy请求类SysIndexController
package com.hg.demo.config; import groovy.util.logging.Slf4j; import org.springframework.boot.autoconfigure.web.servlet.error.ErrorViewResolver; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpStatus; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import javax.annotation.Resource; /** * web mvc config * * @author hgsuper */ @Slf4j @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/dist/**").addResourceLocations("classpath:/dist/"); WebMvcConfigurer.super.addResourceHandlers(registry); } @Bean public ErrorViewResolver errorViewResolver() { return (request, status, model) -> { if (status.value() != 404) { return null; } String uri = (String) model.get("path"); return new ModelAndView("/dist/index.html", HttpStatus.OK); }; } }
说明1: 拦截前端访问的请求,然后重定向到index.html
说明2: 通过【WebMvcConfig】的方式配置;用的是若依的框架
说明3: 此配置类,放到controller所在模块;子模块也可以,子模块注意依赖生效
~~
原文地址:https://blog.csdn.net/myloverisxin/article/details/143491850
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!