首页 > 其他分享 >Vue项目打包成静态文件放到springboot项目下

Vue项目打包成静态文件放到springboot项目下

时间:2024-10-27 21:51:21浏览次数:6  
标签:... Vue springboot 项目 静态 registry public 打包 excludePathPatterns

一、Vue这边准备工作如下

  1. 将Vue 模式修改为web模式
const router = createRouter({
  // hash:  createWebHashHistory(), // 设置为哈希模式
  // 设置为web模式
  history: createWebHistory(),
  routes: [
    {
      path: '/',
      redirect: '/home',
    },
    ...redirect, // 统一的重定向配置
    ...login,
    ...lock,
    ...fixedRoutes,
    ...error,
  ],

2.请求的url地址修改为本地后端服务器地址

const service = axios.create({
  //location对象
  // baseURL: location.pathname.split('/')[1]==='tools'? import.meta.env.VITE_TOOLS_URL:import.meta.env.VITE_API_URL,
  // baseURL:import.meta.env.VITE_TOOLS_URL,
  // 请求路径
  baseURL: 'http://localhost:8083',
  timeout: 10000,
  withCredentials: true,
})
  1. 打包成静态文件
npm run build

二、springboot 项目中做的事情

  1. 一般将静态文件放到resources目录下static目录下
    image
  2. pom.xml 中打包的时候,将静态文件打包进入
            <!--指定将resources中配置文件加载到target-->
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.db</include>
                    <include>static/**</include>
                    <include>static/assets/**</include>
                </includes>
                <filtering>false</filtering>

            </resource>
  1. 编写一个 WebMvcConfig 类
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    /**
     * 拦截器,拦截所有请求,也可以拦截指定请求,多用于登录拦截,是否鉴权
     *
     * @param registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {

        registry.addInterceptor(new LoginInterceptor())
                .addPathPatterns("/**")
                .excludePathPatterns("/swagger**/**")
                .excludePathPatterns("/webjars/**")
                .excludePathPatterns("/v3/**")
                .excludePathPatterns("/doc.html")
                .excludePathPatterns("/user/*");
    }

    /**
     * 静态资源拦截
     *
     * @param registry
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {

        //放行所有的静态资源,为了保证vue项目可以正常使用
        registry.addResourceHandler("/**")
                .addResourceLocations("classpath:/static/");
    }


    /**
     * 解决全局跨域,
     *
     * @param registry
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        // 添加映射路径
        registry.addMapping("/**")
                // 放行哪些原始域
                .allowedOriginPatterns("*")
                // 是否发送Cookie信息
                .allowCredentials(true)
                // 放行哪些原始域(请求方式)
                .allowedMethods("*")
                // 放行哪些原始域(头部信息)
                .allowedHeaders("*")
                // 暴露哪些头部信息(因为跨域访问默认不能获取全部头部信息)
                .exposedHeaders("access-control-allow-headers",
                        "access-control-allow-methods",
                        "access-control-allow-origin",
                        "access-control-max-age",
                        "X-Frame-Options");
    }

}
  1. 编写一个 webcontroller 将请求转到index.html
@Controller
public class WebController {

    @GetMapping("/{path:[^\\.]*}") // 匹配任何没有点的请求 (避免静态资源被拦截)
    public String forward() {
        // 转发到 index.html
        return "forward:/index.html";
    }

}

  1. 将项目mvn打包jar,打包之后,直接输入网站,就可以访问到地址了

标签:...,Vue,springboot,项目,静态,registry,public,打包,excludePathPatterns
From: https://www.cnblogs.com/alex-oos/p/18509036

相关文章

  • 基于数据可视化+SpringBoot+Vue的闲置物品一站式交易平台设计和实现(源码+论文+部署讲
    博主介绍:CSDN毕设辅导第一人、全网粉丝50W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HLMT、J......
  • 基于数据可视化+SpringBoot+Vue的二手物品交易平台设计和实现(源码+论文+部署讲解等)
    博主介绍:CSDN毕设辅导第一人、全网粉丝50W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HLMT、J......
  • 项目进度管理的五个基本步骤是什么
    项目进度管理的五个基本步骤包括:制定计划、定义活动、排列活动顺序、估算资源与持续时间、以及监控与控制进度。在这些步骤中,定义活动是至关重要的,因为它涉及到将项目范围细分为可管理的任务或活动。明确定义活动有助于更好地估算所需时间和资源、安排活动顺序,并为之后的进度管理......
  • 基于django+vue的美食推荐管理系统的设计与实现
    开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql5.7数据库工具:Navicat11开发软件:PyCharm一、系统展示1.前台系统功能模块系统首页界面用户注册界面用户登录界面美食信息界面论坛交流界面留言板界面个人中心界面2.后台管理员功能模块管理员......
  • 基于springboot+vue的高校就业招聘系统小程序的设计与实现
    开发语言:Java框架:springboot+uniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql5.7数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9一、系统展示1.系统后台功能的实现1.1管理员功能模块管理员登录管理员功能界面企业管理用户管理职位招聘管理......
  • 如何利用数据分析改进项目进度管理
    数据分析能显著改善项目进度管理,主要是通过以下几点:提高决策质量、优化资源配置、预测项目风险、及时监测项目状态、增强沟通效率。其中,提高决策质量是数据分析中最为关键的一环。通过利用历史数据和实时数据,管理人员能够准确评估项目的进展情况,做出更快速和更精确的决策。例如,......
  • 【Spring-boot】项目部署到tomcat容器中
    一、pom.xml文件配置1.1在pom.xml里设置 <packaging>war</packaging>1.2移除嵌入式tomcat插件<!--排除tomcat--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId&g......
  • 【SpringBoot】一张图看懂初始化阶段-refreshContext
    springboot的启动分为两部分,一部分是注解,一部分是SpringApplication.run(Springboot.class,args),那么我们的注解又是如何嵌入到程序中呢?靠的就是refreshContext方法,同理,我们跟踪源码进入refreshContext方法@Override publicvoidrefresh()throwsBeansException,Illega......
  • Springboot 自动配置原理
    1.在SpringBoot项目中的引导类上有一个复合注解@SpringBootApplication,这个注解是对三个注解进行了封装,分别是:@SpringBootConfiguration 用于定义Bean和配置Spring容器。@EnableAutoConfiguration 实现自动化配置的核心注解@ComponentScan 扫描包里的组件2.其中......
  • springboot使用ai
    springboot下载ai的pom比如:想使用本地ollama(报错:依赖找不到)解决:<!--因为maven暂时下载不了SpringAIOllama依赖,引用Spring快照依赖包--><repositories><repository><id>central</id><url>https://repo.maven.apache.org......