本java服务器采用的内部类形式编写
package com;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.FileInputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
public class HttpServer {
/**
* @param args
*/
ServerSocket listening=null;
Socket socket=null;
private int port = 8800;
public HttpServer() throws IOException{
//监听端口
listening=new ServerSocket(port);
while(true){
//等待客户端连接服务器
socket = listening.accept();
//把请求类实例化
Request request=new Request(socket.getInputStream());
//把响应类实例化
Response response=new Response(socket.getOutputStream());
//把处理类实例化
WebProcess wp=new WebProcess(request,response);
//接住返回的文件数据
String datas=wp.returnData();
//在客户端显示内容
response.outFile(datas);
socket.close();
}
}
//主程序入口
public static void main(String[] args) throws IOException {
new HttpServer();
}
}
//请求类
class Request{
private InputStream inputStream=null;
public Request(InputStream inputStream) throws IOException {
this.inputStream=inputStream;
}
//输入流,把请求资源的地址返回
public String getURI() throws IOException{
BufferedReader in=new BufferedReader(new InputStreamReader(inputStream));
String line=in.readLine();
String resource=line.substring(line.indexOf("/")+1,line.lastIndexOf("/")-5);
return resource;
}
}
//响应类
class Response{
private PrintWriter out=null;
public Response(OutputStream outputStream) {
this.out=new PrintWriter(outputStream,true);
}
//在客户端输出wenjian内容
public void outFile(String datas){
out.println(datas);
}
}
//服务器处理类
class WebProcess{
private Request request=null;
private Response response=null;
public WebProcess(Request request, Response response) throws IOException {
this.request=request;
this.response=response;
}
public String returnData() throws IOException{
String uri=request.getURI();
String datas=null;
//判断请求的文件是静态文件还是动态文件
if(uri.indexOf('.')>-1){
//是静态文件就进来
File file=new File(uri);
System.out.println("this is a static file");
//判断静态文件是否存在
if(file.exists()){
System.out.println("have static file");
FileInputStream fis=new FileInputStream(file);
//把文件丢进字节数组
byte[] data=new byte[fis.available()];
fis.read(data);
datas=new String(data);
}else{
System.out.println("no have static file");
datas="文件不存在!";
}
}else{
//是动态文件就进来
System.out.println("this is a dynamic file");
//实例化动态文件类
VisitServlet v = new VisitServlet();
datas=v.dynamicFile(request,response);
}
return datas;
}
}
//动态文件类
class VisitServlet{
//动态文件内容
public String dynamicFile(Request request, Response response) {
String datas=new Date().toString();
return datas;
}
}