java类javax.servlet.DispatcherType的实例源码

Minijax.java 文件源码 项目:minijax 阅读 27 收藏 0 点赞 0 评论 0
private void addApplication(final ServletContextHandler context, final MinijaxApplication application)
        throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {

    // (0) Sort the resource methods by literal length
    application.sortResourceMethods();

    // (1) Add Minijax filter (must come before websocket!)
    context.addFilter(new FilterHolder(new MinijaxFilter(application)), "/*", EnumSet.of(DispatcherType.REQUEST));

    // (2) WebSocket endpoints
    if (OptionalClasses.WEB_SOCKET_UTILS != null) {
        OptionalClasses.WEB_SOCKET_UTILS
                .getMethod("init", ServletContextHandler.class, MinijaxApplication.class)
                .invoke(null, context, application);
    }

    // (3) Dynamic JAX-RS content
    final MinijaxServlet servlet = new MinijaxServlet(application);
    final ServletHolder servletHolder = new ServletHolder(servlet);
    servletHolder.getRegistration().setMultipartConfig(new MultipartConfigElement(""));
    context.addServlet(servletHolder, "/*");
}
AssetServlet.java 文件源码 项目:gitplex-mit 阅读 32 收藏 0 点赞 0 评论 0
@Override
protected void putHeaders(HttpServletResponse response, HttpContent content, long contentLength) {
    super.putHeaders(response, content, contentLength);
    HttpFields fields = ((Response) response).getHttpFields();
    if (requestHolder.get().getDispatcherType() == DispatcherType.ERROR) {
        /*
         * Do not cache error page and also makes sure that error page is not eligible for 
         * modification check. That is, error page will be always retrieved.
         */
           fields.put(HttpHeader.CACHE_CONTROL, "must-revalidate,no-cache,no-store");
    } else if (requestHolder.get().getRequestURI().equals("/favicon.ico")) {
        /*
         * Make sure favicon request is cached. Otherwise, it will be requested for every 
         * page request.
         */
        fields.put(HttpHeader.CACHE_CONTROL, "max-age=86400,public");
    }
}
GraphiakApplication.java 文件源码 项目:graphiak 阅读 30 收藏 0 点赞 0 评论 0
@Override
public void run(@Nonnull final GraphiakConfiguration configuration,
        @Nonnull final Environment environment) throws Exception {

    // Enable CORS
    final FilterRegistration.Dynamic cors = environment.servlets()
            .addFilter("cors", CrossOriginFilter.class);
    cors.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), true,
            "/*");

    // get Riak client
    final RiakClient client = configuration.getRiak().build();

    final MetricStore store = new MetricStore(client);
    environment.lifecycle().manage(new MetricStoreManager(store));

    // Configure the Netty TCP server
    configuration.getNetty().build(environment, store);

    // Resources
    environment.jersey().register(new DashboardResource());
    environment.jersey().register(new MetricsResource(store));
    environment.jersey().register(new EventsResource());
    environment.jersey().register(new PingResource());
    environment.jersey().register(new VersionResource());
}
ApplicationHttpRequest.java 文件源码 项目:lazycat 阅读 38 收藏 0 点赞 0 评论 0
/**
 * Set the request that we are wrapping.
 *
 * @param request
 *            The new wrapped request
 */
