- 示例代码如下
@Component("/file/download")
public class FileDownloadHandler extends AbstractController implements LastModified {
private Map<String, Long> cacheMap = new ConcurrentHashMap<>() ;
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
String code = request.getParameter("code");
response.setHeader("Cache-Control", "public, max-age=60, must-revalidate");
response.setContentType("application/octet-stream");
this.doBusi(response.getWriter(), code);
outputStream.close();
return null;
}
private void doBusi(PrintWriter writer, String code){
writer.write("<h2>hello world</h2>");
}
@Override
public long getLastModified(HttpServletRequest request) {
String code = request.getParameter("code");
cacheMap.computeIfAbsent(code, key -> this.toEpochMilli(LocalDateTime.now())) ;
return cacheMap.get(code);
}
public static long toEpochMilli(LocalDateTime localDateTime) {
return localDateTime.toInstant(ZoneOffset.of("+8")).toEpochMilli();
}
}