手动搭建HTTP下载站点
手动搭建HTTP下载站点
index.jsp
<%--Listfile.jsp--%>
<%@ page import="java.io.File,java.text.SimpleDateFormat,java.util.Calendar"%>
<%@ page contentType="text/html;charset=GB2312" language="java" %>
<html>
<head>
<title>index</title>
<style type="text/css">
body {
font-size: 9pt;
background-color: #F0F0F0;
}
TABLE {
background-color: #CCCCCC;
font-size: 9pt;
}
TR {
color: black;
height: 22px;
background-color: white
}
TR.header {
color: #996600;
height: 22px;
background-color: #EBEBEB;
cursor: hand
}
</style>
</head>
<body>
<%!
public void travelDirectory(String directory, JspWriter out) {
try {
File dir = new File(directory);
if (dir.isFile()) // 判断是否是文件,如果是文件则返回。
return;
File[] files = dir.listFiles(); // 列出当前目录下的所有文件和目录
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
continue;
} // 如果是目录,则继续遍历该目录
// travelDirectory(files[i].getAbsolutePath(),out);
if(files[i].getName().equals("index.jsp")){
continue;
}
String fn = files[i].getName();
String fs = files[i].length()/(1024 * 1024) + "M";
Calendar cal = Calendar.getInstance();
long time = files[i].lastModified();
SimpleDateFormat formatter = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
cal.setTimeInMillis(time);
String ft = formatter.format(cal.getTime());
String tr = "<tr><td><a href='" + fn + "' target='_blank'>" + fn + "</a></td>";
tr += "<td>" + fs + "</td>";
tr += "<td>" + ft + "</td></tr>";
out.println(tr); // 输出该目录或者文件的名字
}
} catch (Exception e) {
e.printStackTrace();
}
}
%>
<%
//将当前web程序目录结构输出到控制台
String path=pageContext.getServletContext().getRealPath(request.getServletPath());
String dir=new File(path).getParent();
out.println("<div align='center'>软件下载界面,点击文件名称下载</div><table align='center'>");
out.println("<tr class='header'><td>文件名称</td><td>大小(M)</td><td>修改时间</td></tr>");
travelDirectory(dir,out);
out.println("</table>");
%>
</body>
</html>
web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>Welcome to download</display-name>
<description>
Welcome to download
</description>
<mime-mapping>
<extension>zip</extension>
<mime-type>application/zip</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rar</extension>
<mime-type>application/rar</mime-type>
</mime-mapping>
<mime-mapping>
<extension>exe</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>iso</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>docx</extension>
<mime-type>application/doc</mime-type>
</mime-mapping>
<mime-mapping>
<extension>doc</extension>
<mime-type>application/doc</mime-type>
</mime-mapping>
</web-app>
手动搭建HTTP下载站点的更多相关文章
- Linux手动搭建LAMP环境
当你看到标题里的“手动搭建”,你是不是会想,难不成还有“自动搭建”?当然......不是,这里的“手动搭建”是指按部就班的搭建Apache.MySQL.PHP环境,是相对于集成软件包而言的.所以你是不 ...
- php 手动搭建环境
php手动搭建环境有好多种组合,版本号不一致,会导致搭建失败. 我搭建的组合是: php5.6+MySQL5.6+Apache2.4的组合. 一.PHP语言包下载 首先从官网上下载php5.6 htt ...
- PHP手动搭建环境
php手动搭建环境有好多种组合,版本号不一致,会导致搭建失败. 我搭建的组合是: php5.6+MySQL5.6+Apache2.4的组合. 一.PHP语言包下载 首先从官网上下载php5.6 htt ...
- 混合式app ionic2.x 手动搭建开发环境教程分享(nodejs,jdk,ant,androidsdk)
1.ionic简介 为什么选用ionic: 彻底开源且免费 性能优异 基于红的发紫的AngularJs 漂亮的UI 强大的命令行(基于更热门的nodejs) 开发团队非常活跃 ngCordova,将主 ...
- React 系列文章(1): npm 手动搭建React 运行实例 (新手必看)
摘 要 刚接触React 开发, 在摸索中构建react 运行环境,总会遇到各种坑:本文,将用最短时间解决webpack+react 环境搭建问题. 1.如果你还没有React基础 看这里. 2.如果 ...
- Arcgis Android 手动搭建开发环境
前言 本文为大家分享arcgis android 环境的手动搭建过程,默认你懂一定的java和android 基础知识,已经有android的开发环境.如缺乏以上环境和知识,请自行补充. 版本介绍 A ...
- OceanBase数据库实践入门——手动搭建OceanBase集群
前言 目前有关OceanBase功能.案例.故事的文章已经很多,对OceanBase感兴趣的朋友都想安装一个数据库试试.本文就是分享初学者如何手动搭建一个OceanBase集群.这也是学习理解Ocea ...
- 利用Wamp在本地搭建一个wordpress站点
原文链接:利用Wamp在本地搭建一个wordpress站点 有时候我们会想搭建一个自己的站点,可是由于只是想自己访问,就不是很想为这个站点在买一个服务器和域名,那我们可能首先就想到把自己电脑当做服务器 ...
- ASP.NET Web API 2系列(一):初识Web API及手动搭建基本框架
1.导言 随着Web技术的发展,现在各种框架,前端的,后端的,数不胜数.全栈工程师的压力越来越大. PC端,pad端,移动端App(安卓/IOS)的发展,使得前后端一体的开发模式十分笨重.因此,前后端 ...
随机推荐
- 此文章介绍vue-cli脚手架config目录下index.js配置文件
此配置文件是用来定义开发环境和生产环境中所需要的参数 关于注释 当涉及到较复杂的解释我将通过标识的方式(如(1))将解释写到单独的注释模块,请自行查看 上代码 // see http://vuejs- ...
- 在redhat6上装1.8以下的docker
因为目前1.8以上的docker最低要求是3.10的Linux内核,而我的内核版本远低于此. [root@localhost home]# uname -r -.el6.x86_64 鉴于我的vm上有 ...
- jQuery学习笔记之DOM操作、事件绑定(2)
jQuery学习笔记之DOM操作.事件绑定(2) --------------------学习目录------------------------ 4.DOM操作 5.事件绑定 源码地址: https ...
- Apache安装简述
软件下载地址:http://pan.baidu.com/s/1o8oexKI 1.httpd -k install 2.httpd -k restart 3.启动bin文件夹里的httpd.exe 4 ...
- 指定DIV局部刷新的简单实现,很简单,但是网上搜到的大部分都很复杂
脚本部分: <script type="text/javascript"> $(function () { setInterval(function () { $(&q ...
- ROS:Nvidia Jetson TK1开发平台
原文链接: http://wiki.ros.org/NvidiaJetsonTK1 1. Nvidia Jetson TK1 Jetson TK1 comes pre-installed with L ...
- C# 获得剪贴板内容和 richTextBox部分文本设置颜色
try { MemoryStream vMemoryStream = iData.GetData("Html Format") as MemoryStream; if (vMemo ...
- 关于layui 下拉框 bug
@for (; i < ; i++) { <option value=</option> } 当value=""时候 自动添加选中样式
- taglib遍历foreach循环list集合
第一部导入jstl.jar 第二步进行list传输: package com.aaa.servlet; import com.aaa.dao.IUserDAO; import com.aaa.dao. ...
- Linux 之根目录介绍
1. /bin binary二进制 存放系统许多可执行程序文件 执行的相关指令,例如ls pwd whoami,后台的支持文件目录 2. /sbin super binary超级的二进制 存放系统许多 ...