void setRequest(HttpServletRequest request) {

    super.setRequest(request);

    // Initialize the attributes for this request
    dispatcherType = (DispatcherType) request.getAttribute(Globals.DISPATCHER_TYPE_ATTR);
    requestDispatcherPath = request.getAttribute(Globals.DISPATCHER_REQUEST_PATH_ATTR);

    // Initialize the path elements for this request
    contextPath = request.getContextPath();
    pathInfo = request.getPathInfo();
    queryString = request.getQueryString();
    requestURI = request.getRequestURI();
    servletPath = request.getServletPath();

}
FilterMap.java 文件源码 项目:apache-tomcat-7.0.73-with-comment 阅读 32 收藏 0 点赞 0 评论 0
public String[] getDispatcherNames() {
    ArrayList<String> result = new ArrayList<String>();
    if ((dispatcherMapping & FORWARD) > 0) {
        result.add(DispatcherType.FORWARD.name());
    }
    if ((dispatcherMapping & INCLUDE) > 0) {
        result.add(DispatcherType.INCLUDE.name());
    }
    if ((dispatcherMapping & REQUEST) > 0) {
        result.add(DispatcherType.REQUEST.name());
    }
    if ((dispatcherMapping & ERROR) > 0) {
        result.add(DispatcherType.ERROR.name());
    }
    if ((dispatcherMapping & ASYNC) > 0) {
        result.add(DispatcherType.ASYNC.name());
    }
    return result.toArray(new String[result.size()]);
}
AutoConfiguration.java 文件源码 项目:cornerstone 阅读 31 收藏 0 点赞 0 评论 0
@Bean(name = "VIFilterRegistrationBeanNew")
public org.springframework.boot.web.servlet.FilterRegistrationBean factory() {

    if(environment != null) {
        String port = environment.getProperty("server.port");
        if(port !=null) {
            System.setProperty(SysKeys.SPRINGBOOTPORTKEY, port);
        }
    }
    org.springframework.boot.web.servlet.FilterRegistrationBean filter =
            new org.springframework.boot.web.servlet.FilterRegistrationBean();
    filter.setFilter(new VIFilter());
    filter.setName("vi-filter");
    filter.addUrlPatterns(URLPATTERNS);
    filter.setDispatcherTypes(DispatcherType.REQUEST, DispatcherType.FORWARD);
    filter.setAsyncSupported(true);
    filter.setOrder(Ordered.HIGHEST_PRECEDENCE);
    return filter;
}
AutoConfiguration.java 文件源码 项目:cornerstone 阅读 30 收藏 0 点赞 0 评论 0
@Bean(name = "VIFilterRegistrationBeanOld")
public org.springframework.boot.context.embedded.FilterRegistrationBean factory() {

    if(environment != null) {
        String port = environment.getProperty("server.port");
        if(port !=null) {
            System.setProperty(SysKeys.SPRINGBOOTPORTKEY, port);
        }
    }
    org.springframework.boot.context.embedded.FilterRegistrationBean filter =
            new org.springframework.boot.context.embedded.FilterRegistrationBean();
        filter.setFilter(new VIFilter());
        filter.setName("vi-filter");
        filter.addUrlPatterns(URLPATTERNS);
        filter.setDispatcherTypes(DispatcherType.REQUEST, DispatcherType.FORWARD);
        filter.setAsyncSupported(true);
        filter.setOrder(Ordered.HIGHEST_PRECEDENCE);
    return filter;
}
FilterMap.java 文件源码 项目:tomcat7 阅读 33 收藏 0 点赞 0 评论 0
/**
 *
 * This method will be used to set the current state of the FilterMap
 * representing the state of when filters should be applied.
 */
public void setDispatcher(String dispatcherString) {
    String dispatcher = dispatcherString.toUpperCase(Locale.ENGLISH);

    if (dispatcher.equals(DispatcherType.FORWARD.name())) {
        // apply FORWARD to the global dispatcherMapping.
        dispatcherMapping |= FORWARD;
    } else if (dispatcher.equals(DispatcherType.INCLUDE.name())) {
        // apply INCLUDE to the global dispatcherMapping.
        dispatcherMapping |= INCLUDE;
    } else if (dispatcher.equals(DispatcherType.REQUEST.name())) {
        // apply REQUEST to the global dispatcherMapping.
        dispatcherMapping |= REQUEST;
    }  else if (dispatcher.equals(DispatcherType.ERROR.name())) {
        // apply ERROR to the global dispatcherMapping.
        dispatcherMapping |= ERROR;
    }  else if (dispatcher.equals(DispatcherType.ASYNC.name())) {
        // apply ERROR to the global dispatcherMapping.
        dispatcherMapping |= ASYNC;
    }
}
FilterMap.java 文件源码 项目:tomcat7 阅读 37 收藏 0 点赞 0 评论 0
public String[] getDispatcherNames() {
    ArrayList<String> result = new ArrayList<String>();
    if ((dispatcherMapping & FORWARD) > 0) {
        result.add(DispatcherType.FORWARD.name());
    }
    if ((dispatcherMapping & INCLUDE) > 0) {
        result.add(DispatcherType.INCLUDE.name());
    }
    if ((dispatcherMapping & REQUEST) > 0) {
        result.add(DispatcherType.REQUEST.name());
    }
    if ((dispatcherMapping & ERROR) > 0) {
        result.add(DispatcherType.ERROR.name());
    }
    if ((dispatcherMapping & ASYNC) > 0) {
        result.add(DispatcherType.ASYNC.name());
    }
    return result.toArray(new String[result.size()]);
}
ApplicationHttpRequest.java 文件源码 项目:lazycat 阅读 37 收藏 0 点赞 0 评论 0
/**
 * Override the <code>setAttribute()</code> method of the wrapped request.
 *
 * @param name
 *            Name of the attribute to set
 * @param value
 *            Value of the attribute to set
 */
@Override
public void setAttribute(String name, Object value) {

    if (name.equals(Globals.DISPATCHER_TYPE_ATTR)) {
        dispatcherType = (DispatcherType) value;
        return;
    } else if (name.equals(Globals.DISPATCHER_REQUEST_PATH_ATTR)) {
        requestDispatcherPath = value;
        return;
    }

    if (!setSpecial(name, value)) {
        getRequest().setAttribute(name, value);
    }

}
FilterMap.java 文件源码 项目:lazycat 阅读 30 收藏 0 点赞 0 评论 0
public String[] getDispatcherNames() {
    ArrayList<String> result = new ArrayList<String>();
    if ((dispatcherMapping & FORWARD) > 0) {
        result.add(DispatcherType.FORWARD.name());
    }
    if ((dispatcherMapping & INCLUDE) > 0) {
        result.add(DispatcherType.INCLUDE.name());
    }
    if ((dispatcherMapping & REQUEST) > 0) {
        result.add(DispatcherType.REQUEST.name());
    }
    if ((dispatcherMapping & ERROR) > 0) {
        result.add(DispatcherType.ERROR.name());
    }
    if ((dispatcherMapping & ASYNC) > 0) {
        result.add(DispatcherType.ASYNC.name());
    }
    return result.toArray(new String[result.size()]);
}
FilterMap.java 文件源码 项目:lazycat 阅读 30 收藏 0 点赞 0 评论 0
/**
 *
 * This method will be used to set the current state of the FilterMap
 * representing the state of when filters should be applied.
 */
public void setDispatcher(String dispatcherString) {
    String dispatcher = dispatcherString.toUpperCase(Locale.ENGLISH);

    if (dispatcher.equals(DispatcherType.FORWARD.name())) {
        // apply FORWARD to the global dispatcherMapping.
        dispatcherMapping |= FORWARD;
    } else if (dispatcher.equals(DispatcherType.INCLUDE.name())) {
        // apply INCLUDE to the global dispatcherMapping.
        dispatcherMapping |= INCLUDE;
    } else if (dispatcher.equals(DispatcherType.REQUEST.name())) {
        // apply REQUEST to the global dispatcherMapping.
        dispatcherMapping |= REQUEST;
    } else if (dispatcher.equals(DispatcherType.ERROR.name())) {
        // apply ERROR to the global dispatcherMapping.
        dispatcherMapping |= ERROR;
    } else if (dispatcher.equals(DispatcherType.ASYNC.name())) {
        // apply ERROR to the global dispatcherMapping.
        dispatcherMapping |= ASYNC;
    }
}
ServletOutputStreamImpl.java 文件源码 项目:lams 阅读 32 收藏 0 点赞 0 评论 0
/**
 * {@inheritDoc}
 */
