Tomcat 的 work 目录缓存导致的JSP页面图片更新问题

一、问题分析

1. 修改后重新部署没有变化

    笔者之前部署了一个后台管理项目,通过它来发布课程内容,其中有一个 JSP 课程页面,在该 JSP 页面里也引用了类文件 Constant.java 里的一个变量(ALIYUN_OSS_PATH),该变量的值是一个域名地址(static.aaa.com),在该 JSP 页面基于这个地址来加载和显示图片(static.aaa.com/x.png)。

# 在 jsp 页面获取 java 类的变量值
<c:set var="aliyun" value="<%=com.xxx.admin.common.Constants.ALIYUN_OSS_PATH%>"/>

    现在因为项目需要,在 Constant.java 文件里更改了这个该变量的值:

//修改前
//public static final String ALIYUN_OSS_PATH = "http://static.aaa.com/";
//修改后
public static final String ALIYUN_OSS_PATH = "http://static.bbb.com/";

    然后重新部署,但是却发现所有的图片都打不开了。但是在浏览器展示的页面上拷贝图片地址,发现与和之前的图片地址没有任何变化:static.aaa.com/x.png, 本来希望出现的变化是:static.bbb.com/x.png

    总之一句话,就是项目修改并重新部署后 JSP 页面的图片路径没有更新。

2. 图片无法正常显示分析

原先浏览器入口路径是 admin.aaa.com, 图片请求地址是:static.aaa.com/x.png ;

现在浏览器入口路径是 admin.bbb.com, 图片请求地址仍然是:static.aaa.com/x.png, 并没有变成我希望的修改后的 static.bbb.com.

    这里图片为什么之前能打开?现在重新部署后,路径没有变化为什么反而打不开呢?这个与部署后,进入网站后台入口地址发生了变化有关系:

    浏览器是通过 admin.aaa.com 进入后台管理,发起请求时,http 头的 referer url 路径就是入口路径:admin.aaa.com,这与 OSS 服务端设置的 referrer url 白名单一致,所以能正常打开图片。现在更新部署后,请求的图片路径没有变化,仍然是 static.aaa.com/x.png,但是管理后台的入口地址变更为: admin.bbb.com , 所以 header 头里带的 referer url 路径就变成 admin.bbb.com. 这个与 OSS 服务端设置的 refer url 白名单不一致,所以导致图片无法正常请求。

    通过 referer url 实现“访问控制”,其原理可以可以参考: <HTML页面跨域请求图片资源报错>

二、问题排查   

    一开始是怀疑浏览器的缓存导致,重新清理了浏览器的缓存重启浏览器,再次打开后台页面,仍然没有任何改变。

    问题进一步排除,继续去查看项目部署后台的文件,发现有更新的 java源文件,在编译后的 class 文件确实已经更新完毕。为什么 jsp 页面图片就是无法正常打开了。

    排除了以上问题后,开始怀疑在【服务端的Tomcat是否有类似浏览器一样的缓存】,经过查询后,定位到了 Tomcat 下的 WORK 目录。原来所有的 JSP 页面都会编译成 _jsp.java  和 _jsp.class 文件,存储在这个目录下,如果 jsp 发生了改变,tomcat 会重新编译,在前端请求时候将重新编译后的 _jsp.class 文件载入内存:

    现在问题明白了。因为我的 JSP 文件引用 java 类文件了的 oss 路径变量:

<c:set var="aliyun" value="<%=com.xxx.admin.common.Constants.ALIYUN_OSS_PATH%>"/>

    虽然我修了 java 源代文件里的 ALIYUN_OSS_PATH 变量的值后重新部署,但是 work 目录下的 JSP 文件本身没有进行任何修改,所以在重新部署后,JSP 不会重新编译,在发起请求时,tomcat 仍然调用的是之前缓存的 _jsp.class 文件,该文件里面 ALIYUN_OSS_PATH 值并没更新。所以图片加载地址就没有变化,仍然是之前的:static.aaa.com/x.png, 而不是更新后的 static.bbb.com/x.png

三、问题解决

方式1:

    清理 Tomcat 缓存,我们可以通过执行下面的命令:

rm -rf /path/to/tomcat/work/*

方式2:

    用 RD 命令删除整个目录,只需打开 tomcat/bin/startup.bat 文件,在开头加入:

rd/s/q "/Tomcat path/work/Catalina"

    这样每次启动Tomcat的时候就会先删除页面缓存了,不用担心页面修改后没被重新编译。

四、总结

    如果 JSP 的引用了 java 源代码里的变量。如果该变量的值发生了变化,在重新部署后,记得将Tomcat 下 work 目录里对应的 JSP 文件的缓存进行清理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/303234.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv5改进之---EIoU,SIoU,AlphaIoU,FocalEIoU,Wise-IoU

本文主要针对yolov5的iou损失函数进行改进,主要涵盖EIoU,SIoU,AlphaIoU,FocalEIoU,Wise-IoU这几种损失。 一、首先会对这几种损失进行介绍: 1、背景 由于EIOU是在CIOU的基础上改进的,为方便理解,此处贴出CIOU的计算公式,其他GIOU、DIOU不作介绍。 CIOU公式如下所示: b ,…

(二)Explain使用与详解

explain中的列 sql语句: EXPLAIN SELECT * from user WHERE userId=1340; 执行结果: 1. id列 id列的编号是 select 的序列号,有几个 select 就有几个id,并且id的顺序是按 select 出现的顺序增长的。 id列越大执行优先级越高,id相同则从上往下执行,id为NULL最后执行…

基于yolov2深度学习网络的车辆行人检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 .......................................................... load yolov2.mat% 加载训练好的…

余震强度预测能力升级,Nature 刊文认证基于神经网络的模型性能优于传统模型

作者&#xff1a;李宝珠 编辑&#xff1a;李玮栋、xixi&#xff0c;三羊 地震的发生涉及诸多变量&#xff0c;「预测」存在挑战&#xff0c;但余震发生次数及强度的预测已取得重大进展。 2023 年 12 月 18 日 23 时 59 分&#xff0c;甘肃省临夏州积石山县发生 6.2 级地震&…

华清远见作业第二十三天——IO(第六天)

使用有名管道完成两个进程之间相互通信 代码&#xff1a; 创建管道&#xff1a; #include<a.h> int main(int argc, const char *argv[]) {//创建有名管道文件if(mkfifo("./myfifo1", 0664) ! 0){perror("mkfifo1 error");return -1;}printf("…

Open3D mesh模型平滑处理 (9)

Open3D mesh模型平滑处理 &#xff08;9&#xff09; 一、模型平滑示意图二、平滑函数介绍三、具体实现1.代码 一、模型平滑示意图 生成球体并添加高斯噪声的模型 平滑后&#xff0c;参数简单设置一下 二、平滑函数介绍 在Open3D中&#xff0c;filter_smooth_taubin方法的三…

分享一个小妙招,把文档制作成可翻页的电子书

​据统计数据显示&#xff0c;电子书的阅读人数正在逐年增长。随着人们对阅读方式的不断追求&#xff0c;可翻页的电子书将会成为一种新的趋势。因此&#xff0c;掌握这个小妙招&#xff0c;将有助于你在竞争激烈的市场中脱颖而出。 这个小妙招很简单&#xff0c;跟着我简单操作…

前端根据文件url路径判断文件预览或者下载以及自定义

需求&#xff1a; 点击不同附件浏览器查看效果不同&#xff0c;比如附近类型为pdf&#xff0c;则打开一个新的tab页在线预览&#xff0c;如果是zip包等&#xff0c;则直接下载&#xff0c;如果是image&#xff0c;则弹窗展示当前图片 如下图&#xff0c;服务端一般会把文件放…

PR、希喂、百利主食冻干哪款更好?铲龄8年真实喂养测评

随着对猫咪主食健康和营养问题的关注度提高&#xff0c;越来越多的铲屎官开始重视科学养猫。主食冻干因其模拟猫咪原始捕猎猎物模型配比、低温加工的特点&#xff0c;被认为是最符合猫咪饮食天性的选择。相比传统的膨化猫粮&#xff0c;主食冻干中的淀粉和碳水化合物添加较少&a…

机器学习(四) -- 模型评估(4)

系列文章目录 机器学习&#xff08;一&#xff09; -- 概述 机器学习&#xff08;二&#xff09; -- 数据预处理&#xff08;1-3&#xff09; 机器学习&#xff08;三&#xff09; -- 特征工程&#xff08;1-2&#xff09; 机器学习&#xff08;四&#xff09; -- 模型评估…

金和OA C6 CarCardInfo.aspx SQL注入漏洞复现

0x01 产品简介 金和网络是专业信息化服务商,为城市监管部门提供了互联网+监管解决方案,为企事业单位提供组织协同OA系统开发平台,电子政务一体化平台,智慧电商平台等服务。 0x02 漏洞概述 金和OA C6 CarCardInfo.aspx接口处存在SQL注入漏洞,攻击者除了可以利用 SQL 注入漏洞…

2024腾讯云免费服务器申请入口,限制及申请攻略亲测!

腾讯云免费服务器申请入口 https://curl.qcloud.com/FJhqoVDP 免费服务器可选轻量应用服务器和云服务器CVM&#xff0c;轻量配置可选2核2G3M、2核8G7M和4核8G12M&#xff0c;CVM云服务器可选2核2G3M和2核4G3M配置&#xff0c;腾讯云百科txybk.com分享2024年最新腾讯云免费服务器…

01.08

#include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {//窗口设置//设置窗口名称this->setWindowTitle("chat");//设置窗口图标this->setWindowIcon(QIcon("D:\\Qt\\pictrue\\pictrue\\plant.svg"));//设置窗口大小this…

SpringBoot集成Camunda

一&#xff1a;pom.xml 因camunda集成SpringBoot对SpringBoot的版本和JDK的版本都有一定的要求&#xff0c;所以这里贴个完整的依赖。可以去官网找每个SpringBoot的版本对应的camunda版本。 <?xml version"1.0" encoding"UTF-8"?> <project x…

市场复盘总结 20240108

仅用于记录当天的市场情况,用于统计交易策略的适用情况,以便程序回测 短线核心:不参与任何级别的调整,采用龙空龙模式 今日空仓 最常用的二种方法: 方法一:指标选股找强势股 select * from dbo.ResultAll where 入选类型 like %指标选股% and 入选日期=20240108;方法二…

基于Java SSM框架实现时间管理系统项目【项目源码+论文说明】

基于java的SSM框架实现时间管理系统演示 摘要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于时间管理系统当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了时间管理…

第二百五十三回

文章目录 概念介绍使用方法示例代码 概念介绍 进度条是常用的组件之一&#xff0c;它主要用来显示某种动作的完成进度。Flutter提供了多种进度条组件&#xff0c;常用的是水平进度条&#xff1a;LinearProgressIndicator&#xff1b;圆形进度条 :CircularProgressIndicator和R…

HPM6750开发笔记《DMA接收和发送数据UART例程深度解析》

目录 概述&#xff1a; 端口设置&#xff1a; 代码分析&#xff1a; 运行现象&#xff1a; 概述&#xff1a; DMA&#xff08;Direct Memory Access&#xff09;是一种计算机系统中的数据传输技术&#xff0c;它允许数据在不经过中央处理器&#xff08;CPU&#xff09;的直…

CCF模拟题 202305-1 重复局面

试题编号&#xff1a; 202305-1 试题名称&#xff1a; 重复局面 时间限制&#xff1a; 1.0s 内存限制&#xff1a; 512.0MB 题目背景 国际象棋在对局时&#xff0c;同一局面连续或间断出现3次或3次以上&#xff0c;可由任意一方提出和棋。 问题描述 国际象棋每一个局面可以用…

如何打开wps的备份中心查找备份文件

备份中心在我们使用WPS Office时扮演着重要的角色。经常保存文件的同时&#xff0c;我们也应该学会备份文件&#xff0c;以免意外损失。本文将向您介绍如何使用WPS备份中心来查找并恢复备份文件&#xff0c;方便您在需要时快速找到所需文件。 图片来源于网络&#xff0c;如有侵…