java服务器

本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;
  
 }
 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值