public void flush() throws IOException {
    //according to the servlet spec we ignore a flush from within an include
    if (servletRequestContext.getOriginalRequest().getDispatcherType() == DispatcherType.INCLUDE ||
            servletRequestContext.getOriginalResponse().isTreatAsCommitted()) {
        return;
    }
    if (servletRequestContext.getDeployment().getDeploymentInfo().isIgnoreFlush() &&
            servletRequestContext.getExchange().isRequestComplete() &&
            servletRequestContext.getOriginalResponse().getHeader(Headers.TRANSFER_ENCODING_STRING) == null) {
        //we mark the stream as flushed, but don't actually flush
        //because in most cases flush just kills performance
        //we only do this if the request is fully read, so that http tunneling scenarios still work
        servletRequestContext.getOriginalResponse().setIgnoredFlushPerformed(true);
        return;
    }
    flushInternal();
}
ServletSecurityRoleHandler.java 文件源码 项目:lams 阅读 25 收藏 0 点赞 0 评论 0
@Override
public void handleRequest(final HttpServerExchange exchange) throws Exception {
    final ServletRequestContext servletRequestContext = exchange.getAttachment(ServletRequestContext.ATTACHMENT_KEY);
    ServletRequest request = servletRequestContext.getServletRequest();
    if (request.getDispatcherType() == DispatcherType.REQUEST) {
        List<SingleConstraintMatch> constraints = servletRequestContext.getRequiredConstrains();
        SecurityContext sc = exchange.getSecurityContext();
        if (!authorizationManager.canAccessResource(constraints, sc.getAuthenticatedAccount(), servletRequestContext.getCurrentServlet().getManagedServlet().getServletInfo(), servletRequestContext.getOriginalRequest(), servletRequestContext.getDeployment())) {

            HttpServletResponse response = (HttpServletResponse) servletRequestContext.getServletResponse();
            response.sendError(StatusCodes.FORBIDDEN);
            return;
        }
    }
    next.handleRequest(exchange);
}
FilterHandler.java 文件源码 项目:lams 阅读 40 收藏 0 点赞 0 评论 0
@Override
public void handleRequest(final HttpServerExchange exchange) throws Exception {
    final ServletRequestContext servletRequestContext = exchange.getAttachment(ServletRequestContext.ATTACHMENT_KEY);
    ServletRequest request = servletRequestContext.getServletRequest();
    ServletResponse response = servletRequestContext.getServletResponse();
    DispatcherType dispatcher = servletRequestContext.getDispatcherType();
    Boolean supported = asyncSupported.get(dispatcher);
    if(supported != null && ! supported) {
        exchange.putAttachment(AsyncContextImpl.ASYNC_SUPPORTED, false    );
    }

    final List<ManagedFilter> filters = this.filters.get(dispatcher);
    if(filters == null) {
        next.handleRequest(exchange);
    } else {
        final FilterChainImpl filterChain = new FilterChainImpl(exchange, filters, next, allowNonStandardWrappers);
        filterChain.doFilter(request, response);
    }
}
ReleaseControllerTests.java 文件源码 项目:spring-cloud-skipper 阅读 33 收藏 0 点赞 0 评论 0
@Override
public MockHttpServletRequest buildRequest(ServletContext servletContext) {
    MockHttpServletRequest request = this.result.getRequest();
    request.setDispatcherType(DispatcherType.ERROR);
    request.setRequestURI(this.path);
    return request;
}
ScooldServer.java 文件源码 项目:scoold 阅读 42 收藏 0 点赞 0 评论 0
/**
 * @return CSRF protection filter bean
 */
