知识大全 用java 实现一个简单的web 服务器

Posted 内容

篇首语:成功需要付出代价,不成功需要付出更高的代价。。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 用java 实现一个简单的web 服务器相关的知识,希望对你有一定的参考价值。

  import java io IOException;import ServerSocket;import Socket;

  /** * Socket + Thread + FileIO * * 服务器运行机制  * 启动服务器 处于运行状态 * 能接收到请求 * 分析请求内容 * 处理响应内容 * 发送响应内容到客户端 * * @author Administrator * */public class Serverprivate int port = ;

  /*** 启动服务器*/public void start()try// 实例化一个服务器端Socket对象 用于接收客户端的连接信息ServerSocket server = new ServerSocket(port);

  while(true)// 接收到的socket对象中 包含了请求信息Socket socket = server accept();

  System out println( 接收到一个请求! );

  // 将socket对象交给线程类进行 单独的处理 从而可以同时响应多个用户的请求Processor p = new Processor(socket);new Thread(p) start();catch (IOException e)e printStackTrace();

  /*** 简单的服务器程序 通过main方法来启动服务器* @param args*/public static void main(String[] args)new Server() start();

  import java io BufferedReader;import java io File;import java io FileInputStream;import java io FileNotFoundException;import java io IOException;import java io InputStream;import java io InputStreamReader;import java io OutputStream;import java io OutputStreamWriter;import Socket;

  /** * Processor 用于接收请求内容 分析请求内容 处理响应 发送响应 * @author Administrator * */public class Processor implements Runnableprivate Socket socket;// 定义虚拟服务器所在的根目录// 当访问请求地址为 // 程序将读取并返回 WEB_ROOT\\doc\\l 文件的内容private final static String WEB_ROOT = E:\\\\java学习\\\\web 作业\\\\浮动广告 ;

  public Processor(Socket s)this socket = s;

  @Overridepublic void run()// 分析请求内容String filePath = parse();// 处理响应 读取页面文件内容String fileContent = readFile(filePath);if(fileContent != null)// 发送响应sendResult( OK fileContent);

  /*** 解析请求内容 根据请求中的URL内容 获取请求对应的页面文件路径* @return 页面相对路径*/public String parse()tryInputStream in = socket getInputStream();BufferedReader reader = new BufferedReader(new InputStreamReader(in));String requestContent = reader readLine();// System out println(requestContent);String[] contents = requestContent split( );String url = contents[ ];// System out println(url);// in close();// reader close();return url;catch (IOException e)e printStackTrace();return null;

  /*** 根据传入的文件相对路径 通过文件IO流读取内容 并返回* 如果没有找到文件 发送 错误响应* @param filePath* @return*/public String readFile(String filePath)String absFilePath = WEB_ROOT + filePath;File file = new File(absFilePath);System out println(file getAbsolutePath() + 文件是否存在 +file exists());

  // File IO流读取文件内容if(file exists())trybyte[] buff = new byte[(int) file length()];FileInputStream fis = new FileInputStream(file);fis read(buff);String fileContent = new String(buff);fis close();return fileContent;catch (FileNotFoundException e)e printStackTrace();catch (IOException e)e printStackTrace();elsesendResult( File not found 你懂的! );return null;

cha138/Article/program/Java/hx/201311/26138

相关参考