用java 写的一个简单的 web 服务器(适合新手练练)

用java写的一个web,效果如下图;总结一下遇到的问题:

        

    1. 端口被占用,可以尝试下换端口;

 

        2. 个别电脑装的软件类型太多,有时候接收不到端口, 写对了不出效果别纠结在一台电脑,本人深受其害;

 

 

        3.保证开发过程的有效性,就要做到不断测试,测试很重要. 如果不测试一口气写了一大堆,可能一个小报错都可能让你疑惑 很久;

 

        以下是代码:

 

 

          在你的项目里建立一个包叫webroot  ,然后建立一个

 

         名为index.html的文件,在文件里丢以下代码:

 

          

<html>
 

              <head>
 

                  <title>服务器</title>
 

              </head>
 

               <body>
 

                    <div align="center">123456789</div>
 

              </body>
 

          </html>    


     

再往下就是你的class类的代码:

              


 

/**
 * 
 */
package Web.server;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * @author Administrator
 *
 */
public class WebServer {

 private static final int post = 8124;
 private static final String uri = System.clearProperty("user.dir")+File.separator+"webroot"+File.separator;

 /**
  * @param args
  */
 
 public WebServer(){
  System.out.println("WebServer()------star");
  System.out.println("url------------------->"+uri);
  System.out.println("File--------------->"+File.separator);
  try {
   ServerSocket listener=new ServerSocket(post);
   System.out.println("listener---服务器正在运行端口----------------->"+listener.getLocalPort());
   while(true){
    System.out.println("判断是否进入循环");
    Socket socket=listener.accept();
    System.out.println("socket------------------->"+socket.getLocalPort());
    //new PrintWriter(socket.getOutputStream(),true).println("你好! 世界!!");
    //BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    //System.out.println("in--------------------------->"+in);
    //输出流
    PrintStream out = new PrintStream(socket.getOutputStream(),true);
    //设置路径
    File fileuri=new File(uri+"index.html");
    System.out.println("fileuri------------------------------>"+fileuri);
    //设置文件类型
    String contentType=null;
    contentType="text/html;charset=GBK";
    if(!fileuri.exists()){       //如果不存在此文件
     System.out.println("没有找到这个文件");
    }else{
     System.out.println("找到这个文件");
     /*out.println("HTTP/1.0 200 OK");
     out.println(contentType);
     out.println();*/
    }
    
    FileInputStream fis=null;
    fis=new FileInputStream(fileuri);
    System.out.println("fis------------------------->"+fis);
    byte data[];
    data = new byte[fis.available()];
    System.out.println("data------------------>"+data);
    fis.read(data);
    out.write(data);
    out.close();
    if(fis!=null){
     fis.close();
    }
    
    socket.close();
   }
   
   
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 /*public void run(){
  System.out.println("run()--------------start");
 }*/
 
 public static void main(String[] args) {
  // TODO Auto-generated method stub
   new WebServer();
 }

}


 

 

  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值