@Bean
public FilterRegistrationBean csrfFilterRegistrationBean() {
    String path = "/*";
    logger.debug("Initializing CSRF filter [{}]...", path);
    FilterRegistrationBean frb = new FilterRegistrationBean(new CsrfFilter());
    frb.setDispatcherTypes(EnumSet.of(DispatcherType.REQUEST));
    frb.setName("csrfFilter");
    frb.setAsyncSupported(true);
    frb.addUrlPatterns(path);
    frb.setMatchAfter(false);
    frb.setEnabled(true);
    frb.setOrder(2);
    return frb;
}
DeviceUsageTrackerApp.java 文件源码 项目:dust-api 阅读 35 收藏 0 点赞 0 评论 0
@Override
public void run(final DeviceUsageTrackerConfig configuration, final Environment environment) {
    ConfigurationHolder.set(configuration);

    environment.jersey().register(DeviceResource.class);
    environment.jersey().register(UserResource.class);
    environment.jersey().register(ProfileResource.class);
    environment.jersey().register(ClaimResource.class);
    environment.jersey().register(DeviceSlackResource.class);
    environment.jersey().register(DeviceClaimResource.class);

    // JSON property naming
    environment.getObjectMapper().setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);

    environment.jersey().register(new CustomExceptionMapper());

    // Enable CORS headers
    final FilterRegistration.Dynamic cors = environment.servlets()
            .addFilter("CORS", CrossOriginFilter.class);

    // Configure CORS parameters
    cors.setInitParameter(CrossOriginFilter.ALLOWED_ORIGINS_PARAM,
            "*");
    cors.setInitParameter(CrossOriginFilter.ALLOWED_HEADERS_PARAM,
            "X-Requested-With,Content-Type,Accept,Origin,Authorization");
    cors.setInitParameter(CrossOriginFilter.ALLOWED_METHODS_PARAM,
            "OPTIONS,GET,PUT,POST,DELETE,HEAD");

    // Add URL mapping
    cors.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), true, "/*");

    // Auth
    environment.jersey().register(
            new AuthenticatorFeature(environment.metrics(), configuration.getAuthConfig()));
}
ApplicationFilterRegistration.java 文件源码 项目:apache-tomcat-7.0.73-with-comment 阅读 38 收藏 0 点赞 0 评论 0
@Override
public void addMappingForServletNames(
        EnumSet<DispatcherType> dispatcherTypes, boolean isMatchAfter,
        String... servletNames) {

    FilterMap filterMap = new FilterMap();

    filterMap.setFilterName(filterDef.getFilterName());

    if (dispatcherTypes != null) {
        for (DispatcherType dispatcherType : dispatcherTypes) {
            filterMap.setDispatcher(dispatcherType.name());
        }
    }

    if (servletNames != null) {
        for (String servletName : servletNames) {
            filterMap.addServletName(servletName);
        }

        if (isMatchAfter) {
            context.addFilterMap(filterMap);
        } else {
            context.addFilterMapBefore(filterMap);
        }
    }
    // else error?
}
WebConfigurer.java 文件源码 项目:RoboInsta 阅读 38 收藏 0 点赞 0 评论 0
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
    if (env.getActiveProfiles().length != 0) {
        log.info("Web application configuration, using profiles: {}", (Object[]) env.getActiveProfiles());
    }
    EnumSet<DispatcherType> disps = EnumSet.of(DispatcherType.REQUEST, DispatcherType.FORWARD, DispatcherType.ASYNC);
    log.info("Web application fully configured");
}
ApplicationFilterFactory.java 文件源码 项目:apache-tomcat-7.0.73-with-comment 阅读 37 收藏 0 点赞 0 评论 0
/**
 * Convenience method which returns true if  the dispatcher type
 * matches the dispatcher types specified in the FilterMap
 */
private boolean matchDispatcher(FilterMap filterMap, DispatcherType type) {
    switch (type) {
        case FORWARD : {
            if ((filterMap.getDispatcherMapping() & FilterMap.FORWARD) > 0) {
                    return true;
            }
            break;
        }
        case INCLUDE : {
            if ((filterMap.getDispatcherMapping() & FilterMap.INCLUDE) > 0) {
                return true;
            }
            break;
        }
        case REQUEST : {
            if ((filterMap.getDispatcherMapping() & FilterMap.REQUEST) > 0) {
                return true;
            }
            break;
        }
        case ERROR : {
            if ((filterMap.getDispatcherMapping() & FilterMap.ERROR) > 0) {
                return true;
            }
            break;
        }
        case ASYNC : {
            if ((filterMap.getDispatcherMapping() & FilterMap.ASYNC) > 0) {
                return true;
            }
            break;
        }
    }
    return false;
}
ApplicationFilterRegistration.java 文件源码 项目:apache-tomcat-7.0.73-with-comment 阅读 30 收藏 0 点赞 0 评论 0
@Override
public void addMappingForUrlPatterns(
        EnumSet<DispatcherType> dispatcherTypes, boolean isMatchAfter,
        String... urlPatterns) {

    FilterMap filterMap = new FilterMap();

    filterMap.setFilterName(filterDef.getFilterName());

    if (dispatcherTypes != null) {
        for (DispatcherType dispatcherType : dispatcherTypes) {
            filterMap.setDispatcher(dispatcherType.name());
        }
    }

    if (urlPatterns != null) {
        for (String urlPattern : urlPatterns) {
            filterMap.addURLPattern(urlPattern);
        }

        if (isMatchAfter) {
            context.addFilterMap(filterMap);
        } else {
            context.addFilterMapBefore(filterMap);
        }
    }
    // else error?

}
Api.java 文件源码 项目:caddy-dropwizard-sse 阅读 51 收藏 0 点赞 0 评论 0
@Override
public void run(final ApiConfiguration configuration, final Environment environment) throws Exception {
    environment.jersey().register(new SSEController());

    // Enable CORS headers; https://gist.github.com/yunspace/07d80a9ac32901f1e149
    final FilterRegistration.Dynamic filter = environment.servlets().addFilter("CORS", CrossOriginFilter.class);

    filter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), false, environment.getApplicationContext().getContextPath() + "*");
    filter.setInitParameter(ALLOWED_METHODS_PARAM, "GET,PUT,POST,OPTIONS");
    filter.setInitParameter(ALLOWED_ORIGINS_PARAM, "*");
    filter.setInitParameter(ALLOWED_HEADERS_PARAM, "X-Requested-With,Content-Type,Accept,Origin,Authorization");
    filter.setInitParameter(ALLOW_CREDENTIALS_PARAM, "true");
}
ApplicationDispatcher.java 文件源码 项目:lazycat 阅读 40 收藏 0 点赞 0 评论 0
/**
 * Prepare the request based on the filter configuration.
 * 
 * @param request
 *            The servlet request we are processing
 * @param response
 *            The servlet response we are creating
 * @param state
 *            The RD state
 *
 * @exception IOException
 *                if an input/output error occurs
 * @exception ServletException
 *                if a servlet error occurs
 */
