@Override
public void handleRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Supported methods and required session
checkRequest(request);
// Check whether a matching resource exists
Resource resource = getResource(request);
if (resource == null) {
logger.trace("No matching resource found - returning 404");
response.sendError(HttpServletResponse.SC_NOT_FOUND);
return;
}
// Check the resource's media type
MediaType mediaType = getMediaType(resource);
if (mediaType != null) {
if (logger.isTraceEnabled()) {
logger.trace("Determined media type '" + mediaType + "' for " + resource);
}
if (Objects.equal(mediaType, MediaType.TEXT_HTML)) {
WebRender render = new WebRender(beetlConfig.getGroupTemplate());
if (resource instanceof ServletContextResource) {
render.render(((ServletContextResource) resource).getPath(), request, response);
}
return;
}
} else {
if (logger.isTraceEnabled()) {
logger.trace("No media type found for " + resource + " - not sending a content-type header");
}
}
// Header phase
if (new ServletWebRequest(request, response).checkNotModified(resource.lastModified())) {
logger.trace("Resource not modified - returning 304");
return;
}
// Apply cache settings, if any
prepareResponse(response);
// Content phase
if (METHOD_HEAD.equals(request.getMethod())) {
setHeaders(response, resource, mediaType);
logger.trace("HEAD request - skipping content");
return;
}
if (request.getHeader(HttpHeaders.RANGE) == null) {
setHeaders(response, resource, mediaType);
writeContent(response, resource);
} else {
writePartialContent(request, response, resource, mediaType);
}
}
TemplateHttpRequestHandler.java 文件源码
java
阅读 38
收藏 0
点赞 0
评论 0
项目:java-platform
作者:
评论列表
文章目录