亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? filterdispatcher.java

?? FilterDispatcher源碼,些源碼是struts2的核心源碼.
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
     * retrieve the servlet context from other sources.     *     * @return the servlet context.     */    protected ServletContext getServletContext() {        return filterConfig.getServletContext();    }    /**     * Expose the FilterConfig instance.     *     * @return Our FilterConfit instance     */    protected FilterConfig getFilterConfig() {        return filterConfig;    }    /**     * Wrap and return the given request, if needed, so as to to transparently     * handle multipart data as a wrapped class around the given request.     *     * @param request Our ServletRequest object     * @param response Our ServerResponse object     * @return Wrapped HttpServletRequest object     * @throws ServletException on any error     */    protected HttpServletRequest prepareDispatcherAndWrapRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException {        Dispatcher du = Dispatcher.getInstance();        // Prepare and wrap the request if the cleanup filter hasn't already, cleanup filter should be        // configured first before struts2 dispatcher filter, hence when its cleanup filter's turn,        // static instance of Dispatcher should be null.        if (du == null) {            Dispatcher.setInstance(dispatcher);            // prepare the request no matter what - this ensures that the proper character encoding            // is used before invoking the mapper (see WW-9127)            dispatcher.prepare(request, response);        } else {            dispatcher = du;        }                try {            // Wrap request first, just in case it is multipart/form-data            // parameters might not be accessible through before encoding (ww-1278)            request = dispatcher.wrapRequest(request, getServletContext());        } catch (IOException e) {            String message = "Could not wrap servlet request with MultipartRequestWrapper!";            LOG.error(message, e);            throw new ServletException(message, e);        }        return request;    }    /**     * Create a string array from a comma-delimited list of packages.     *     * @param packages A comma-delimited String listing packages     * @return A string array of packages     */    protected String[] parse(String packages) {        if (packages == null) {            return null;        }        List<String> pathPrefixes = new ArrayList<String>();        StringTokenizer st = new StringTokenizer(packages, ", \n\t");        while (st.hasMoreTokens()) {            String pathPrefix = st.nextToken().replace('.', '/');            if (!pathPrefix.endsWith("/")) {                pathPrefix += "/";            }            pathPrefixes.add(pathPrefix);        }        return pathPrefixes.toArray(new String[pathPrefixes.size()]);    }    /**     * Process an action or handle a request a static resource.     * <p/>     * The filter tries to match the request to an action mapping.     * If mapping is found, the action processes is delegated to the dispatcher's serviceAction method.     * If action processing fails, doFilter will try to create an error page via the dispatcher.     * <p/>     * Otherwise, if the request is for a static resource,     * the resource is copied directly to the response, with the appropriate caching headers set.     * <p/>     * If the request does not match an action mapping, or a static resource page,      * then it passes through.     *     * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)     */    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {        HttpServletRequest request = (HttpServletRequest) req;        HttpServletResponse response = (HttpServletResponse) res;        ServletContext servletContext = getServletContext();        String timerKey = "FilterDispatcher_doFilter: ";        try {            UtilTimerStack.push(timerKey);            request = prepareDispatcherAndWrapRequest(request, response);            ActionMapping mapping;            try {                mapping = actionMapper.getMapping(request, dispatcher.getConfigurationManager());            } catch (Exception ex) {                LOG.error("error getting ActionMapping", ex);                dispatcher.sendError(request, response, servletContext, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, ex);                return;            }            if (mapping == null) {                // there is no action in this request, should we look for a static resource?                String resourcePath = RequestUtils.getServletPath(request);                if ("".equals(resourcePath) && null != request.getPathInfo()) {                    resourcePath = request.getPathInfo();                }                if (serveStatic && resourcePath.startsWith("/struts")) {                    String name = resourcePath.substring("/struts".length());                    findStaticResource(name, request, response);                } else {                    // this is a normal request, let it pass through                    chain.doFilter(request, response);                }                // The framework did its job here                return;            }            dispatcher.serviceAction(request, response, servletContext, mapping);        } finally {            try {                ActionContextCleanUp.cleanUp(req);            } finally {                UtilTimerStack.pop(timerKey);            }        }    }    /**     * Locate a static resource and copy directly to the response,     * setting the appropriate caching headers.      *     * @param name The resource name     * @param request The request     * @param response The response     * @throws IOException If anything goes wrong     */    protected void findStaticResource(String name, HttpServletRequest request, HttpServletResponse response) throws IOException {        if (!name.endsWith(".class")) {            for (String pathPrefix : pathPrefixes) {                InputStream is = findInputStream(name, pathPrefix);                if (is != null) {                    Calendar cal = Calendar.getInstance();                                        // check for if-modified-since, prior to any other headers                    long ifModifiedSince = 0;                    try {                    	ifModifiedSince = request.getDateHeader("If-Modified-Since");                    } catch (Exception e) {                    	LOG.warn("Invalid If-Modified-Since header value: '" + request.getHeader("If-Modified-Since") + "', ignoring");                    }    				long lastModifiedMillis = lastModifiedCal.getTimeInMillis();    				long now = cal.getTimeInMillis();                    cal.add(Calendar.DAY_OF_MONTH, 1);                    long expires = cal.getTimeInMillis();                        				if (ifModifiedSince > 0 && ifModifiedSince <= lastModifiedMillis) {    					// not modified, content is not sent - only basic headers and status SC_NOT_MODIFIED                        response.setDateHeader("Expires", expires);    					response.setStatus(HttpServletResponse.SC_NOT_MODIFIED);    					is.close();    					return;    				}                	                	// set the content-type header                    String contentType = getContentType(name);                    if (contentType != null) {                        response.setContentType(contentType);                    }                    if (serveStaticBrowserCache) {                    	// set heading information for caching static content                        response.setDateHeader("Date", now);                        response.setDateHeader("Expires", expires);                        response.setDateHeader("Retry-After", expires);                        response.setHeader("Cache-Control", "public");                        response.setDateHeader("Last-Modified", lastModifiedMillis);                    } else {                        response.setHeader("Cache-Control", "no-cache");                        response.setHeader("Pragma", "no-cache");                        response.setHeader("Expires", "-1");                    }                    try {                        copy(is, response.getOutputStream());                    } finally {                        is.close();                    }                    return;                }            }        }        response.sendError(HttpServletResponse.SC_NOT_FOUND);    }    /**     * Determine the content type for the resource name.     *     * @param name The resource name     * @return The mime type     */    protected String getContentType(String name) {        // NOT using the code provided activation.jar to avoid adding yet another dependency        // this is generally OK, since these are the main files we server up        if (name.endsWith(".js")) {            return "text/javascript";        } else if (name.endsWith(".css")) {            return "text/css";        } else if (name.endsWith(".html")) {            return "text/html";        } else if (name.endsWith(".txt")) {            return "text/plain";        } else if (name.endsWith(".gif")) {            return "image/gif";        } else if (name.endsWith(".jpg") || name.endsWith(".jpeg")) {            return "image/jpeg";        } else if (name.endsWith(".png")) {            return "image/png";        } else {            return null;        }    }    /**     * Copy bytes from the input stream to the output stream.     *     * @param input The input stream     * @param output The output stream     * @throws IOException If anything goes wrong     */    protected void copy(InputStream input, OutputStream output) throws IOException {        final byte[] buffer = new byte[4096];        int n;        while (-1 != (n = input.read(buffer))) {            output.write(buffer, 0, n);        }        output.flush(); // WW-1526    }    /**     * Look for a static resource in the classpath.     *     * @param name The resource name     * @param packagePrefix The package prefix to use to locate the resource     * @return The inputstream of the resource     * @throws IOException If there is a problem locating the resource     */    protected InputStream findInputStream(String name, String packagePrefix) throws IOException {        String resourcePath;        if (packagePrefix.endsWith("/") && name.startsWith("/")) {            resourcePath = packagePrefix + name.substring(1);        } else {            resourcePath = packagePrefix + name;        }        resourcePath = URLDecoder.decode(resourcePath, encoding);        return ClassLoaderUtil.getResourceAsStream(resourcePath, getClass());    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产人成一区二区三区影院| 日韩av在线免费观看不卡| 日韩二区在线观看| 91亚洲国产成人精品一区二三| 日本韩国精品在线| 国产亚洲成aⅴ人片在线观看 | 久久精品国内一区二区三区| 成人黄色在线看| 国产欧美精品在线观看| 手机精品视频在线观看| 欧美亚洲国产一区二区三区va | 国产精品一区二区久激情瑜伽| 欧美一卡2卡三卡4卡5免费| 亚洲国产乱码最新视频| 欧美日产在线观看| 久久99久国产精品黄毛片色诱| 91精品一区二区三区在线观看| 久久精品二区亚洲w码| 国产午夜亚洲精品午夜鲁丝片| 粉嫩蜜臀av国产精品网站| 亚洲乱码一区二区三区在线观看| 欧美日韩免费一区二区三区| 日韩中文字幕91| 国产精品不卡在线| 91精品国产综合久久精品| 国产乱人伦精品一区二区在线观看| 国产日产亚洲精品系列| 精品视频免费在线| 懂色av一区二区在线播放| 亚洲精品videosex极品| 久久一区二区三区四区| 色婷婷亚洲婷婷| 国产成人精品三级| 日韩国产欧美三级| 亚洲欧洲日韩女同| 精品国产一区二区三区忘忧草 | 久久精品无码一区二区三区| 欧美视频日韩视频| 成人精品免费看| 一区二区高清视频在线观看| 欧美日韩一区二区三区在线看| 激情成人午夜视频| 免费视频最近日韩| 国产精品综合一区二区| 久久er99热精品一区二区| 亚洲欧洲精品天堂一级| 看电影不卡的网站| 久久精品国产一区二区三区免费看 | 日本中文字幕一区二区视频| 国产精品久久夜| 亚洲精品视频在线观看网站| 亚洲欧美视频在线观看视频| 中文字幕佐山爱一区二区免费| 亚洲国产成人午夜在线一区| 精品一区二区三区视频在线观看| 五月婷婷综合网| 一区二区三区四区蜜桃| 日本一区二区三区在线不卡| 日本一区二区三区在线观看| 亚洲欧美日韩国产成人精品影院| 免费在线观看日韩欧美| 欧美日本国产视频| 五月天激情综合| 欧美成人video| 精品一区二区三区香蕉蜜桃| 日韩欧美美女一区二区三区| 麻豆91精品91久久久的内涵| 91精品啪在线观看国产60岁| 亚洲精品久久久蜜桃| 精品婷婷伊人一区三区三| 日韩av在线发布| 国产午夜亚洲精品不卡| 粉嫩嫩av羞羞动漫久久久| 中文字幕一区二区三区精华液| 99在线视频精品| 午夜精品一区二区三区三上悠亚| 欧美日韩国产在线观看| 欧美日韩国产乱码电影| 国产亚洲一二三区| 五月天亚洲婷婷| 欧美日韩综合在线免费观看| 国产精品 欧美精品| 久久精品久久99精品久久| 成人污视频在线观看| 成人黄色777网| 欧美色国产精品| 日本一区二区三区dvd视频在线| 亚洲男帅同性gay1069| 国产**成人网毛片九色| 国产精品久久久久一区二区三区| 亚洲精品视频在线| 99精品黄色片免费大全| 亚洲视频在线一区观看| 天使萌一区二区三区免费观看| 精品在线免费观看| 在线观看亚洲一区| 蜜桃一区二区三区在线观看| 亚洲午夜免费电影| 欧美绝品在线观看成人午夜影视| 中文字幕第一区| 国产在线一区观看| 91黄色激情网站| 国产精品入口麻豆九色| 韩国一区二区视频| 毛片不卡一区二区| 色婷婷久久久综合中文字幕| 国产精品天天摸av网| 日本欧美加勒比视频| 欧美少妇bbb| 亚洲自拍与偷拍| 有码一区二区三区| 亚洲国产精品一区二区www在线 | 欧美日韩成人综合在线一区二区| 国产69精品久久久久毛片| 国产在线精品一区二区三区不卡| 国产一区二区三区香蕉 | 韩日av一区二区| 国产.欧美.日韩| 欧美在线一区二区三区| 欧美一区二区视频在线观看2022| 日韩三级在线观看| 日本一区二区视频在线观看| 一区二区三区免费在线观看| 日韩影院免费视频| 91香蕉视频mp4| 成人动漫av在线| 一本色道**综合亚洲精品蜜桃冫| 亚洲h动漫在线| 亚洲国产一区二区三区| 亚洲一区视频在线观看视频| 亚洲欧洲av色图| 亚洲免费av观看| 亚洲自拍欧美精品| 亚洲精品国产精品乱码不99| 国产精品水嫩水嫩| 亚洲成va人在线观看| 国产精品久久毛片av大全日韩| 欧美在线视频全部完| 国产一区二区三区最好精华液| 亚洲自拍偷拍欧美| 亚洲婷婷综合久久一本伊一区| 91麻豆国产香蕉久久精品| 亚洲综合色噜噜狠狠| 香蕉av福利精品导航| 亚洲综合久久久| 26uuu亚洲综合色欧美| 久久精品夜色噜噜亚洲aⅴ| 在线观看视频一区| 国产精品久久久久久久久免费桃花| 亚洲伦理在线免费看| 国产精品一二三在| 色先锋资源久久综合| 欧美一区二区三区四区在线观看| 国产亚洲精品超碰| 亚洲成人黄色小说| 97精品久久久午夜一区二区三区 | 欧洲一区二区三区在线| 久久久久久久久99精品| 日本特黄久久久高潮| 一本色道a无线码一区v| 国产精品国产馆在线真实露脸| 青青草国产成人av片免费| 精品美女一区二区| 国产精品麻豆99久久久久久| 国产精品久久久久久户外露出| 亚洲欧美另类综合偷拍| 尤物在线观看一区| 狠狠色狠狠色综合| 91.com视频| 成人欧美一区二区三区小说| 图片区日韩欧美亚洲| 成人黄色网址在线观看| 久久综合色之久久综合| 国产中文字幕一区| 久久综合色8888| 国产激情精品久久久第一区二区| 国产欧美日韩中文久久| 日韩精品欧美成人高清一区二区| 国产mv日韩mv欧美| aa级大片欧美| 欧美情侣在线播放| 亚洲欧美一区二区在线观看| 久久av资源站| 欧美人伦禁忌dvd放荡欲情| 日本午夜精品视频在线观看 | 欧美一二三区在线观看| 国产亚洲精品超碰| 国产精品综合网| 亚洲人成亚洲人成在线观看图片| 成人18视频在线播放| 天天综合日日夜夜精品| 精品三级av在线| 91久久线看在观草草青青| 青青草一区二区三区| 国产精品国产三级国产普通话蜜臀 | 亚洲r级在线视频| 国产人久久人人人人爽| 欧美一级理论片| 91国偷自产一区二区使用方法| 国产在线精品一区二区夜色|