private void processRequest(ServletRequest request, ServletResponse response, State state)
        throws IOException, ServletException {

    DispatcherType disInt = (DispatcherType) request.getAttribute(Globals.DISPATCHER_TYPE_ATTR);
    if (disInt != null) {
        boolean doInvoke = true;

        if (context.getFireRequestListenersOnForwards() && !context.fireRequestInitEvent(request)) {
            doInvoke = false;
        }

        if (doInvoke) {
            if (disInt != DispatcherType.ERROR) {
                state.outerRequest.setAttribute(Globals.DISPATCHER_REQUEST_PATH_ATTR, getCombinedPath());
                state.outerRequest.setAttribute(Globals.DISPATCHER_TYPE_ATTR, DispatcherType.FORWARD);
                invoke(state.outerRequest, response, state);
            } else {
                invoke(state.outerRequest, response, state);
            }

            if (context.getFireRequestListenersOnForwards()) {
                context.fireRequestDestroyEvent(request);
            }
        }
    }
}
JettyPlusIT.java 文件源码 项目:uavstack 阅读 35 收藏 0 点赞 0 评论 0
/**
 * onAppStart
 * 
 * @param args
 */
public void onAppStart(Object... args) {

    WebAppContext sc = getWebAppContext(args);

    if (sc == null) {
        return;
    }

    InterceptSupport iSupport = InterceptSupport.instance();
    InterceptContext context = iSupport.createInterceptContext(Event.WEBCONTAINER_STARTED);
    context.put(InterceptConstants.WEBAPPLOADER, sc.getClassLoader());
    context.put(InterceptConstants.WEBWORKDIR, sc.getServletContext().getRealPath(""));
    context.put(InterceptConstants.CONTEXTPATH, sc.getContextPath());
    context.put(InterceptConstants.APPNAME, sc.getDisplayName());

    ServletContext sContext = sc.getServletContext();

    context.put(InterceptConstants.SERVLET_CONTEXT, sContext);

    getBasePath(context, sContext);

    iSupport.doIntercept(context);

    // GlobalFilter
    sc.addFilter("com.creditease.monitor.jee.filters.GlobalFilter", "/*", EnumSet.of(DispatcherType.REQUEST));
}
AitTomcatCustomizer.java 文件源码 项目:ait-platform 阅读 29 收藏 0 点赞 0 评论 0
@Bean
public FilterRegistrationBean shallowEtagHeaderFilter() {
    FilterRegistrationBean registration = new FilterRegistrationBean();
    registration.setFilter(new ShallowEtagHeaderFilter());
    registration.setDispatcherTypes(EnumSet.allOf(DispatcherType.class));
    return registration;
}
ApplicationDispatcher.java 文件源码 项目:apache-tomcat-7.0.73-with-comment 阅读 38 收藏 0 点赞 0 评论 0
private void doDispatch(ServletRequest request, ServletResponse response)
        throws ServletException, IOException {

    // Set up to handle the specified request and response
    State state = new State(request, response, false);

    // Create a wrapped response to use for this request
    wrapResponse(state);

    ApplicationHttpRequest wrequest =
        (ApplicationHttpRequest) wrapRequest(state);

    if (queryString != null) {
        wrequest.setQueryParams(queryString);
    }

    wrequest.setAttribute(Globals.DISPATCHER_TYPE_ATTR,
            DispatcherType.ASYNC);
    wrequest.setAttribute(Globals.DISPATCHER_REQUEST_PATH_ATTR,
            getCombinedPath());

    wrequest.setContextPath(context.getPath());
    wrequest.setRequestURI(requestURI);
    wrequest.setServletPath(servletPath);
    wrequest.setPathInfo(pathInfo);
    if (queryString != null) {
        wrequest.setQueryString(queryString);
        wrequest.setQueryParams(queryString);
    }

    invoke(state.outerRequest, state.outerResponse, state);
}
ServletContextHandler.java 文件源码 项目:marathon-auth-plugin 阅读 36 收藏 0 点赞 0 评论 0
public ServletContextHandler(HandlerContainer parent, String contextPath, SessionHandler sessionHandler, SecurityHandler securityHandler, ServletHandler servletHandler, ErrorHandler errorHandler,int options)
{
    super((ContextHandler.Context)null);
    _options=options;
    _scontext = new Context();
    _sessionHandler = sessionHandler;
    _securityHandler = securityHandler;
    _servletHandler = servletHandler;

    if (contextPath!=null)
        setContextPath(contextPath);

    if (parent instanceof HandlerWrapper)
        ((HandlerWrapper)parent).setHandler(this);
    else if (parent instanceof HandlerCollection)
        ((HandlerCollection)parent).addHandler(this);


    // Link the handlers
    relinkHandlers();

    if (errorHandler!=null)
        setErrorHandler(errorHandler);


    this.addFilter(new FilterHolder(new HTTPAuthFilter()), "/v2/*", EnumSet.allOf(DispatcherType.class));

}
ApplicationFilterFactory.java 文件源码 项目:tomcat7 阅读 34 收藏 0 点赞 0 评论 0
/**
 * Convenience method which returns true if  the dispatcher type
 * matches the dispatcher types specified in the FilterMap
 */
