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

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

?? serve.java

?? 用java開發的
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
// Serve - minimal Java HTTP server class//// 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-2002 by Dmitriy Rogatkin// this version is compatible with JSDK 2.3// http://tjws.sourceforge.net// $Id: Serve.java,v 1.1 2004/09/08 22:00:24 drogatkin Exp $package Acme.Serve;import java.io.*;import java.util.*;import java.net.*;import java.text.*;import javax.servlet.*;import javax.servlet.http.*;/// Minimal Java HTTP server class.// <P>// This class implements a very small embeddable HTTP server.// It runs Servlets compatible with the API used by JavaSoft's// <A HREF="http://java.sun.com/products/java-server/">JavaServer</A> server.// It comes with default Servlets which provide the usual// httpd services, returning files and directory listings.// <P>// This is not in any sense a competitor for JavaServer.// JavaServer is a full-fledged HTTP server and more.// Acme.Serve is tiny, about 1500 lines, and provides only the// functionality necessary to deliver an Applet's .class files// and then start up a Servlet talking to the Applet.// They are both written in Java, they are both web servers, and// they both implement the Servlet API; other than that they couldn't// be more different.// <P>// This is actually the second HTTP server I've written.// The other one is called// <A HREF="http://www.acme.com/software/thttpd/">thttpd</A>,// it's written in C, and is also pretty small although much more// featureful than this.// <P>// Other Java HTTP servers:// <UL>// <LI> The above-mentioned <A HREF="http://java.sun.com/products/java-server/">JavaServer</A>.// <LI> W3C's <A HREF="http://www.w3.org/pub/WWW/Jigsaw/">Jigsaw</A>.// <LI> David Wilkinson's <A HREF="http://www.netlink.co.uk/users/cascade/http/">Cascade</A>.// <LI> Yahoo's <A HREF="http://www.yahoo.com/Computers_and_Internet/Software/Internet/World_Wide_Web/Servers/Java/">list of Java web servers</A>.// </UL>// <P>// A <A HREF="http://www.byte.com/art/9706/sec8/art1.htm">June 1997 BYTE magazine article</A> mentioning this server.<BR>// A <A HREF="http://www.byte.com/art/9712/sec6/art7.htm">December 1997 BYTE magazine article</A> giving it an Editor's Choice Award of Distinction.<BR>// <A HREF="/resources/classes/Acme/Serve/Serve.java">Fetch the software.</A><BR>// <A HREF="/resources/classes/Acme.tar.Z">Fetch the entire Acme package.</A>// <P>// @see Acme.Serve.servlet.http.HttpServlet// @see FileServlet// @see CgiServlet// make it final?public class Serve implements ServletContext, RequestDispatcher{        private static final String progName = "Serve";	public static final String ARG_PORT = "port";	public static final String ARG_THROTTLES = "throttles";	public static final String ARG_SERVLETS = "servlets";	public static final String ARG_REALMS = "realms";	public static final String ARG_ALIASES = "aliases";	public static final String ARG_CGI_PATH = "cgi-path";	public static final String ARG_SESSION_TIMEOUT = "session-timeout";	public static final String ARG_LOG_OPTIONS = "log-options";	public static final String ARG_SOCKET_FACTORY = "socketFactory";	protected static final int DEF_SESSION_TIMEOUT = 30; // in minutes	protected static final int DEF_PORT = 9090;	    /// Main routine, if you want to run this directly as an application.	public static void main( String[] args )	{		Hashtable arguments = new Hashtable(20);		int argc = args.length;		int argn;		// Parse args.		if (argc == 0)  // a try to read from file for java -jar server.jar			try {				BufferedReader br = new BufferedReader(new FileReader("cmdparams"));				StringTokenizer st = new StringTokenizer(br.readLine(), " ");				args = new String[st.countTokens()];				argc = args.length; // tail can be nulled				for (int i=0; i<argc && st.hasMoreTokens(); i++)					args[i] = st.nextToken();			} catch(Exception e) { // many can happen			}		for ( argn = 0; argn < argc && args[argn].charAt( 0 ) == '-'; )		{			if ( args[argn].equals( "-p" ) && argn + 1 < argc )			{				++argn;				arguments.put(ARG_PORT, new Integer(args[argn]));			} else if ( args[argn].equals( "-t" ) && argn + 1 < argc )			{				++argn;				arguments.put(ARG_THROTTLES, args[argn]);			} else if ( args[argn].equals( "-s" ) && argn + 1 < argc )			{				++argn;				arguments.put(ARG_SERVLETS, args[argn]);			} else if ( args[argn].equals( "-r" ) && argn + 1 < argc )			{				++argn;				arguments.put(ARG_REALMS, args[argn]);			} else if ( args[argn].equals( "-a" ) && argn + 1 < argc )			{				++argn;				arguments.put(ARG_ALIASES, args[argn]);			} else if ( args[argn].equals( "-c" ) && argn + 1 < argc )			{				++argn;				arguments.put(ARG_CGI_PATH, args[argn]);			} else if ( args[argn].equals( "-e" ) && argn + 1 < argc )			{				++argn;				try {					arguments.put(ARG_SESSION_TIMEOUT, new Integer(args[argn]));				} catch(NumberFormatException nfe) {				}			} else if ( args[argn].startsWith( "-l" ) ) { 				if (args[argn].length() > 2)					arguments.put(ARG_LOG_OPTIONS, args[argn].substring(2).toUpperCase());				else					arguments.put(ARG_LOG_OPTIONS, "");			} else if ( args[argn].startsWith( "-" ) ) { 				if (args[argn].length() > 1)					arguments.put(args[argn].substring(1),//.toUpperCase(),								  argn<argc-1?args[++argn]:"");			} else				usage();						++argn;		}		if ( argn != argc )			usage();		/** format path mapping		from=givenpath;dir=realpath		*/		PrintStream printstream = System.err;		try {			printstream = new PrintStream(new FileOutputStream("AWS-"+System.currentTimeMillis()+".log"), true);			System.setErr(printstream);		} catch(IOException e) {			System.err.println("IO problem at setting a log stream "+e);		}		PathTreeDictionary mappingtable = new PathTreeDictionary();		if (arguments.get(ARG_ALIASES) != null)		{			File file = new File( (String)arguments.get(ARG_ALIASES) );			if ( file.exists() && file.canRead() )			{				try				{					DataInputStream in = new DataInputStream(new FileInputStream(file));					do 					{						String mappingstr = in.readLine();						if (mappingstr == null)							break;						StringTokenizer maptokenzr = new StringTokenizer(mappingstr, "=;");						if (maptokenzr.hasMoreTokens())						{							if (maptokenzr.nextToken("=").equalsIgnoreCase("from"))							{								if (maptokenzr.hasMoreTokens())								{									String srcpath = maptokenzr.nextToken("=;");									if (maptokenzr.hasMoreTokens() && maptokenzr.nextToken(";=").equalsIgnoreCase("dir"))										try										{											if (maptokenzr.hasMoreTokens())												mappingtable.put(srcpath, maptokenzr.nextToken());										} catch (NullPointerException e)										{										}								}							}							}					} while(true);				} catch ( IOException e )				{					System.err.println( "Problem reading aliases file: "+arguments.get(ARG_ALIASES) +"/" + e );				}			} else				System.err.println("FIle "+arguments.get(ARG_ALIASES)+" doesn't exist or not readable.");		}		/** format realmname=path,user:password,,,,		*/		PathTreeDictionary realms = new PathTreeDictionary();		if (arguments.get(ARG_REALMS) != null) {			try {				DataInputStream in = new DataInputStream(new FileInputStream((String)arguments.get(ARG_REALMS)));				do {					String realmstr = in.readLine();					if (realmstr == null)						break;					StringTokenizer rt = new StringTokenizer(realmstr, "=,:");					String realmname = null;					BasicAuthRealm realm = null;					if (rt.hasMoreTokens())						realmname=rt.nextToken();					else						continue;					if (rt.hasMoreTokens()) {						realm = new BasicAuthRealm(realmname);						realms.put(rt.nextToken(), realm);					} else						continue;					if (rt.hasMoreTokens()) {						String user = rt.nextToken();						if (rt.hasMoreTokens())							realm.put(user, rt.nextToken());					}				} while(true);			} catch(IOException ioe) {				System.err.println("Problem in reading realms file "+arguments.get(ARG_REALMS)+"/ "+ioe);			}		}				// Create the server.		final Serve serve = new Serve( arguments,  printstream );		final String cf = (String)arguments.get(ARG_SERVLETS);		serve.setMappingTable(mappingtable);		serve.setRealms(realms);				new Thread(new Runnable() {			public void run()			{				serve.readServlets(cf);			}			}).start();		// And add the standard Servlets.		String throttles = (String)arguments.get(ARG_THROTTLES);		if ( throttles == null )			serve.addDefaultServlets( (String)arguments.get(ARG_CGI_PATH) );		else			try			{				serve.addDefaultServlets( (String)arguments.get(ARG_CGI_PATH), throttles );			}			catch ( IOException e )			{				System.err.println( "Problem reading throttles file: " + e );				System.exit( 1 );			}				// And run.		serve.serve();				System.exit( 0 );	}    private static void usage()    {		System.err.println( "usage:  " + progName + " [-p port] [-s servletpropertiesfile] [-a aliasmappingfile] [-l[a][r]] [-c cgi-bin-dir] [-e [-]duration_in_minutes] [-socketFactory class name and other parameters}" );        System.exit( 1 );    }        private void readServlets(String cfgfile)    {    /** servlet.properties file format    servlet.<servletname>.code=<servletclass>    servlet.<servletname>.initArgs=<name=value>,<name=value>        */                Hashtable servletstbl, parameterstbl;        servletstbl = new Hashtable();        parameterstbl = new Hashtable();        if (cfgfile != null)        {            File file = new File( cfgfile );            if ( file.exists() && file.canRead() )            {                try                {                    DataInputStream in = new DataInputStream(new FileInputStream(file));                    /** format of servlet.cfg file                    servlet_name;servlet_class;init_parameter1=value1;init_parameter2=value2...                    */                    do                     {                        String servletdsc = in.readLine();                        if (servletdsc == null)                            break;                        StringTokenizer dsctokenzr = new StringTokenizer(servletdsc, ".=,", false);                        if (dsctokenzr.hasMoreTokens())                        {                            if (!dsctokenzr.nextToken().equalsIgnoreCase("servlet"))                            {                                System.err.println("No leading 'servlet' keyword, the sentence is skipped");                                break;                            }                            if (dsctokenzr.hasMoreTokens())                            {                                String servletname = dsctokenzr.nextToken();                                                                if (dsctokenzr.hasMoreTokens())                                {                                    String lt = dsctokenzr.nextToken();                                    if (lt.equalsIgnoreCase("code"))                                    {                                        if (dsctokenzr.hasMoreTokens())                                            servletstbl.put(servletname, dsctokenzr.nextToken("="));                                    }                                    else if (lt.equalsIgnoreCase("initArgs"))                                    {                                        Hashtable initparams = new Hashtable();                                        while (dsctokenzr.hasMoreTokens())                                        {                                            String key = dsctokenzr.nextToken("=,");                                            if (dsctokenzr.hasMoreTokens())                                                initparams.put(key, dsctokenzr.nextToken(",="));                                        }                                        parameterstbl.put(servletname, initparams);                                    }                                    else                                        System.err.println("Unrecognized token "+lt+" in "+servletdsc+ ", the line's skipped");                                }                            }                        }                    }                    while (true);                }                catch ( IOException e )                {                    System.err.println( "Problem reading cfg file: " + e );                }                Enumeration se = servletstbl.keys();                String servletname;                while (se.hasMoreElements())                {                    servletname = (String)se.nextElement();                    addServlet(servletname,                         (String)servletstbl.get(servletname),                         (Hashtable)parameterstbl.get(servletname));                }            }        }    }    int port;	String hostName;    private PrintStream logStream;    private boolean useAccLog;    private boolean showUserAgent;    private boolean  showReferer;    protected PathTreeDictionary registry;    protected PathTreeDictionary realms;    private PathTreeDictionary mappingtable;    private Hashtable attributes;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩女优视频免费观看| 欧美三级视频在线观看| 粉嫩蜜臀av国产精品网站| 丁香婷婷深情五月亚洲| 久久精品网站免费观看| 亚洲黄色av一区| 捆绑变态av一区二区三区| 岛国av在线一区| 日韩一区二区三区视频在线观看| 中文字幕一区二区视频| 麻豆精品蜜桃视频网站| av激情亚洲男人天堂| 欧美一区二区私人影院日本| 成人免费小视频| 色婷婷激情久久| 久久这里都是精品| 日韩中文字幕区一区有砖一区| 国产精品资源网站| 欧美高清视频在线高清观看mv色露露十八 | 香蕉av福利精品导航| 成人一级片在线观看| 亚洲男人的天堂av| 高清不卡一区二区| 一区二区三区成人| 色噜噜狠狠成人网p站| 亚洲国产精品精华液2区45| 日韩二区三区四区| 在线观看91av| 国产高清亚洲一区| 久久精品水蜜桃av综合天堂| 91久久精品一区二区三| 久久草av在线| 亚洲男同1069视频| www国产精品av| 欧美中文字幕一二三区视频| 一区二区三区四区五区视频在线观看| 欧美老女人第四色| 成人av免费在线观看| 国产精品久久久爽爽爽麻豆色哟哟 | www.在线欧美| 三级影片在线观看欧美日韩一区二区| 久久久综合精品| 国产高清久久久| 日一区二区三区| 亚洲少妇30p| 欧美在线你懂得| yourporn久久国产精品| 久久精品免费观看| 亚洲午夜三级在线| 日韩午夜电影在线观看| 欧美在线免费观看视频| 国产福利一区二区三区在线视频| 肉色丝袜一区二区| 亚洲精品欧美在线| 中文字幕一区不卡| 久久精品在这里| 精品久久久久香蕉网| 福利一区福利二区| 久久国产麻豆精品| 丝袜美腿亚洲综合| 亚洲成av人片在线观看无码| 怡红院av一区二区三区| 中文字幕中文字幕在线一区 | 激情久久五月天| 欧美极品aⅴ影院| 日韩欧美国产综合一区 | 日韩国产一区二| 亚洲香蕉伊在人在线观| 一区二区三区四区激情| 亚洲色图一区二区| 亚洲欧洲av另类| 中文字幕一区av| 亚洲码国产岛国毛片在线| 国产精品欧美一区二区三区| 欧美日韩精品一区二区三区四区| 免费人成黄页网站在线一区二区| 国产午夜精品久久久久久久| 精品国产乱码久久| 欧美羞羞免费网站| 国产精品一线二线三线精华| 精品一区二区在线看| 亚洲精品久久久蜜桃| 亚洲综合免费观看高清在线观看| 久久综合狠狠综合久久综合88| 精品精品国产高清a毛片牛牛 | 久久网站最新地址| 欧美精品一区二区三区久久久| 欧美mv日韩mv亚洲| 久久久精品人体av艺术| 国产精品久99| 一区二区成人在线视频| 亚洲一区电影777| 日韩黄色一级片| 激情六月婷婷久久| 成人夜色视频网站在线观看| 一本久道久久综合中文字幕| 欧美色综合影院| 日韩欧美不卡在线观看视频| 久久一二三国产| 成人欧美一区二区三区小说| 亚洲激情综合网| 蜜桃一区二区三区在线观看| 国产精品一区一区| 91网上在线视频| 国产69精品久久99不卡| 99精品视频在线观看免费| 国产不卡在线视频| 一本大道av一区二区在线播放| 欧美日韩一区高清| 久久综合狠狠综合久久激情| 中文字幕综合网| 视频一区在线视频| 成人午夜av影视| 91精品午夜视频| 91麻豆精品国产91久久久久久久久 | 亚洲精品第1页| 久久99国产精品免费| 成人黄色av网站在线| 欧美久久久一区| 国产精品色呦呦| 日韩二区在线观看| 99精品国产99久久久久久白柏| 51精品视频一区二区三区| 国产亚洲欧洲一区高清在线观看| 亚洲人xxxx| 韩国毛片一区二区三区| 欧美在线你懂的| 国产欧美视频在线观看| 亚洲精品一区二区三区四区高清 | 精品国产伦一区二区三区观看体验| 中文字幕av一区二区三区免费看 | 亚洲精品国产a| 国产传媒日韩欧美成人| 欧美日韩一区二区三区四区| 久久九九国产精品| 日av在线不卡| 欧美三级在线播放| 自拍av一区二区三区| 国产精品一区二区三区乱码| 7777精品伊人久久久大香线蕉经典版下载 | www.欧美.com| 久久色在线视频| 日本三级亚洲精品| 色天天综合色天天久久| 中文字幕国产一区| 国产精品亚洲人在线观看| 91麻豆精品国产91久久久使用方法| 一区二区三区免费在线观看| 成人性视频免费网站| wwwwww.欧美系列| 精品在线观看视频| 欧美一级二级三级蜜桃| 午夜精品久久久久久久蜜桃app| 青青草国产成人99久久| 在线亚洲高清视频| 自拍偷拍国产精品| 99精品久久99久久久久| 中文在线一区二区| 粉嫩久久99精品久久久久久夜| 久久丝袜美腿综合| 韩国一区二区在线观看| 欧美va日韩va| 精品伊人久久久久7777人| 精品免费日韩av| 国产在线观看一区二区| www.欧美亚洲| 亚洲少妇最新在线视频| 91蝌蚪porny| 亚洲精品伦理在线| 欧美在线观看禁18| 天堂午夜影视日韩欧美一区二区| 欧美亚洲免费在线一区| 亚洲午夜久久久久中文字幕久| 欧美色精品在线视频| 亚洲成av人片在线| 日韩三级免费观看| 久久国产精品区| 欧美国产精品专区| 成人免费三级在线| 亚洲男人的天堂在线观看| 欧美三级电影精品| 欧美aaa在线| 久久先锋资源网| 91在线云播放| 亚洲午夜国产一区99re久久| 91精品在线免费观看| 国产真实乱偷精品视频免| 国产精品欧美久久久久一区二区| 色综合色狠狠天天综合色| 亚洲成人中文在线| 久久综合九色综合97婷婷女人 | 成人精品视频.| 综合网在线视频| 欧美久久久久久久久中文字幕| 免费人成黄页网站在线一区二区 | 中文一区一区三区高中清不卡| 99久久精品免费看| 亚洲va欧美va人人爽| 久久综合久久综合久久综合| 99久精品国产|