TemplateHttpRequestHandler.java 文件源码

java
阅读 38 收藏 0 点赞 0 评论 0

项目:java-platform 作者:
@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);
    }
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号