2012-09-15 4 views
1

je devais convertir le script PHP suivant dans une page JSP scriplet:déclaration coverting PHP en Java

<?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'); 
?> 

j'ai pu faire:

<%! 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 ? 
%> 

Mais je suis incapable de convertir la dernière déclaration dans le script PHP à JSP. Je viens de comprendre cela en Java:

new GregorianCalendar().getTime() + cacheExpire 

mais cela est faux de mettre en œuvre. Comment convertir la dernière déclaration de PHP en Java?

Répondre

0

Essayez ceci:

response.setDateHeader("Expires", System.currentTimeMillis() + cacheExpire); 
0

Vous devez utiliser Calender.get(Calendar.YEAR) etc. pour y parvenir. Il n'y a aucun moyen d'exprimer le format de date dans Java comme vous pouvez le faire en PHP, cependant, vous pouvez obtenir les mêmes valeurs de champs.

0

Vous devez utiliser la classe SimpleDateFormat pour formater l'objet Date en Java. Par exemple, vérifiez le code suivant, remplacez stringDatePattern par le format de date valide comme "yyyy-MM-dd".

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

Dans l'extrait ci-dessus, new Date() retourne l'heure courante, qui est formaté en utilisant SimpleDateFormat selon le modèle adopté. Ensuite, vous venez de concaténer la variable cacheExpire.

+0

et comment y ajouter cacheExpire? – saplingPro

+0

Vous pouvez simplement l'ajouter en utilisant l'opérateur "+". Edited le code indiquant la même chose. – Arjun

0

Cet exemple fait exactement ce que vous voulez:

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())); 
1

Ceci est l'équivalent exact de votre code PHP ci-dessus:

<%! 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); 
%> 

partie la plus délicate est de convertir entre les différents jetons de format de date de java et php et obtenir la date java sur le fuseau horaire GMT, j'espère que vous le trouverez utile :-)