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

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

?? fileservlet.java

?? 用java開發的
?? JAVA
字號:
// FileServlet - servlet similar to a standard httpd//// Copyright (C)1996,1998 by Jef Poskanzer <jef@acme.com>. All rights reserved.//// Redistribution and use in source and binary forms, with or without// modification, are permitted provided that the following conditions// are met:// 1. Redistributions of source code must retain the above copyright//    notice, this list of conditions and the following disclaimer.// 2. Redistributions in binary form must reproduce the above copyright//    notice, this list of conditions and the following disclaimer in the//    documentation and/or other materials provided with the distribution.//// THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE// ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF// SUCH DAMAGE.//// Visit the ACME Labs Java page for up-to-date versions of this and other// fine Java utilities: http://www.acme.com/java/// // All enhancments Copyright (C)1998,2000 by Dmitriy Rogatkin// http://tjws.sourceforge.netpackage Acme.Serve;import java.io.*;import java.util.*;import java.text.*;import javax.servlet.*;import javax.servlet.http.*;/// Servlet similar to a standard httpd.// <P>// Implements the "GET" and "HEAD" methods for files and directories.// Handles index.html, index.htm, default.htm, default.html.// Redirects directory URLs that lack a trailing /.// Handles If-Modified-Since.// <P>// <A HREF="/resources/classes/Acme/Serve/FileServlet.java">Fetch the software.</A><BR>// <A HREF="/resources/classes/Acme.tar.Z">Fetch the entire Acme package.</A>// <P>// @see Acme.Serve.Serve// All enhancments Copyright (C)1998-2000 by Dmitriy Rogatkin// this version is compatible with the latest JSDK 2.2// http://tjws.sourceforge.netpublic class FileServlet extends HttpServlet {    // We keep a single throttle table for all instances of the servlet.    // Normally there is only one instance; the exception is subclasses.    static Acme.WildcardDictionary throttleTab = null;    static final String[] DEFAULTINDEXPAGES = {"index.html", "index.htm", "default.htm", "default.html"};    static final DecimalFormat lengthftm = new DecimalFormat("#");	private static final boolean logenabled =//		true;		false;    /// Constructor.    public FileServlet()    {    }    /// Constructor with throttling.    // @param throttles filename containing throttle settings    // @see ThrottledOutputStream    public FileServlet( String throttles ) throws IOException    {        this();        readThrottles( throttles );    }    private void readThrottles( String throttles ) throws IOException    {        Acme.WildcardDictionary newThrottleTab =        ThrottledOutputStream.parseThrottleFile( throttles );        if ( throttleTab == null )            throttleTab = newThrottleTab;        else {            // Merge the new one into the old one.            Enumeration keys = newThrottleTab.keys();            Enumeration elements = newThrottleTab.elements();            while ( keys.hasMoreElements() ) {                Object key = keys.nextElement();                Object element = elements.nextElement();                throttleTab.put( key, element );            }        }    }    /// Returns a string containing information about the author, version, and    // copyright of the servlet.    public String getServletInfo()    {        return "servlet similar to a standard httpd";    }    /// Services a single request from the client.    // @param req the servlet request    // @param req the servlet response    // @exception ServletException when an exception has occurred    public void service( HttpServletRequest req, HttpServletResponse res ) throws ServletException, IOException    {        boolean headOnly;        if ( req.getMethod().equalsIgnoreCase( "get" ) )            headOnly = false;        else if ( ! req.getMethod().equalsIgnoreCase( "head" ) )            headOnly = true;        else {            res.sendError( HttpServletResponse.SC_NOT_IMPLEMENTED );            return;        }		String path = req.getPathInfo();		if (path != null && path.length() > 2) {			path = path.replace( '\\', '/');			if ( path.indexOf( "/../" ) >0 || path.endsWith( "/.." ) ) {				res.sendError( HttpServletResponse.SC_FORBIDDEN );				return;			}		}        dispatchPathname( req, res, headOnly, path );    }    private void dispatchPathname( HttpServletRequest req, HttpServletResponse res, boolean headOnly, String path ) throws IOException    {		String filename = req.getPathTranslated()!=null?req.getPathTranslated().replace( '/', File.separatorChar ):"";        if ( filename.length() > 0 && filename.charAt( filename.length() - 1 ) == File.separatorChar )            filename = filename.substring( 0, filename.length() - 1 );        File file = new File( filename );		log("showing "+filename+" for path "+path);        if ( file.exists() ) {            if ( ! file.isDirectory() )                serveFile( req, res, headOnly, path, file );			else {				log("showing dir "+file);				if ( path.charAt( path.length() - 1 ) != '/' )					redirectDirectory( req, res, path, file );				else 										showIdexFile(req, res, headOnly, path, filename);			}		} else {			for (int i=0; i<DEFAULTINDEXPAGES.length; i++) {				if ( filename.endsWith( File.separator+DEFAULTINDEXPAGES[i] ) ) {					showIdexFile(req, res, headOnly, path, file.getParent());					return;				}			}			res.sendError( HttpServletResponse.SC_NOT_FOUND );		}	}	private void showIdexFile(HttpServletRequest req, HttpServletResponse res,							  boolean headOnly, String path, String parent) throws IOException {		log("showing index in directory "+parent);		for (int i=0; i<DEFAULTINDEXPAGES.length; i++) {			File indexFile = new File( parent, DEFAULTINDEXPAGES[i] );			if ( indexFile.exists() ) {				serveFile(req, res, headOnly, path, indexFile );				return;			}		}		// index not found		serveDirectory(req, res, headOnly, path, new File(parent) );	}	    private void serveFile( HttpServletRequest req, HttpServletResponse res, boolean headOnly, String path, File file ) throws IOException    {        log( "getting " + file );        if ( ! file.canRead() ) {            res.sendError( HttpServletResponse.SC_FORBIDDEN );            return;        }        // Handle If-Modified-Since.        res.setStatus( HttpServletResponse.SC_OK );        long lastMod = file.lastModified();        String ifModSinceStr = req.getHeader( "If-Modified-Since" );        long ifModSince = -1;        if ( ifModSinceStr != null ) {            int semi = ifModSinceStr.indexOf( ';' );            if ( semi != -1 )                ifModSinceStr = ifModSinceStr.substring( 0, semi );            try {                ifModSince =                DateFormat.getDateInstance().parse( ifModSinceStr ).getTime();            } catch ( Exception ignore ) {            }        }        if ( ifModSince != -1 && ifModSince == lastMod ) {            res.setStatus( HttpServletResponse.SC_NOT_MODIFIED );            headOnly = true;        }        res.setContentType( getServletContext().getMimeType( file.getName() ) );        res.setContentLength( (int) file.length() );        res.setDateHeader( "Last-modified", lastMod );        OutputStream out = res.getOutputStream();        if ( ! headOnly ) {            // Check throttle.            if ( throttleTab != null ) {                ThrottleItem throttleItem =                (ThrottleItem) throttleTab.get( path );                if ( throttleItem != null ) {                    // !!! Need to account for multiple simultaneous fetches.                    out = new ThrottledOutputStream(                                                   out, throttleItem.getMaxBps() );                }            }            InputStream in = new FileInputStream( file );            copyStream( in, out );            in.close();        }        out.close();    }    /// Copy a file from in to out.    // Sub-classes can override this in order to do filtering of some sort.    public void copyStream( InputStream in, OutputStream out ) throws IOException    {        Acme.Utils.copyStream( in, out );    }    private void serveDirectory( HttpServletRequest req, HttpServletResponse res, boolean headOnly, String path, File file ) throws IOException    {        log( "indexing " + file );        if ( ! file.canRead() ) {            res.sendError( HttpServletResponse.SC_FORBIDDEN );            return;        }        res.setStatus( HttpServletResponse.SC_OK );        res.setContentType( "text/html" );        OutputStream out = res.getOutputStream();        if ( ! headOnly ) {            PrintStream p = new PrintStream( new BufferedOutputStream( out ) );            p.println( "<HTML><HEAD>" );            p.println( "<TITLE>Index of " + path + "</TITLE>" );            p.println( "</HEAD><BODY BGCOLOR=\"#F1D0F2\">" );            p.println( "<H2>Index of " + path + "</H2>" );            p.println( "<PRE>" );            p.println( "mode         bytes  last-changed  name" );            p.println( "<HR>" );            String[] names = file.list();            Acme.Utils.sortStrings( names );            for ( int i = 0; i < names.length; ++i ) {                File aFile = new File( file, names[i] );                String aFileType;                if ( aFile.isDirectory() )                    aFileType = "d";                else if ( aFile.isFile() )                    aFileType = "-";                else                    aFileType = "?";                String aFileRead = ( aFile.canRead() ? "r" : "-" );                String aFileWrite = ( aFile.canWrite() ? "w" : "-" );                String aFileExe = "-";                String aFileSize = lengthftm.format( aFile.length() );                while (aFileSize.length() < 12)                    aFileSize = " "+aFileSize;                String aFileDate =                Acme.Utils.lsDateStr( new Date( aFile.lastModified() ) );                while (aFileDate.length() < 14)                    aFileDate += " ";                String aFileDirsuf = ( aFile.isDirectory() ? "/" : "" );                String aFileSuf = ( aFile.isDirectory() ? "/" : "" );                p.println(                         aFileType + aFileRead + aFileWrite + aFileExe +                         "  " + aFileSize + "  " + aFileDate + "  " +                         "<A HREF=\"" + names[i] + aFileDirsuf + "\">" +                         names[i] + aFileSuf + "</A>" );            }            p.println( "</PRE>" );            p.println( "<HR>" );            Serve.Identification.writeAddress( p );            p.println( "</BODY></HTML>" );            p.flush();        }        out.close();    }    private void redirectDirectory( HttpServletRequest req, HttpServletResponse res, String path, File file ) throws IOException    {        log( "redirecting " + path );        res.sendRedirect( path + "/" );    }    public void log(String msg)    {        if (logenabled)            super.log(msg);    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品三级在线观看| 国产成人在线视频网站| 久久久久久日产精品| 欧美无砖砖区免费| 91浏览器打开| 亚洲人精品午夜| 亚洲精品乱码久久久久久黑人| 久久久久亚洲蜜桃| 亚洲色图欧美偷拍| 亚洲综合免费观看高清完整版 | 日本韩国精品在线| 色综合一个色综合亚洲| 在线观看欧美黄色| 日韩欧美一级二级三级久久久| 3d动漫精品啪啪一区二区竹菊| 欧美一区二区免费视频| 日韩国产欧美在线播放| 精品一区二区av| 99久久婷婷国产| 56国语精品自产拍在线观看| 欧美精品一区视频| 亚洲免费观看在线观看| 亚洲成av人**亚洲成av**| 久久精品久久99精品久久| 成人免费视频一区| 欧美精品粉嫩高潮一区二区| 久久精品一区八戒影视| 亚洲精品视频免费观看| 蜜臀精品久久久久久蜜臀| 成人精品小蝌蚪| 欧美一级夜夜爽| 中文字幕亚洲在| 久久福利视频一区二区| 91亚洲国产成人精品一区二三| 91麻豆精品国产91久久久久久久久 | 日韩免费电影网站| 国产精品久久久久9999吃药| 午夜精品福利一区二区蜜股av | 精品日韩一区二区三区免费视频| 亚洲国产精品黑人久久久| 天天综合天天综合色| 不卡av在线网| 国产三级精品在线| 婷婷中文字幕综合| 波多野洁衣一区| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲一本大道在线| zzijzzij亚洲日本少妇熟睡| 欧美v国产在线一区二区三区| 亚洲欧美色一区| 成人一级片网址| 精品1区2区在线观看| 亚洲第一成人在线| 色婷婷亚洲精品| 国产精品丝袜在线| 国产乱对白刺激视频不卡| 久久久综合精品| 国产精品美女久久久久av爽李琼| 91亚洲精品一区二区乱码| eeuss鲁片一区二区三区| 国产亚洲精品免费| 久久99精品国产麻豆婷婷| 欧美精品v国产精品v日韩精品| 亚洲欧美另类小说视频| 99视频一区二区| 国产91综合一区在线观看| 亚洲精品在线免费播放| 久久成人免费电影| 日韩一区二区三区在线观看| 视频一区欧美精品| 欧美日韩激情一区二区三区| 亚洲成人av免费| 欧美日韩国产影片| 图片区小说区国产精品视频| 欧美日韩一区二区在线视频| 亚洲自拍都市欧美小说| 在线观看视频欧美| 欧美精品xxxxbbbb| 蜜臀久久99精品久久久画质超高清 | 日韩精品资源二区在线| 另类小说综合欧美亚洲| 久久亚洲精品国产精品紫薇| 国产一区日韩二区欧美三区| 久久久久久久久久久电影| 国产91综合网| 亚洲欧美激情视频在线观看一区二区三区| 99re热视频这里只精品| 亚洲一区二区三区中文字幕 | 国产在线一区观看| 久久精品人人做人人综合| 成人性生交大片| 亚洲美女屁股眼交3| 欧美日韩精品一二三区| 久久精品国产99国产| 国产亚洲欧洲997久久综合| 成人伦理片在线| 亚洲国产综合在线| 久久影音资源网| 91美女片黄在线| 毛片av一区二区| 亚洲视频免费观看| 欧美剧情电影在线观看完整版免费励志电影| 日韩 欧美一区二区三区| 国产欧美在线观看一区| 欧美性色黄大片手机版| 国产在线精品一区二区夜色| 亚洲色大成网站www久久九九| 日韩一区二区三区精品视频| 成人午夜大片免费观看| 五月天国产精品| 国产精品丝袜在线| 日韩女优视频免费观看| 色综合天天综合色综合av| 日本三级亚洲精品| 亚洲日本护士毛茸茸| 欧美精品一区在线观看| 欧美日韩一区在线观看| 高清av一区二区| 男男成人高潮片免费网站| 亚洲欧洲成人精品av97| 精品女同一区二区| 欧美美女bb生活片| av中文字幕不卡| 久久99国产精品尤物| 一区二区三区 在线观看视频| 国产精品私人影院| 972aa.com艺术欧美| 国产一区二区三区电影在线观看| 亚洲精品欧美激情| 国产精品国产馆在线真实露脸| 亚洲欧洲一区二区在线播放| 成人午夜视频在线观看| 久久精品国产亚洲a| 午夜精品久久久久久久久久久| 成人av动漫在线| 久久国产日韩欧美精品| 天天影视网天天综合色在线播放| 亚洲色图在线播放| 国产精品盗摄一区二区三区| 久久久久久夜精品精品免费| 精品美女在线播放| 日韩欧美一级二级三级久久久| 欧美精品色综合| 欧美精品亚洲一区二区在线播放| 在线观看成人小视频| 在线亚洲+欧美+日本专区| 99久久99久久精品免费观看| 成人福利视频网站| 成人激情av网| 91美女片黄在线观看91美女| 色一情一伦一子一伦一区| 色偷偷88欧美精品久久久| 中文字幕国产一区| 国产精品女同一区二区三区| 国产欧美精品在线观看| 国产女同性恋一区二区| 国产精品美女视频| 亚洲美女精品一区| 亚洲国产综合色| 午夜成人在线视频| 蜜桃视频第一区免费观看| 精品一区二区三区在线播放视频 | 一区二区三区国产豹纹内裤在线| 日韩美女啊v在线免费观看| 亚洲制服欧美中文字幕中文字幕| 一区二区三区资源| 亚洲不卡在线观看| 理论片日本一区| 成人国产免费视频| 欧美日韩视频专区在线播放| 欧美福利视频导航| 2024国产精品| 中文字幕一区日韩精品欧美| 一级特黄大欧美久久久| 日本欧美一区二区在线观看| 一本到一区二区三区| 91免费精品国自产拍在线不卡| 色综合天天天天做夜夜夜夜做| 欧美天天综合网| 日韩精品一区二区三区swag| 中文字幕亚洲电影| 日日夜夜免费精品| 粉嫩绯色av一区二区在线观看 | 欧美挠脚心视频网站| 欧美电影免费观看高清完整版在线| 日本一区二区三区免费乱视频| 日韩理论片中文av| 久久激情五月婷婷| 91在线porny国产在线看| 日韩一区二区免费电影| 中文字幕亚洲一区二区va在线| 日本va欧美va精品| 97精品久久久久中文字幕| 欧美mv日韩mv| 亚洲男帅同性gay1069| 欧美国产国产综合| 国产精品国产馆在线真实露脸 | 91香蕉视频在线| 日韩三级中文字幕| 亚洲另类一区二区|