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