🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: cn.bbs.comp.program
1 messages
1 total messages Started by ���ܵ�Сʨ Thu, 07 May 1998 00:00
��������JavaӦ�ñ��
#1069
Author: ���ܵ�Сʨ
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]
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads