e股脑电脑教程网
  • 首 页
  • 操作系统
  • 应用软件
  • 下载工具
  • 影音视频
  • 办公软件
  • 媒体制作
  • 网站建设
  • 平面设计
  • 数据库
  • 程序开发
  • 视频教程
编辑推荐: | 文章搜索:
您现在的位置: e股脑 >> 程序开发 >> JSP教程 >> 用Java实现Web服务器 >> 教程正文
 
教程搜索
 
 
相关教程
  • JSP分页技术实现
  • 使用XML封装数据库操作语句的实现(完
  • 结合”XML封装数据库操作语句的实现”
  • 如何使用XML实现多渠道接入网站的构架
  • 深入浅出taglib
  • 在JSP中编写你的第一个Tag
  • 用Java实现Web服务器
  • 如何利用xml,javascript绕开apple
  • 缓存JSP显示的内容
  • 关于JAVA的分页查询操作技术
  • 漫步j2ee之jsp技术(1)
  • 漫步j2ee之jsp技术(2)
  • Portlet应用开发(Portlet Specs v1.0)
  • 如何用jsp输出存在于oracle数据库Blob
  • Servlet设计
  • 用servlet显示图片
 
 

图文教程


  • Windows抢了谁的饭碗 非主流操作系统To

  • 地球还是火星 平常心看“非主流”

  • 综合运用Office 2007批量制作奖状

  • 没有系统盘如何才能修复受损系统?

  • 巧妙运用Excel中边界的附加功能!
 
 
赞 助 商
 
 
用Java实现Web服务器
  • 来源:e股脑
  • 点击次数:
  • 更新时间:2007-8-9
reak ;
  • StringTokenizer

    s = new StringTokenizer (headerLine);
  • String temp = s.nextToken();
  • if (temp.equals("GET")) {
  • String fileName = s.nextToken();
  • fileName = "." + fileName ;
  • // 打开所请求的文件
  • FileInputStream fis = null ;
  • boolean fileExists = true ;
  • try
  • {
  • fis = new FileInputStream ( fileName ) ;
  • }
  • catch ( FileNotFoundException e )
  • {
  • fileExists = false ;
  • }
  • // 完成回应消息
  • String serverLine = "Server: a simple java httpServer";
  • String statusLine = null ;
  • String contentTypeLine = null ;
  • String entityBody = null ;
  • String contentLengthLine = "error";
  • if ( fileExists )
  • {
  • statusLine = "HTTP/1.0 200 OK" + CRLF ;
  • contentTypeLine = "Content-type: " +
  • contentType( fileName ) + CRLF ;
  • contentLengthLine = "Content-Length: "
  • + (new Integer (fis.available())).toString()
  • + CRLF;
  • }
  • else
  • {
  • statusLine = "HTTP/1.0 404 Not Found" + CRLF ;
  • contentTypeLine = "text/html" ;
  • entityBody = "<HTML>" +
  • "<HEAD><TITLE>404 Not Found</TITLE></HEAD>" +
  • "<BODY>404 Not Found"
  • +"<br>usage:http://yourHostName:port/"
  • +"fileName.html</BODY></HTML>" ;
  • }
  • // 发送到服务器信息
  • output.write(statusLine.getBytes());
  • output.write(serverLine.getBytes());
  • output.write(contentTypeLine.getBytes());
  • output.write(contentLengthLine.getBytes());
  • output.write(CRLF.getBytes());
  • // 发送信息内容
  • if

    (fileExists)
  • {
  • sendBytes(fis, output) ;
  • fis.close();
  • }
  • else
  • {
  • output.write(entityBody.getBytes());
  • }
  • }
  • }
  • //关闭套接字和流
  • try {
  • output.close();
  • br.close();
  • socket.close();
  • }
  • catch (Exception e) {}
  • }
  • private static void sendBytes(FileInputStream fis, OutputStream os)
  • throws Exception
  • {
  • // 创建一个 1K buffer
  • byte [] buffer = new byte [1024] ;
  • int bytes = 0 ;
  • // 将文件输出到套接字输出流中
  • while ((bytes = fis.read(buffer)) != -1 )
  • {
  • os.write(buffer, 0, bytes);
  • }
  • }
  • private static String contentType(String fileName)
  • {
  • if (fileName.endsWith(".htm") || fileName.endsWith(".html"))
  • {
  • return "text/html";
  • }
  • return "fileName";
  • }
  • }

    编程技巧说明

    ◆ 主线程设计

    主线程的设计就是在主线程httpServer 类中实现了服务器端口的侦听,服务器接受一个客户端请求之后创建一个线程实例处理请求,代码如下:

    1. import java.net.*;
    2. import java.io.*;
    3. import java.util.*;
    4. import

      java.lang.*;
    5. public class httpServer{
    6. public static void main(String args[]) {
    7. port;
    8. ServerSocket server_socket;
    9. //读取服务器端口号
    10. try {
    11. port = Integer .parseInt(args[0]);
    12. }
    13. catch (Exception e) {
    14. port = 8080;
    15. }
    16. try {
    17. //监听服务器端口,等待连接请求
    18. server_socket = new ServerSocket (port);
    19. System .out.println("httpServer running on port "
    20. +server_socket.getLocalPort());
    21. ..........
    22. ..........

    ◆ 连接处理分线程设计

    在分线程httpRequestHandler 类中实现了HTTP 协议的处理,这个类实现了Runnable 接口,代码如

    上一页  1 2 3 下一页
  • 上一篇教程: 如何利用xml,javascript绕开applet的安全问题
  • 下一篇教程: 在JSP中编写你的第一个Tag
  •  

    关于本站 | 广告联系 | 版权声明 | 使用帮助

    Copyright © 2004-2008 www.egunao.com All rights reserved.