private boolean matchDispatcher(FilterMap filterMap, DispatcherType type) {
    switch (type) {
        case FORWARD : {
            if ((filterMap.getDispatcherMapping() & FilterMap.FORWARD) > 0) {
                    return true;
            }
            break;
        }
        case INCLUDE : {
            if ((filterMap.getDispatcherMapping() & FilterMap.INCLUDE) > 0) {
                return true;
            }
            break;
        }
        case REQUEST : {
            if ((filterMap.getDispatcherMapping() & FilterMap.REQUEST) > 0) {
                return true;
            }
            break;
        }
        case ERROR : {
            if ((filterMap.getDispatcherMapping() & FilterMap.ERROR) > 0) {
                return true;
            }
            break;
        }
        case ASYNC : {
            if ((filterMap.getDispatcherMapping() & FilterMap.ASYNC) > 0) {
                return true;
            }
            break;
        }
    }
    return false;
}
ApplicationFilterRegistration.java 文件源码 项目:tomcat7 阅读 44 收藏 0 点赞 0 评论 0
@Override
public void addMappingForServletNames(
        EnumSet<DispatcherType> dispatcherTypes, boolean isMatchAfter,
        String... servletNames) {

    FilterMap filterMap = new FilterMap();

    filterMap.setFilterName(filterDef.getFilterName());

    if (dispatcherTypes != null) {
        for (DispatcherType dispatcherType : dispatcherTypes) {
            filterMap.setDispatcher(dispatcherType.name());
        }
    }

    if (servletNames != null) {
        for (String servletName : servletNames) {
            filterMap.addServletName(servletName);
        }

        if (isMatchAfter) {
            context.addFilterMap(filterMap);
        } else {
            context.addFilterMapBefore(filterMap);
        }
    }
    // else error?
}


问题


面经


文章

微信
公众号

扫码关注公众号