tiny java_tiny java web server

import java.io.*;importjava.net.ServerSocket;importjava.net.Socket;importjava.util.ArrayList;/*** Created by Administrator on 2016/7/29.*/

public class HttpDemo extendsThread

{privateServerSocket serverSocket;private int port = 80;public voidrun()

{

String[] MIME_TYPES={"text/html","image/jpeg","image/png","image/gif","application/javascript","text/css",

};try{

serverSocket= newServerSocket(port);while(true) {

Socket connectedClient=serverSocket.accept();

DataInputStream inStream= newDataInputStream(connectedClient.getInputStream());

BufferedReader bufferedReader= new BufferedReader(newInputStreamReader(inStream));

String str=bufferedReader.readLine();

ArrayList headers = newArrayList();

String encoding= "ISO-8859-1";while(str != null) {

System.out.println(str);

headers.add(str);if(str.isEmpty()) {//analysis headers and response http request

String firstLine = headers.get(0);

String parts[]= firstLine.split(" ");

String responseHeader;

String responseBody;

String file;

responseHeader= "HTTP/1.1 200 OK\r\n";

DataOutputStream out= newDataOutputStream(connectedClient.getOutputStream());if (parts[1].equals("/")) {

file= "./index.html";

}else{

file= "." + parts[1];

}

String mimeType;if (file.endsWith(".html")) {

mimeType= MIME_TYPES[0];

}else if(file.endsWith(".jpg")) {

mimeType= MIME_TYPES[1];

}else if(file.endsWith(".png")) {

mimeType= MIME_TYPES[2];

}else if(file.endsWith(".gif")) {

mimeType= MIME_TYPES[3];

}else if(file.endsWith(".css")) {

mimeType= MIME_TYPES[5];

}else if(file.endsWith(".js")) {

mimeType= MIME_TYPES[4];

}else{

mimeType= MIME_TYPES[0];

}try{

File fl= newFile(file);

Long len=fl.length();

responseHeader+= "Content-Length:" + len + "\r\n";

responseHeader+= "Content-Type:" +mimeType;byte[] buf = new byte[len.intValue()];

FileInputStream flin= newFileInputStream(file);

flin.read(buf,0, len.intValue());

responseBody= newString(buf, encoding);

}catch(Exception e) {

connectedClient.close();break;

}

out.writeBytes(responseHeader+ "\r\n\r\n" +responseBody);

connectedClient.close();break;

}

str=bufferedReader.readLine();

}

}

}catch(Exception e) {//do nothing

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值