List of usage examples for com.liferay.portal.kernel.servlet HttpHeaders IF_NONE_MATCH
String IF_NONE_MATCH
To view the source code for com.liferay.portal.kernel.servlet HttpHeaders IF_NONE_MATCH.
Click Source Link
From source file:com.liferay.httpservice.servlet.ResourceServlet.java
License:Open Source License
@Override public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { try {//from ww w . j a v a2 s . c o m String requestURI = getRequestURI(request); int aliasIndex = requestURI.indexOf(_alias); if (aliasIndex == 0) { requestURI = requestURI.substring(_alias.length()); } if (Validator.isNotNull(_name)) { requestURI = _name.concat(requestURI); } URL url = _httpContext.getResource(requestURI); if (url == null) { response.setStatus(HttpServletResponse.SC_NOT_FOUND); return; } URLConnection urlConnection = url.openConnection(); long lastModified = urlConnection.getLastModified(); if (lastModified > 0) { long ifModifiedSince = request.getDateHeader(HttpHeaders.IF_MODIFIED_SINCE); if ((ifModifiedSince > 0) && (ifModifiedSince == lastModified)) { response.setContentLength(0); response.setDateHeader(HttpHeaders.LAST_MODIFIED, lastModified); String ifNoneMatch = request.getHeader(HttpHeaders.IF_NONE_MATCH); if (Validator.isNotNull(ifNoneMatch) && !ifNoneMatch.equals('0')) { response.setHeader(HttpHeaders.ETAG, ifNoneMatch); } response.setStatus(HttpServletResponse.SC_NOT_MODIFIED); return; } } if (lastModified > 0) { response.setDateHeader(HttpHeaders.LAST_MODIFIED, lastModified); } String fileName = getRequestURI(request); int slashIndex = fileName.lastIndexOf(StringPool.SLASH); if (slashIndex != -1) { fileName = fileName.substring(slashIndex + 1); } String contentType = _httpContext.getMimeType(fileName); if (isSupportsRangeHeader(contentType)) { sendFileWithRangeHeader(request, response, fileName, urlConnection.getInputStream(), urlConnection.getContentLength(), contentType); } else { ServletResponseUtil.sendFile(request, response, fileName, urlConnection.getInputStream(), urlConnection.getContentLength(), contentType); } } catch (Exception e) { PortalUtil.sendError(HttpServletResponse.SC_NOT_FOUND, e, request, response); } }