Apache Shiro. What is the difference between WebUtils.isWeb(...) and WebUtils.isHttp(...)?

StackOverflow https://stackoverflow.com/questions/20091720

  •  02-08-2022
  •  | 
  •  

質問

I'm just curious what is the conceptual difference between two almost identical methods isWeb and isHttp in org.apache.shiro.web.utils.WebUtils class and how their behavior differs from each other?

public static boolean isWeb(Object requestPairSource) {
    return requestPairSource instanceof RequestPairSource
            && isWeb((RequestPairSource) requestPairSource);
}

public static boolean isHttp(Object requestPairSource) {
    return requestPairSource instanceof RequestPairSource
            && isHttp((RequestPairSource) requestPairSource);
}

private static boolean isWeb(RequestPairSource source) {
    ServletRequest request = source.getServletRequest();
    ServletResponse response = source.getServletResponse();
    return request != null && response != null;
}

private static boolean isHttp(RequestPairSource source) {
    ServletRequest request = source.getServletRequest();
    ServletResponse response = source.getServletResponse();
    return request instanceof HttpServletRequest
            && response instanceof HttpServletResponse;
}

P.S. This is Shiro and Java related question as I'm newbie to both.

役に立ちましたか?

解決

Difference is that isHttp checks that request and response instance of HttpServletRequest and HttpServletResponse, not just ServletRequest or ServletResponse and that request/response can provide you HTTP info like headers, methods etc. Both are interfaces and inplementation depends on vendor container/app server

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top