1

我必须将以下 PHP 脚本转换为 JSP 脚本:

<?php
 $cache_expire = 60*60*24*365;
 header("Pragma: public");
 header("Cache-Control: max-age=".$cache_expire);
 header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$cache_expire) . ' GMT');
?>

我能够做到:

<%! long cacheExpire = 60*60*24*365; %>

<% 
 response.setHeader("Pragma", "public");
 response.setHeader("Cache-Control", "max-age=" + cacheExpire);
 response.setHeader("Expires", "....?..."); // what do I put in the second string ?
%>

但我无法将 PHP 脚本中的最后一条语句转换为 JSP。我只是在Java中理解了这一点:

new GregorianCalendar().getTime() + cacheExpire

但这实施起来是不正确的。

如何将 PHP 的最后一条语句转换为 Java 语句?

4

5 回答 5

1

这与上面的 PHP 代码完全相同:

<%! long cacheExpire = 60*60*24*365; %>

<% 
 response.setHeader("Pragma", "public");
 response.setHeader("Cache-Control", "max-age=" + cacheExpire);

 DateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss");
 df.setTimeZone(TimeZone.getTimeZone("GMT"));
 long expire = (long) System.currentTimeMillis() + (cacheExpire * 1000);
 String expires = df.format(new Date(expire)) + " GMT";

 response.setHeader("Expires", expires);
%>

棘手的部分是在 java 和 php 的不同日期格式标记之间进行转换,并在 GMT 时区获取 java 日期,希望你觉得它有用:-)

于 2012-09-15T11:53:09.343 回答
0

尝试这个:

response.setDateHeader("Expires", System.currentTimeMillis() + cacheExpire);
于 2012-09-15T11:00:05.610 回答
0

你必须使用Calender.get(Calendar.YEAR)etc. 来实现这一点。在 Java 中无法像在 PHP 中那样表达日期格式,但是,您可以获得相同的字段值。

于 2012-09-15T11:00:24.347 回答
0

您应该使用SimpleDateFormat类来格式化DateJava 中的对象。例如,检查以下代码,替换stringDatePattern为有效的日期格式,如"yyyy-MM-dd".

new SimpleDateFormat(stringDatePattern).format(new Date()) + cacheExpire

在上面的代码片段中,new Date()返回当前时间,SimpleDateFormat根据传递的模式格式化。然后你只需连接cacheExpire变量。

于 2012-09-15T11:05:38.080 回答
0

该示例完全符合您的要求:

int cacheExpire = 60 * 60 * 24 * 365;

Calendar cal = Calendar.getInstance();
cal.add( Calendar.SECOND, cacheExpire );
SimpleDateFormat format = new SimpleDateFormat( "EEE, dd MMM yyyy HH:mm:ss 'GMT'" );
format.setTimeZone( TimeZone.getTimeZone( "GMT" ) );

response.setHeader( "Expires", format.format( cal.getTime() ) );
于 2012-09-15T11:41:32.500 回答