`
liuyanttkl
  • 浏览: 20340 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

小型WEB服务器程序解析2

阅读更多
接下来要实现的方法是把文件或者目录写到输出流中 发送给客户端,那么在方法里面的参数就可以定义为两个一个是客户端的请求参数(也就是客户端请求的URL) 一个是输出流:

Private void findFile(String url,OutputStream output) throws Exception

{

//用户提交的路径

String requestPath=url;

//?后面的请求字符串

String qeuryString="";


//用户提交的查询字符串,“?”前面的是路径 文件名,后面为请求参数


Int queryPos=url.indenxOf("?");

//如果?后面还有请求参数的时候

If(queryPos>0){

requestPath=url.subString(0,queryPos);

//queryPos+1是去掉“?”

qeuryString=url.subString(queryPos+1,url.length());

//打印出用户提交的路径和请求的字符串

System.out.println("requestPath:  "+requestPath);

System.out.println("qeuryString:  "+qeuryString);

//解析用户的查询参数

parseParameter(queryString);

System.out.println("paraMap:  "+paraMap.toString());


※:接下来 我们知道URL的分隔符跟文件系统的分隔符是不一样的 那么接下来做的就是怎么样来替换他们,那么接下来还要完成一个替换字符串的方法

requestPath=repalce(requestPath,"\","//").trim();

File tempFile=new File (requestPath) ;

If(tempFile.exists())

{

String parentPath=tempFile.getParent();

If(null!=parentPath)

{

String parentURL=repalce(requestPath,"//","\").trim();

parentURL="<p>返回上级: <a href=\"" + parentURL + "\">"+ parentPath + "</a></p><hr>";

output.getBytes(parentURL);


}

If(tempFile.isDirectory()){

//如果是目录 则列出目录下的文件

File[] f=tempFile.listsFile();

//如果目录下面没有文件

If(f.length==null)

{

outPut.write("<p>这个目录下没有文件</p>".getBytes());

return;


}


String html="";

For(int i=0;i<f.length;i++)

{

String fileName=f[i].getPath();

String urlPath=repalce(requestPath,"//","\").trim();

html += "<p><a href=\"" + urlPath + "\">" + f[i].getName()+"</a></p>";

}

System.out.println("request file is" + html);

outPut.write(html.getBytes());

try {

 output.write(html.getBytes());

 } catch (Exception e) {

  e.printStackTrace();

   }


}

}

//如果是文件 则直接读出

Else{

File file=new File(requestPath);

FileInputStream fis=null;

BUFFER_SIZE每一次读出的字符串流的大小

Byte[] bytes=new byte[BUFFER_SIZE]

fis = new FileInputStream(file);

If(file.exists())

{

int ch = fis.read(bytes, 0, BUFFER_SIZE);


}

while (ch != -1) {

      output.write(bytes, 0, ch);

      ch = fis.read(bytes, 0, BUFFER_SIZE);

     }


}

}

Else{

String errorMessage = "<html><h1>文件没有找到</h1></html>";

   output.write(errorMessage.getBytes());


}

}


分享到:
评论

相关推荐

    小型Web服务器实现

    【标题】"小型Web服务器实现"涉及的主要知识点是构建一个简单的网络服务器,特别是Web服务器的基础原理和编程实践。Web服务器是互联网基础设施的关键组成部分,用于接收HTTP请求并返回HTML页面或其他资源,如图片、...

    Linux下小型WEB服务器boa的使用

    ### Linux下小型WEB服务器boa的使用详解 #### 一、boa简介及特点 Boa是一款轻量级的Web服务器软件,适用于Linux操作系统。它以其小巧、高效的特点在嵌入式设备和其他资源有限的环境中得到了广泛应用。尽管boa的...

    简单搭建WEB服务器 简单搭建WEB服务器 简单搭建WEB服务器

    在IT领域,Web服务器是提供HTTP(超文本传输协议)服务的应用程序,允许用户通过互联网访问网站和网页。本文将详细介绍如何简单搭建一个WEB服务器,包括基础概念、所需工具及步骤,旨在帮助初学者快速入门。 一、...

    Tiny_web_server(小型web服务器代码)

    在深入讲解这个小型Web服务器的实现之前,我们先了解一下Web服务器的基本概念。Web服务器是运行在互联网上,用于响应HTTP请求并返回相应内容(如HTML页面、图片、视频等)的软件。它们通过监听特定端口(通常是80或...

    易语言简易WEB服务器

    2. **简易WEB服务器**:简易WEB服务器是指功能相对简单的HTTP服务器,通常只支持基础的GET和POST请求,不包含复杂的路由、会话管理等功能。这种服务器常用于教学、测试或者个人项目,帮助开发者理解HTTP协议和服务器...

    小型WEB服务器MyWebServer_gr.bkill.com.zip

    【MyWebServer:一款小型WEB服务器详解】 在互联网技术领域,Web服务器是不可或缺的一部分,它们负责接收HTTP请求并返回HTML页面或相关资源。本篇文章将深入探讨一款名为"MyWebServer"的小型Web服务器,它是针对...

    小型web服务器

    在IT领域,小型Web服务器是用于提供HTTP服务的简化版应用程序,它们通常由开发者用于学习、测试或构建轻量级的网络服务。本项目聚焦于一个小型的基于HTTP的Web服务器,采用C++编程语言实现,并结合了MySQL数据库以及...

    基于C语言编写的,多线程小型web服务器,实现简单的主页回显和web CGI(三个函数).zip

    通常,一个小型Web服务器项目可能包含以下文件:服务器主程序(如server.c)、CGI脚本示例、配置文件、日志文件等。my_resource可能是一个包含这些资源的目录,或者是一个特殊的资源文件。 总结来说,这个项目提供...

    STM32实现Web服务器

    STM32实现Web服务器是一个将微控制器技术与网络通信相结合的课题,对于嵌入式系统开发者来说具有重要的学习价值。STM32是意法半导体公司推出的一款基于ARM Cortex-M内核的微控制器系列,广泛应用于各种嵌入式系统...

    C-Web-Server源码 经典的C语言web服务器

    本文将从多个角度详细解析这款服务器的源码,帮助读者构建对Web服务器工作原理的全面认识。 首先,我们要明白Web服务器的基本职责。Web服务器主要负责接收HTTP请求,解析请求头,处理请求内容,然后返回HTTP响应给...

    基于单片机的Web服务器

    【标题】"基于单片机的Web服务器"指的是在微控制器(MCU)环境中构建一个小型的网络服务器,使得嵌入式设备能够通过HTTP协议与Web客户端进行交互。在这个特定的项目中,使用的单片机是C8051F020。C8051F020是一款...

    c#写的web服务器 源码

    2. **解析请求**:服务器解析请求头和请求体,理解用户想要访问的资源或执行的操作。 3. **处理请求**:如果请求的目标是静态文件,服务器会直接返回该文件内容;如果是动态页面,服务器会调用相应的处理程序(如ASP...

    web服务器程序

    本文将深入探讨由VC编写的这款Web服务器程序,以及它在处理并发连接上的优秀性能。 首先,VC(Visual C++)是微软开发的一款集成开发环境,用于编写基于C++的应用程序。在Web服务器编程中,VC++因其高效的内存管理...

    个人WEB服务器.RAR

    【个人WEB服务器】是一种软件应用,它允许用户在自己的计算机上搭建并运行一个小型的网络服务器,以便于分享文件、托管网站或者进行测试等。这种服务器通常面向个人使用,易于安装和配置,对于初学者或者小团队来说...

    安卓版本web服务器 almp_v7.0ALMP

    【安卓版本Web服务器 almp_v7.0ALMP】是一个专为Android平台设计的轻量级Web服务器,它允许用户在安卓设备上搭建并运行一个小型的Web服务环境。这款服务器软件具有一定的灵活性和实用性,尤其对于开发者进行移动测试...

    web服务器完整项目

    该项目名为“web服务器完整项目”,是一个使用Java编程语言实现的小型服务器,旨在处理静态和动态的网页请求。在JavaWeb开发领域,这样的服务器扮演着核心角色,因为它允许开发者构建和部署Web应用程序,为用户提供...

    ASP小旋风测试ASP网站小软件代替IIS的小型web服务器软件.rar

    ASP小旋风是一款轻量级的Web服务器软件,...总的来说,ASP小旋风作为一款代替IIS的小型Web服务器软件,为ASP开发和测试提供了便利,让开发者可以更加专注于代码编写和网站功能实现,而无需深陷于复杂的服务器配置之中。

    VC++写的小型HTTP服务器源程序

    当我们谈论"VC++写的小型HTTP服务器源程序"时,这意味着开发者使用VC++来实现了一个能够响应HTTP请求并返回适当HTTP响应的简易服务器。 HTTP服务器的基本工作原理是监听客户端(如Web浏览器)的连接,接收HTTP请求...

    CGI在嵌入式WEB服务器中的应用和实现.pdf

    在客户端与服务器通信时,Web服务器通过解析CGI脚本所返回的数据来生成响应,并将其发送回客户端浏览器显示。 文中提到了Linux下的Web服务器BOA,它是嵌入式系统中常用的轻量级Web服务器软件。BOA支持CGI并且适合于...

Global site tag (gtag.js) - Google Analytics