接下来要实现的方法是把文件或者目录写到输出流中 发送给客户端,那么在方法里面的参数就可以定义为两个一个是客户端的请求参数(也就是客户端请求的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());
}
}
分享到:
相关推荐
主要介绍了java实现一个简单的Web服务器实例解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
C语言实现的支持高并发、超高性能Web服务器源码,可以编译运行,使用高性能HTTP解析器fasterhttp作为其解析核心,在开启Keep-Alive和gzip压缩时(现代浏览器默认开启)性能比nginx约快3倍。 hetao功能: * 支持主流...
小型Web服务器可以利用XXE 。 XXE ( Xml eXternal Entity )-基于在处理xml文档期间包含外部实体的一类漏洞。 安装和启动 git clone git@github.com:egorchistov/xxe.git pip install -r requirements.txt ...
跨平台:Linux / Unix,QNX,eCos,...DNS客户端、DNS服务器、异步DNS解析器 源代码基于ISO C和ISO C++标准 集成简单,只有一个.c和.h文件 经过广泛的测试,已经维护了十年,并被NASA、dell和RocketUncle公司集成
早先不使用web服务器的情况下想要在浏览器端访问本地资源,可以利用firefox浏览器,其可以自己启动一个小型web服务器。 为了让刚接触node的人也能大体看懂,本文的代码我将尽量简化。 准备 首先,需要安装nodejs,这...
由HyperHTML和SAM模式提供支持的Web应用程序框架。 通过SAM容器进行应用渲染 每个组件都可以是无状态功能。 包装连接功能(cn)可用于将状态或动作注入到道具中。 它还允许在渲染时重用DOM节点。 动作建议状态更新...
1.4 JavaWeb应用的Web服务器Tomcat 1.4.1 Web应用服务工作原理 1.4.2 web应用服务器汇总 1.4.3 获取Tomcat 1.4.4 熟悉Tomcat的五脏六腑 1.5 JavaWeb开发利器之Eclipse 1.5.1 获取Eciipse 1.5.2 运行Eclipse 1.5.3 ...
主要介绍了PHP与Web页面交互操作,结合实例形式分析了PHP与Web页面交互表单数据提交、特殊字符处理相关操作技巧,需要的朋友可以参考下
Privex的Postfix日志解析器+ Web UI 这是一个小型应用程序,旨在解析Postfix SMTP服务器的日志输出(通常为/var/log/mail.log ),并将其转换为内部易于查询的数据。 它包括一个用和构建的Web 允许直接从浏览器轻松...
搭建小型公司局域网服务器,并实现以下服务: 1.DHCP服务 2.Samba共享服务 3.ftp文件共享服务 4.Web网站服务 5.DNS域名解析服务 【环境搭建】(测试客户端系统版本不做强制限制,也可以使用win7,win10虚拟机) ...
本章来看一下 Web 攻击到底是怎样的,进而更好地防止自己遭到 Web 攻击。本章仅讲解攻击的过程,不针对任何具体的主机或服务器。不管是国内巨头 BAT,还是国外的 Google、MicroSoft、FaceBook……都不能保证自己...
该库可以像带有依赖性注入的小型企业服务器,嵌入式WebServer,ORM框架一样工作。 常见的Java库功能: 睡眠/延迟/暂停 基准计时器 随机范围发生器 文件操作 任务/线程/调度程序 反射 JSON格式 网址 记录中 弦乐 ...
它们在Web应用程序中起到关键的作用。 Cookie:Cookie 是服务器在客户端存储的小型数据文件。它通常用于在客户端存储用户的身份验证信息或其他状态数据。当客户端请求服务器时,会将 Cookie 信息附加在 HTTP 请求的...
" "最大值 " "服务器或冗余服务器对1) "12 " "系统中的 WinCC 客户机 "32 2) 3) " "系统中的 Web 客户机 "50 4) " 表1 1) 中央归档服务器会被视为一个服务器。但它无法被同时当作操作单元使用。 2) 如果服务器也...
phpMyAdmin/4.8.2 开源、基于WEB而小巧的数据库管理程序; SendMail 目前使用最为广泛的一种E-mail服务器邮件传输代理程序; FileZilla server/0.9.60.2 高安全、高性能FTP服务器端程序可以单独作为FTP服务器端...
要求- Django 1.7 - 解析怎么跑确保您的 Django 服务器正在运行,并且您在 iOS 应用程序、Web 服务器 (django) 和您的 Stripe 管理员帐户中正确设置了重定向 URL。 入门首先,我们将实现 Django Web 服务器。 我...
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台...
《深入剖析Tomcat》从最基本的HTTP请求开始,直至使用JMX技术管理Tomcat中的应用程序,逐一剖析Tomcat的基本功能模块,并配以示例代码,使读者可以逐步实现自己的Web服务器。 目录 第1章 一个简单的web服务器 1.1...
从文本解析模板 第三方 请求正文 回应作家 快取 压缩 本地化和国际化 身份验证,授权和漫游器检测 基本认证 JSON Web令牌 饼干 届会 Websocket 依赖注入 MVC 桌面应用 中间件 跑 从安装Go编程语言,版本1.15+...
基于java+javaScript+css开发的射频识别技术的大楼人员定位系统+源码+项目解析,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 项目简介: 硬件采用RFID打卡,...