迁移web资源到webapp目录过程及注意事项

刚入职一家公司,项目时新搭建的,main目录下只有java和resource目录,没有webapp目录。emmm,没有webapp目录tomcat怎么监测页面的变动,怎么热加载吗????
技术负责人告诉我写完代码重启。这操作简直丧尽天良,改一段代码想看效果就要重启???觉得996不够要007吗?作为一个优秀的程序猿(hhh,老脸一红),我们要避免做重复的和毫无意义的工作,不仅提高开发效率,提高公司项目的推进速度,也是节约自己的时间。(问君能几何)。
本人就开始了一番大刀阔斧的包结构调整,遇到的问题不少,还好,八小时解决了。

1.建立webapp目录

在这里插入图片描述
鼠标单击main目录,使用快捷键alt+insert选择Directory,
在这里插入图片描述
在如下输入框里输入webapp再按Enter键,文件夹创建完成。
在这里插入图片描述

2.将webapp目录设置为项目的web Module及web Resource Directory

(1)打开file-project structure
在这里插入图片描述
(2)在弹出的project Structure对话框中选择 Modules,进行web模块的添加操作(如果项目中已有web模块可以跳过此步操作)
在这里插入图片描述
(3)指定Module和Resource的路径
在这里插入图片描述
其中web.xml可以从其他项目里复制一个
我的web.xml如下

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
		 id="WebApp_ID" version="2.5">


</web-app>

配置好后点击确定,webapp 模块配置就完成了

3.迁移你的web资源到webapp目录下

这步比较简单了,在IDE里移动文件夹即可,有Refactor的资源IDE会自动加测出来帮你修改路径。

4.修改配置文件

项目中使用的页面配置映射地址方式为spring.thymeleaf,如果是springmvc项目可以自行搜索页面资源映射路径配置。
我项目中的页面目前放在这里
在这里插入图片描述
配置文件路径映射修改为如下

spring.thymeleaf:
  prefix: file:./src/main/webapp/templates/
  suffix: .html
  mode: HTML5
  encoding: UTF-8
  #热部署文件,页面不产生缓存,及时更新, 在开发阶段设置为false
  cache: false

5.修改WebMvcConfigurer类,添加资源头和映射关系

(1)找到你项目中WebMvcConfigurer的实现类
在这里插入图片描述

(2)在此类中找到重写的addResourceHandlers方法,在其中添加静态资源路径(这里添加后通过浏览器就能直接访问tomcat下对应目录的文件,如果不添加的话,浏览器访问会被tomcat识别为web请求,去寻找后台接口了)
在这里插入图片描述
(3)找到重写的addInterceptors方法(过滤器,就是spring的安全策略,允许浏览器直接访问这些资源),把需要能直接访问的文件夹或文件类型添加进去,它的起始目录是第二步中配置好的ResourceLocations。
在这里插入图片描述

OK 现在试试启动项目访问文件吧,应该可以了,如果发现页面上有不能访问的静态资源,可能是你页面里写的资源路径有误。批量替换一下根目录即可。

如果你使用的部署方式是war包构建,那么文章看到这里就足够了。如果使用的部署方式是jar包,那么请继续看下去。

我项目中构建工具是Gradle,不是maven。。。
由于项目需要打成jar包部署为docker镜像再运行,所以打jar包就有严格的要求了。修改完webapp目录后必须进行构建配置才能使webapp目录下的文件打包到jar包内。配置方式如下:
(1)打开你项目中的build.gradle文件
在这里插入图片描述
(2)在jar一项中添加如下构建
在这里插入图片描述

    from('src/main/webapp/static'){
        into 'static'
    }
    from('src/main/webapp/templates'){
        into 'templates'
    }

tip:我项目中 src/main/webapp/static 目录下放的是所有的js和css ,src/main/webapp/templates下放的是所有html页面。

(3)作为一个适配多环境的项目必然有多版本配置文件
在这里插入图片描述
除了local配置文件外,其他配置文件中将之前的spring.thymeleaf:配置项改回
在这里插入图片描述
好了,测试一下项目部署情况吧》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章