文档章节

jsp页面中静态文件的时间戳

sskicgah
 sskicgah
发布于 2016/03/17 19:19
字数 405
阅读 58
收藏 0

在开发、调试js时,经常碰到firefox、chrome的缓存问题,有时候清空缓存还不生效,有时候还重启tomcat什么的,也麻烦。

后来想到用时间戳来区别版本,但是,又不是每次所有的代码都要更新,每次访问都用系统的时间戳不好用,缓存就成摆设了。

再后来,想到可以根据每个js文件的修改时间来设置,其实对动态脚本一窍不通,因为页面的风格就是html+ajax,冠以jsp的后缀而已。最后用土办法解决了,代码大概就是下面的内容了,getTime.jsp。

<%!
public long[] getTime(String basePath, String... files) {
	int size = files.length;
	long[] t = new long[size];
	for(int i = 0; i < size; i++) {
		t[i] = (new File(basePath + files[i])).lastModified();
	}
	return t;
}
%>

传入路径、需要获取时间戳的文件名,然后返回long类型的最后修改时间。页面代码大概如下:

<%@page contentType="text/html;charset=UTF-8" language="java" import="java.io.File" errorPage=""%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<%@include file="getTime.jsp"%>
<%
String web_path=request.getContextPath();
String realPath = application.getRealPath("/");
long t[] = getTime(realPath, "/js/common.js", "/view/frame/js/main.js");
%>
<head>
	<!-- 省略 -->
</head>
<body>
	<!-- 省略 -->
	<script type="text/javascript" src="<%=web_path%>/js/jquery-1.8.3.min.js"></script>
	<script type="text/javascript" src="<%=web_path%>/js/common.js?v=<%=t[0]%>"></script>
	<script type="text/javascript">var web_path = '<%=web_path%>' || getContextPath();</script>
	<script type="text/javascript" src="<%=web_path%>/view/frame/js/main.js?v=<%=t[1]%>"></script>
</body>
</html>

最后在页面上可以看到时间戳了。

不懂别人怎么做的。大笑暂时简单解决了问题,就是没放到项目中使用,纯属测试代码。

© 著作权归作者所有

sskicgah

sskicgah

粉丝 7
博文 43
码字总数 32720
作品 0
福州
程序员
私信 提问
web 基础巩固——JSP基础

本文按照官网文档总结,但是有可能会理解错误,学习时尽量和其他网站进行对比,同时也欢迎指出错误,好让我及时改正 什么是JSP页面? JSP页面是一个文本文档,包含两种类型的文本:静态数据,...

SXJR
2018/11/26
0
0
Java程序员从笨鸟到菜鸟之(十八)JSP基本语法与动作指令

本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188 Jsp,通常的被大家认为是做网页的前台界面,我刚学习的时候,说实话,真没把他当回事,学的也是囫囵吞枣,有时...

长平狐
2012/11/12
116
0
(JavaEE-07)JSP.md

JSP JSP全称是Java Server Pages,它和Servlet技术一样,都是SUN公司定义的一种用于开发动态Web资源的技术。JSP的编写就像编写HTML一样简单,但是与HTML不同的是,在JSP中,可以编写Java代码...

_-Leon-_
2014/07/04
109
0
@include与jsp:include的区别

1.可以使用一个JSP指令或者一个标准行为,在JSP页面中引入其他的页面片段。 2. include指令:在翻译阶段(将JSP页面转换成servlet的阶段),JSP的include指令会读入指定的页面中的内容,并将...

随智阔
2014/03/08
57
0
和的区别

<%@include%>和jsp:include的区别,发现了一些东西的。 <%@include%>:页面请求之前预编译,所有代码包含进来之后,一起进行处理,把所有代码合在一起,编译成一个servlet jsp:include:所有...

Alex_曰生
2015/04/04
239
0

没有更多内容

加载失败,请刷新页面

加载更多

关于运维,该怎么决定它的方向,这个似工作又似兴趣的存在

我之前主要从事网络、桌面、机房管理等相关工作,这些工作使我迷惘,这应该是大多数运维人都经历过的过程; 18年国庆,我从国内前三的消费金融公司裸辞,下海创业,就是想要摆脱这样的困境。...

网络小虾米
3分钟前
1
0
Java Timer的用法

Timer timer = new Timer(); timer.schedule(new TimerTask() { public void run() { System.out.println("11232"); } }, 200000 , 1000); public void schedule(TimerTask task, long delay......

林词
7分钟前
3
0
使用js动态加载外部js文件以及动态创建script脚本

动态脚本指的是在页面加载时不存在,但将来的某一时刻通过修改该DOM动态添加的脚本。和操作HTML元素一样,创建动态脚本也有两种方式:插入外部文件和直接插入JavaScript代码。 动态加载外的外...

Bing309
14分钟前
2
0
从零开始入门 K8s | Kubernetes 网络概念及策略控制

作者 | 阿里巴巴高级技术专家 叶磊 一、Kubernetes 基本网络模型 本文来介绍一下 Kubernetes 对网络模型的一些想法。大家知道 Kubernetes 对于网络具体实现方案,没有什么限制,也没有给出特...

阿里巴巴云原生
18分钟前
2
0
天气获取

本文转载于:专业的前端网站➨天气获取 $.get("http://wthrcdn.etouch.cn/WeatherApi", { citykey: cityCode }, function (d) { //创建文档对象 var parser = new ......

前端老手
19分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部