Article View: cn.bbs.comp.program
Article #1069��������JavaӦ�ñ��
From: ���ܵ�Сʨ
Date: Thu, 07 May 1998 00:00
Date: Thu, 07 May 1998 00:00
205 lines
13285 bytes
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("<h1>Data on "+host+ " port "+
port+ "</h1>" );
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("<h1>");
out.print(e);
out.print("</h1>\n");
out.print("<pre>");
e.printStackTrace(out) ;
out.print("</pre>");
return;
}}
�����������Applet������Netscape�µķ�������Appletһ����
netscape.server.apl et.HttpApplet������,�������˷���run();ͨ
�����getOutputStream,�ɿ��ٵصõ�һ�������,����ӡ"Hello"(
���ӡʧ�ܵ�ԭ��)������getFormField������Ƿ����һ����ѡһ
��target��,Ȼ��һ�����"text/html"��Ӧ,����ӡ"Hello"
������ע�,��Appets ���returnNormalResponse()�ķ���ֵ,��
����falseʱ�����κβ��������Է���ֵ���м��Ļ�,��������
"head"����Ҳ�᷵����ݡ�
--
________ _____ _____ ______________ _____
___ __ \___(_)________ ___(_) __ ___/___ /_ ___(_)
__ /_/ /__ / ___ __ \__ / _____ \ __ __ \__ /
_ ____/ _ / __ /_/ /_ / ____/ / _ / / /_ /
/_/ /_/ _ .___/ /_/ /____/ /_/ /_/ /_/
/_/
[m[1;36m�� ��Դ:���ϴ�С�ٺ���Ϣ����վ bbs.nju.edu.cn��[FROM: hsia.nju.edu.cn][m
Technical Details
Message-ID:
<3OOYQf$tfC@bbs.nju.edu.cn>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailShow 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