⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 45.html

📁 写给JSP初级程序员的书
💻 HTML
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<meta name="description" content="Java,JDBC,EJB,Open Source,jdk,rmi">
<meta name="Keywords"
content="Java, servlets, Java servlet, Javascript, ActiveX, VRML,
        applet, applets, directory, news, jdbc, applications, 
        Java applications, Java developer, Java development, developer, 
        classes, Jars.com, Jars, intranet, Java applet, Javabeans, 
        Java products, JDK, Java development kit, java development environment, JIT,
        JavaPlan, enterprise tools, JVM, Java Virtual Machine, Java resources, 
        SUN, CGI, Perl, database, network, html,
        xml, dhtml, rating, ratings, review, jars, cgi, programming,
        software review, software rating">
<title>csdn_JAVA 数 据 流 的 应 用</title>
<style>
.news {   BACKGROUND: #007cd3;  font-family: "宋体"; font-size: 9pt }
.t {  font-family: "宋体"; font-size: 9pt }
.t1 { color:#007cd3;  font-family: "宋体"; font-size: 9pt }
.white { font-family: "宋体"; font-size: 9pt;color:#FFFFFF }
.red { font-family: "宋体"; font-size: 9pt;color:#FF0000 }
A:visited {color:#0000FF}
A:hover {color: #ff6666; text-decoration: none}
.text {font-size: 12px; line-height: 160%; font-family: "宋体"}
.text1 {color:#000000; font-size: 12px; line-height: 130%; font-family: "宋体"; text-decoration: none}
.text1:visited {color:#000000}
.text1:hover {color: #000000}
.text2 {color:#000000; font-size: 12px; line-height: 130%; font-family: "宋体"; text-decoration: none}
.text2:visited {color:#000000}
.text2:hover {color: #000000}
.text3 {font-size: 12px; line-height: 100%; font-family: "宋体"; text-decoration: none}
.large {font-size: 14.8px; line-height: 130%}
</style>
</head>

<body


<center>




  <tr>
    <td WIDTH="100%" VALIGN="TOP">
      <tr>
        <td WIDTH="100%" CLASS="white"></td>
      </tr>
    
     
      <tr>        <td WIDTH="100%" bordercolor="#FFFFFF" CLASS="t" bgcolor="#F0F0F0" colspan="2">
        <br>
      JAVA 数 据 流 的 应 用 </H2></FONT> 
      </CENTER> 
      <P><FONT color=#ffffff>----</FONT> 常 常 逛WWW 的 人, 一 定 不 会 对 许 多 起 始 页 的 计 数  
      器 感 到 陌 生。 当 你 每 一 次 光 临 某 些 站 点 的 起 始 页 时, 起 始 页 的 计 数 器 就 会 亲 切 的 告 诉 你,  
      从 某 年 某 月 某 日 开 始 算 起, 您 是 第 几 个 光 临 这 个 起 始 页 的 人。 你 可 能 知 道 这 是 用CGI 做  
      的, 后 面 是 什 么 ? 不 是 十 分 清 楚 吧 ! 我 们 这 里 来 分 析 一 下 计 数 器 吧; 如 是 我 写 下 本 文。 当  
      你 看 完 本 文 之 后 人 你 会 觉 得 计 数 器 是 这 样 的 简 单、 以 后 上Internet 网 时 不 会 觉 得 漂 亮 的  
      是 多 么 的 复 杂, 而 是 一 个CGI 和 数 据 流 的 杰 作。 看 看 吧 是 多 么 的 平 常 ! <PRE>import java.net.*;
import java.io.*;
import java.awt.*;
</PRE> 
      <P><FONT color=#ffffff>----</FONT> 在 这 里 小 程 序 引 入 了 三 类 库。 都 是 标 准 类 库, 为  
      了 使 用 数 据 流 而 引 入 了java.io.* 类 库; 为 了 使 用URL 引 入 了java.net.* 类 库; 同 时 为 了  
      在 字 形 与 图 形 引 入 了java.awt.* 类 库。 <PRE>public class JavaCounter extends java.applet.Applet
这里扩展了Applet,这里的JavaCounter是继承了Applet的属性。

{
Font fn=new Font(&quot;TimesRoman&quot;,Font.BOLD,24);
设置了显示的字形和使用的确24点字模。
String counter_str,myurl;
String filename;
取得资源Counter。
public void init()
</PRE> 
      <P><FONT color=#ffffff>----</FONT> 关 键 字public 告 诉java 编 译 器 其 它 对 象 从  
      类Applet 的 外 部 调 用init 函 数 关 键 字void 告 诉java 编 译 器init 不 向prowser 返 回 任 何  
      值。 <PRE> {
 filename=getParameter(&quot;filename&quot;);
 if(filename==null) filename=&quot;home.txt&quot;;
 myurl=&quot;http://202.115.144.32/cgi-bin/counter.exe?home.txt&quot;;
 try{
  URL serverURL=new URL(myurl);
  DataInputStream dis;
  dis=new DataInputStream(serverURL.openStream());
  counter_str=dis.readLine();
  counter_str=dis.readLine();
  dis.close();
  }
 catch(MalformedURLException mfURLe) {}
   catch(IOException ioe) {}
 }
</PRE> 
      <P><FONT color=#ffffff>----</FONT> 这 里 我 们 从 网 络 的 远 程 取 得 数 据 文 件 的 过 程。  
      注: 虽 然 有 此URL 位 置 看 起 来 长, 但 在JAVA 中 基 本 上 是 一 资 源 的 传 输 协 议, 加 上 一 个 资 源  
      的 名 称。 如 上 面 中 的HTTP 一 样 都 是 典 型 的 传 输 协 议。 通 常 具 有 一 个 或 多 个 结 构。 为 了 处 理  
      方 便, 在JAVA 中 特 别 为URL 位 置 设 计 了URL 类, 可 以 用 一 个URL 对 象 记 录 下 完 整 的URL 信 息,  
      这 里 我 们 使 用 的 就 是URL。 同 时 我 们 用 了java.io.*; 中 的 数 据 流 的 程 序 包。 数 据 流 可 以 看  
      作 是 数 据 的 通 信 途 径。 通 常 是 建 立 一 条 数 据 通 道 后 在 程 序 读 取 时 向 这 个 通 道 发 送 信 号、  
      远 方 数 据 自 动 送 来 的 过 程 我 们 叫 做" 数 据 流"。 而 本 程 序 主 要 部 分 也 是 这 些。 <PRE>public void paint(Graphics g)
 {
 g.setFont(fn);
 g.setColor(Color.blue);
 g.drawString(&quot;庆祝吧!
       第&quot;counter_str&quot;位朋友您的到来!&quot;,10,50);
 }
</PRE> 
      <P><FONT color=#ffffff>----</FONT> 当 我 们 从 数 据 流 收 到 信 息 后, 就 由Applet 中 的  
      方 法paint 去 处 理, 并 把 设 好 的 字 形 显 示 于 屏 幕 上。 <PRE>}
</PRE> 
      <P><FONT color=#ffffff>----</FONT> 注: 编 好 这 个 程 序 之 后 还 要 一 个CGI 程 序 才 能 发  
      挥 作 用。 还 是 说 一 下CGI 的 其 本 思 路 吧 ! 我 们 先 打 开"counter.exe?home.txt" 的 记 录 读  
      出 记 录 加1 并 更 新 数 据 关 闭 记 录。 并 输 出 记 录 通 过 数 据 流 给JAVA 程 序 读 取 的 方 式。 下  
      面CGI 例 子 是 用C++ 编 的 你 不 妨 试 试 吧 ! ! 同 时 为 了 读 和 应 用 的 方 便 写 下 了CGI 与JAVA 的  
      全 部 原 程 序。  
      <P><FONT color=#ffffff>----</FONT> Java 原 程 序 如 下: <PRE>import java.net.*;
import java.io.*;
import java.awt.*;
public class JavaCounter extends java.applet.Applet
{
Font fn=new Font(&quot;TimesRoman&quot;,Font.BOLD,24);
String counter_str,myurl;
String filename;
public void init()
 {
 filename=getParameter(&quot;filename&quot;);
 if(filename==null) filename=&quot;home.txt&quot;;
 myurl=&quot;http://202.115.144.32/
 cgi-bin/counter.exe?home.txt&quot;;
 try{
  URL serverURL=new URL(myurl);
  DataInputStream dis;
  dis=new DataInputStream(serverURL.openStream());
  counter_str=dis.readLine();
  counter_str=dis.readLine();
  dis.close();
  }
 catch(MalformedURLException mfURLe)
  {}
 catch(IOException ioe)
  {}
 }

public void paint(Graphics g)
 {
 g.setFont(fn);
 g.setColor(Color.blue);
 g.drawString(counter_str,10,50);
 }

}
</PRE> 
      <P><FONT color=#ffffff>----</FONT> CGI 程 序 代 码 如 下: <PRE>#include &lt; windows.h &gt;
#include &lt; stdio.h &gt;

int SplitArgs (char *str, char *argv[]);
int PASCAL WinMain (HINSTANCE hInstance, 
HINSTANCE hPrevInstance,
     LPSTR lpszCmdLine, int nShow)
{
 int argc;
 char *argv[32];        // Max 32 command line arg
 long num;
 FILE *fp;
 argc = SplitArgs(lpszCmdLine, argv); 
    // Split command line args
puts(&quot;Content-type: text/plain\n&quot;);
     // NOTE: blank line here
 if(argc&lt; =1)
 {printf(&quot;!!!Too less Parameter!!!&quot;);
 printf(&quot;\n用法为在counter.exe?
       后加上数据文件名&quot;);
 return(1);
 }
 fp=fopen(argv[1],&quot;r&quot;);
 fscanf(fp,&quot;%ld&quot;,&amp;num);
 num++;
 printf(&quot;\n%ld&quot;,num);
 fclose(fp);
 fp=fopen(argv[1],&quot;w&quot;);
 fprintf(fp,&quot;%ld&quot;,num);
 fclose(fp);
 return(0);
}

int SplitArgs (char *str, char *argv[])
{
 int argc;
 char *cp;
 static char safe_copy[256];   
   // Single threaded, this is OK
 char appname[256];

 GetModuleFileName(NULL, appname, 256); 
    // Get app filename

 memset(safe_copy, 0, sizeof(safe_copy));
 // Must clear old stuff...
 strcpy(safe_copy, appname);    // VC++ 2.0
 strcat(safe_copy, &quot; &quot;);
 strcat(safe_copy, str);

 argc = 0;
 cp = safe_copy;
 while (*cp)        // Stop at null character
 {
  while(*cp &amp;&amp; isspace (*cp)) 
      // Scan past white or to end
   cp += 1;
  if(*cp)        // On next token or at end
   argv[argc++] = cp;    // Next token: ptr and bump
  while(*cp &amp;&amp; !isspace (*cp))  // Scan to white or end
   cp += 1;
  *cp++ = '\0';      // Terminate this token
 }
 return (argc);
}
</PRE> 
      <P><FONT color=#ffffff>----</FONT> 注: 一 定 要 另 加 一 个 文 本 文 件 名 要 与JAVA 中 文  
      本 文 件 同 名, 还 需 要 在 文 本 文 件 中 写 一 个 字 符"1" 就 好 了。 与 您 的CGI 程 序 放 在 同 一 目 录  
      中。
        </td>
      </tr>
    </td>
  </tr>
</div>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -