javax.servlet.ServletRequestWrapper#getRequest ( )源码实例Demo

下面列出了javax.servlet.ServletRequestWrapper#getRequest ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: piranha   文件: DefaultServletRequestDispatcher.java
private HttpServletRequest findHttpServletRequestInChain(ServletRequest request) {
    ServletRequest currentRequest = request;
    while (currentRequest instanceof ServletRequestWrapper) {
        ServletRequestWrapper wrapper = (ServletRequestWrapper) currentRequest;
        currentRequest = wrapper.getRequest();

        if (currentRequest instanceof HttpServletRequest) {
            return (HttpServletRequest) currentRequest;
        }
    }
    return null;
}
 
源代码2 项目: piranha   文件: DefaultAsyncContext.java
/**
 * Unwrap the servlet request.
 *
 * @param <T> the type.
 * @param request the request to unwrap.
 * @return the unwrapped request.
 */
@SuppressWarnings("unchecked")
private <T extends ServletRequest> T unwrapFully(ServletRequest request) {
    ServletRequest currentRequest = request;
    while (currentRequest instanceof ServletRequestWrapper) {
        ServletRequestWrapper wrapper = (ServletRequestWrapper) currentRequest;
        currentRequest = wrapper.getRequest();
    }
    return (T) currentRequest;
}
 
源代码3 项目: piranha   文件: DefaultWebApplicationRequest.java
public HttpServletRequest unwrap(HttpServletRequest request) {
    ServletRequest currentRequest = request;
    while (currentRequest instanceof ServletRequestWrapper) {
        ServletRequestWrapper wrapper = (ServletRequestWrapper) currentRequest;
        currentRequest = wrapper.getRequest();
    }
    return (WebApplicationRequest) currentRequest;
}
 
源代码4 项目: piranha   文件: DefaultServletRequestDispatcher.java
private void asyncNonHttpForward(AsyncNonHttpDispatchWrapper asyncNonHttpDispatchWrapper, ServletResponse servletResponse) throws ServletException, IOException {
    // A typical chain to arrive here is DefaultAsyncContext#dispatch -> DefaultAsyncDispatcher#dispatch -> forward -> asyncForward -> asyncNonHttpForward

    ServletRequest asyncStartRequest = asyncNonHttpDispatchWrapper.getRequest();

    if (asyncStartRequest instanceof ServletRequestWrapper) {

        ServletRequestWrapper applicationProvidedWrapper = (ServletRequestWrapper) asyncStartRequest;

        HttpServletRequest httpServletRequestInChain = findHttpServletRequestInChain(applicationProvidedWrapper);

        if (httpServletRequestInChain != null) {

            // We swap our asyncHttpDispatchWrapper from being the head of the chain, with a new wrapper, wrapping the HttpServletRequest that we found, and put
            // that in between the request that was provided by the application and the request it is wrapping.
            ServletRequest wrappedRequest = applicationProvidedWrapper.getRequest();

            AsyncHttpDispatchWrapper newAsyncHttpDispatchWrapper = new AsyncHttpDispatchWrapper(null);
            // Note that by doing this, methods called on HttpServletRequestWrapper itself (and not its super interface) will throw.
            newAsyncHttpDispatchWrapper.setRequest(wrappedRequest);

            applicationProvidedWrapper.setRequest(newAsyncHttpDispatchWrapper);

            // Original chain: asyncNonHttpDispatchWrapper -> applicationProvidedWrapper (asyncStartRequest) -> wrappedRequest -> .... -> HttpServletRequest
            // New chain: applicationProvidedWrapper (asyncStartRequest) -> newAsyncHttpDispatchWrapper -> wrappedRequest -> .... -> HttpServletRequest
            invokeTargetAsyncServlet(asyncStartRequest, httpServletRequestInChain, newAsyncHttpDispatchWrapper, servletResponse);
        }

    }
}
 
 同类方法