🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: cn.bbs.comp.program
Article #1069

��������JavaӦ�ñ��

#1069
From: ���ܵ�Сʨ
Date: Thu, 07 May 1998 00:00
205 lines
13285 bytes
   ��ĿǰΪֹ,���Ŵ�ҶԿͻ���Java�Ѿ��Ƚ���Ϥ��,����������
��д������ɫ��App letsС���򡣵���,��ҿ��ܲ�̫��Ϥ������
��Java,Ҳûд���������Applet�����Ľ�������߳����������Jav
a���ž���
    ��������Java(SSJ,Server Side Java)�ǹ�����ؽӿ�(CGI)��
�ͼ�������API�������(����Netscape��NSAPI��Microsoft��ISAPI)
�Ļ���塣��ʱ���dz�SSJΪServlets���������Applet��
    �������ҽ��ܷ�������Java������һ����ʵ�ַ�������Ja
va��ִ�г���,Netscp e��֮Ϊ��������Applets(SSA,Server Side A
pplet)��
    SSA��CGI�Ľű�����һ��,����"get"��"post"����,������һ��W
ebҳ��(ͨ����HTML��ʽ)������SSJ��ͬNSAPI/ISAPIһ���Ƕ�̬��װ
���������,��������CGI����ʱ���ӳ�,ҲʹSSJ��������ִ����ά
���������״̬,���籣������ݿ⿪�ŵ����ӡ�
    SSA�������Լ���"ɳ��"("sandbox")��ִ��,������Ա�֤��ȫ
������,һ�������Ե�p plet������NSAPI/ISAPI�����������ݻ���
��������,���ְ�ȫ����������ִ��Applet,����ͻ����Java������
ִ��Appletһ��SSA����Ҫ���ŵ���Java��ƽ̨�޹��Ժ��������
�����ԡ�
    ������Netscape������Enterprise 2.0��Fast Track 2.0����
���ܷ�������JavaӦ�õĿ�����

    ׼��������
    �ڱ�д��������Appletǰ,��Ҫ׼����Ӧ�ķ����������ȴ򿪷�
������Java���������ڷ�������������"Programs->Java"���µ��"y
es"��ť����Java������,�������������ͻ���ʾ����"Java applet d
irectory",�Դ��SSA���ļ����������ṩ��ȱʡ��ַ����Unix����,
ȱʡֵ��/usr/ns-home/plugins/java/applets����Windows����,ȱ
ʡֵΪc:Program Fil es\Netscape\Server\plugins\Java\applets(
ע:�����������,Netscape��������\  �� / ������𡣲��ص���,N
etscape������������б�ܵĴ��?ʽ����ͬ�ġ�)���ܵĻ����ʹ��
ȱʡĿ¼�����ϰ�����Լ���Ŀ¼,ֻҪ��Ŀ¼���ڷ������ĸ�Ŀ¼
����,�Ϳɰ�ȱʡĿ¼�µ������ļ��������Լ��Ĺ���Ŀ¼��,������
Щ�Ķ�,�رշ�����,�����������÷�������
    ʵ��
    ����,��������Netscape�ṩ��Applet����ʵ�顣�������ָ��h
ttp://servername/se rver-java/Connect,����ز���ʾhttp://www
.meer.net/barn/index.html��Connet apple tΪȡ����ҳ�潨��һ
��socketͨѶ,����������һ������ǽ����,����ܻᵼ�·�������
������,�����Ǽٶ�����ǽ������socket,���ǽ��༭Connect appl
et����,ʹ�����ڲ�ͬ��Web�������з��ʲ�ͬҳ�档
    ��"Java appletĿ¼"�пɵõ�Connect.java�ļ�������
��������Applet�Ļ���,��������Ҫ������HttpApplet,�������з�
������Applet�ij����ࡣʵ�ַ�������Applt �����Ψһ������run
����,Appletÿ����һ��"hit"��Ҫִ��һ�θ÷�������ʹ���ת����
����֮ǰ,Connect��run������"host"��һ��socket��ȡ��"reques
t"��ͨ�����ñ���"hs t",���Է�����һ̨����;ͬ�����ñ���"reque
st",���Է���ij"host"�ϵ���һ��ҳ�档
    import netscape.server.applet.*;
    import java.io.PrintStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.io.DataInputStream;
    import java.net.Socket;
    class Connect extends HttpApplet {
    public void run() throws Exception {
        String host = "www.meer.net";
        //���߿��Ը���Լ��Ļ����޸Ĵ�������
        int port = 80;
        String request = "GET /barn/index.html HTTP/1.0\n";
        // ͬ������޸�
        Socket s = new Socket(host, port);
        OutputStream os = s.getOutputStream();
        PrintStream op = new PrintStream(os);
        op.println(request);
        InputStream is = sam();
        DataInputStream di = new DataInputStream(is);
        String line;
        if (returnNormalResponse("text/html")) {
            PrintStream out = getOutputStream();
            out.println("&lth1&gtData on "+host+ "  port  "+
 port+ "</h1&gt" );
            out.println("request: "+request+"<hr>");
            while ((line = di.readLine()) != null)
                out.println(line);
        }
    }}
    ���ñ���"host"��"request"��,��һ���������±���Connect��
    ��Windowsϵͳ��,�ѱ�׼javac��������classpath���óɰ���se
rv2-0.zip.javacclss path..\classes\serv2-0.zip Connect.java
��
    ��Unixϵͳ��,Netscape��Java appletĿ¼���ϼ�Ŀ¼���ṩһ
