DefaultRequestResolver.java
- package cn.home1.oss.lib.webmvc.internal;
- import static lombok.AccessLevel.PACKAGE;
- import static org.apache.commons.lang3.StringUtils.isNotBlank;
- import static org.springframework.http.HttpHeaders.ACCEPT;
- import static org.springframework.http.HttpMethod.DELETE;
- import static org.springframework.http.HttpMethod.POST;
- import static org.springframework.http.HttpMethod.PUT;
- import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
- import cn.home1.oss.lib.webmvc.api.RequestResolver;
- import lombok.Getter;
- import lombok.Setter;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.http.HttpMethod;
- import javax.servlet.http.HttpServletRequest;
- /**
- * Created by zhanghaolun on 16/8/18.
- */
- @Getter
- @Setter(PACKAGE)
- @Slf4j
- public class DefaultRequestResolver implements RequestResolver {
- private String loginEndpoint;
- public DefaultRequestResolver(final String loginEndpoint) {
- this.loginEndpoint = loginEndpoint;
- }
- @Override
- public Boolean isLoginRequest(final HttpServletRequest request) {
- final String reqContextPath = request.getContextPath();
- final String contextPath = reqContextPath.endsWith("/") ? reqContextPath : reqContextPath + "/";
- final boolean isLoginRequest = request.getRequestURI().equals(contextPath + this.loginEndpoint);
- if (log.isTraceEnabled()) {
- log.trace("contextPath: {}, requestUri: {}, isLoginRequest: {}", //
- request.getContextPath(), request.getRequestURI(), isLoginRequest);
- }
- return isLoginRequest;
- }
- /**
- * TODO 进一步改进.
- */
- @Override
- public Boolean isAjaxRequest(final HttpServletRequest request) {
- final HttpMethod httpMethod = HttpMethod.valueOf(request.getMethod());
- // final String contentTypeHeader = request.getHeader(CONTENT_TYPE);
- // final String content = isNotBlank(contentTypeHeader) ? contentTypeHeader : "";
- final String acceptHeader = request.getHeader(ACCEPT);
- final String accept = isNotBlank(acceptHeader) ? acceptHeader : "";
- final String underscore = request.getParameter("_");
- final boolean result = POST == httpMethod || PUT == httpMethod || DELETE == httpMethod //
- || accept.contains(APPLICATION_JSON_VALUE) //
- || isNotBlank(underscore);
- return result;
- }
- }