��Java������(javac�����javac���������ʵ������һ������java 
sun.tools.javac.Main�Ľű�������ijЩϵͳ��,sun.tools.javac
.Main������ʹ���°�JDK1.1�еķ���,����java.lang.Characte.is 
JavaLetterOrDigit(),���û��JDK1.1,���ܻ������ܶ��鷳�����
ѡ���õı�׼jaac������,��javacclasspath../classes/serv2-0.
zip Connect.java�����Ҫʹ�÷������ṩ��javac�ű�����,ֻ�� 
��"../javac"���滻"javac"��
    �������������,���ܻ��������һ������:
    Connect.java:1:Package netscape.server.applet not found 
in import.import nt scape.server.applet.*;
    ^
    1 error��import�����ɾ��wildcards,�Ϳɱ����������
    ��Unixϵͳ��,Netscape��Java appletĿ¼���ṩһ��makefile
�ļ�,�Կ���Applet�ı��롣��ϧ,���makefile�ļ�ʹ�á�%��wildc
ard,����mk/nmake����չ,��ʱ���ɻ�ȡ����롣�����������:
    %.class;%.java../javac -classpath ../classes/serv2-0.zip
 $ *.java����취��ʹ��suffixes����,�༭makefile�ļ��ĵ�һ��
,��:SUFFIXES :java.classȻ��ִ��:
    javac -classpath ../classes/serv2-0 zip $ <��ɾȥ��../,
����makefile�ļ��Ϳɵ��ñ�׼��javac����������������µ�makef
ile�ļ�,���±���Connect.java�ļ�,Ȼ��ִ��"make"��

    Methods
    ������ܼ������õķ���(Methods)��

    1.PrintStream getOutputStream() throws IOException;
    ����һ��PrintStream,����Ӧ������ͻ�����,�˷���������Sys
tem.out��
    2.Hashtable getFormData() throws IOException;
    ����һ��Hashtable(��ϣ��),���д洢��HTPP�����name-value
��,value���ǴӼ��ܵ�URL��ʽ���ܺ�õ� �ġ���û��form data,��
��ʾI/O�쳣��
    3.String getFormField(String fieldName)throws IOExceptio
n;
    ����getFormField�������ҵ�һ��field,�ҽ���һ������û��fo
rm data,Ҳ��ʾI/O�쳣��

    4.boolean retrunNormalResponse(String contentType)throws
 IOException;
    ����ڲ�����ָ����������������HTTP��Ӧ������"get"��"post
"�����򷵻�ֵΪtru, ����"head"�����򷵻�false��

    5.public boolean returnErrorResponse(String contentType,
int status,Stringre ason) throws IOException;
    ������Ӧ���� ��������������:�������͡�״̬(����HttpApp
let BAD-REQUEST,���׼��������Ϊ400),�Լ���ȱʡ������˵��
����ԭ����ַ�
    Netscape����ķ������а�װ��һ��API�����ֲ�,��������࿪
����������Java�������õķ�������Unixϵͳ��,ͨ��/usr/ns-home/
bin/httpd/admin/html/manual/pg/javapi.t m,���ҵ��������ֲ�;
��Windowsϵͳ��,·����ΪC:\Program Files\Netscape\Server\bn\
 httpd\admin\html\manual\pg\javapi.htm��
    ����"Hello World"!
    ����������Ӧ��������������дһ��"Hello World"��������App
let�������"target" ��ʱ,��Applet����target�ʺ�Hello,�����
��"World"�ʺ�Hello��
    import netscape.server.applet.HttpApplet;
    import java.io.IOException;
    import java.io.PrintStream;
    class Hello extends HttpApplet {
    /* ȱʡ�����,��"World"�ʺ�Hello */
    String helloTarget = "World";
    /* run() ������������  */
    public void run() throws Exception {
    /* getOutputStream() ������Clientͨ��  */
    PrintStream out = getOutputStream();
    /* ʹ�� getFormField() ��ȷ���Ƿ���"World"����������ʺ�
Hello*/
    String formTarget = null;
    try {
      formTarget = getFormField("target");
      if (formTarget != null) {
        helloTarget = formTarget;
      }
    }
    catch (IOException e) {
      if (! e.getMessage().startsWith("missing query string"
)) {
        handleException(e, out);
      }
    }
    /* �ʺ�Hello  */
    if (returnNormalResponse("text/html")) {
      try {
        out.println("Hello, " + helloTarget + "!");
      }
      catch (Exception e) {
        handleException(e, out);
      }
    }  }  private void handleException(Exception e, PrintStr
eam out) {
    try {
      returnErrorResponse("text/html", SERVER_ERROR, "Except
ion thrown");
    }
    catch (IOException ioe) {}  // ��ͼ��ӡԭʼexception
    out.print("&lth1&gt");
    out.print(e);
    out.print("&lt/h1&gt\n");
    out.print("&ltpre&gt");
    e.printStackTrace(out) ;
    out.print("&lt/pre&gt");
    return;
    }}
    �����������Applet������Netscape�µķ�������Appletһ����
netscape.server.apl et.HttpApplet������,�������˷���run();ͨ
�����getOutputStream,�ɿ��ٵصõ�һ�������,����ӡ"Hello"(
���ӡʧ�ܵ�ԭ��)������getFormField������Ƿ����һ����ѡһ
��target��,Ȼ�󷵻�һ�����"text/html"��Ӧ,����ӡ"Hello"
������ע�⵽,��Appets ���returnNormalResponse()�ķ���ֵ,��
����falseʱ�����κβ��������Է���ֵ���м��Ļ�,��������
"head"����Ҳ�᷵����ݡ�

--
 ________ _____          _____        ______________  _____ 
 ___  __ \___(_)________ ___(_)       __  ___/___  /_ ___(_)
 __  /_/ /__  / ___  __ \__  /        _____ \ __  __ \__  / 
 _  ____/ _  /  __  /_/ /_  /         ____/ / _  / / /_  /  
 /_/      /_/   _  .___/ /_/          /____/  /_/ /_/ /_/   
                /_/                                         

�� ��Դ:���ϴ�С�ٺ���Ϣ����վ bbs.nju.edu.cn��[FROM: hsia.nju.edu.cn]
Technical Details
Message-ID: <3OOYQf$tfC@bbs.nju.edu.cn>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: Chinese,GB
X-Google-Thread: fc86e,483bcc15491b01e5,start
X-Google-Attributes: gidfc86e,public
From: pipishi.bbs@bbs.nju.edu.cn (���ܵ�Сʨ)
Subject: ��������JavaӦ�ñ��
Date: 1998/05/07
Message-ID: <3OOYQf$tfC@bbs.nju.edu.cn>
X-Deja-AN: 351554915
X-Filename: Programming/M.894547721.A
Organization: nju_bbs
Newsgroups: cn.bbs.comp.program