精华内容
下载资源
问答
  • 如何用tomcat部署静态文件

    千次阅读 2018-03-27 10:45:19
    解决方案(前提:已在tomcat部署web服务,如果仅仅是部署静态文件,还可以选择其他如nginx): 将静态文件直接放到webapps下面,可以但不建议,主要原因是该文件不希望放在tomcat中,不应该为了实现功能而去破...

    问题:

           部署web服务时,在前端页面提供给用户一个超链接,通过该超链接可以下载某个具体文件,那么问题来啦,该文件怎么放置,才能通过点击超链接下载到该文件。


    解决方案(前提:已在tomcat部署web服务,如果仅仅是部署静态文件,还可以选择其他如nginx):

           将静态文件直接放到webapps下面,可以但不建议,主要原因是该文件不希望放在tomcat中,不应该为了实现功能而去破坏原本的功能。

           在tomcat中配置虚拟路径,供用户访问静态资源。

             找到tomcat安装目录/conf/server.xml,在最后面可以看到Host标签,在该标签中增加Context标签如下即可。

             <Context path=“/download” docBase=“/data1/test” reloadable="false" ></Context>


           其中,path是映射的web路径,docBase是本地磁盘的物理路径,也就是文件存放路径。

           例如:资源 /data1/test/text.txt,可通过 http://localhost:8080/download/text.txt 访问。

    展开全文
  • 下载安装JDK和Tomcat !!!!!! JDK与Tomcat版本要匹配,尽量不要过高,高版本兼容性不好;一般是和jdk版本保持一致的,也就是说tomcat6用&lt;=jdk6版本就可以了。 通常情况下,可以依次类推的。 tomcat 8.0...

    下载安装JDK和Tomcat

    !!!!!!
    JDK与Tomcat版本要匹配,尽量不要过高,高版本兼容性不好;一般是和jdk版本保持一致的,也就是说tomcat6用<=jdk6版本就可以了。
    通常情况下,可以依次类推的。
    tomcat 8.0可以兼容jdk1.6,而tomcat 6.0不可以兼容jdk1.8
    tomcat版本高->jdk版本低 不会出问题
    !!!!!

    1. 下载好jdk和tomcat并安装,安装目录可以自定义;tomcat分解压版和安装版,本人用的安装版;
    2. 配置环境变量:计算机——右击——属性——高级系统设置设置——环境变量
    JDK环境变量
    1、新建系统变量
    
    变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.7.0(这个是你安装JDK时的路径,按照实际情况改成你自己的目录)
    
    2、然后在系统变量里找到Classpath,没有的话新建一个。(不区分大小写)
    
    把这个路径添加到变量值的最前面——.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
    
    注意:最前面有一个点号和分号
    
    3、然后在系统变量里找到PATH,没有的话新建一个。(不区分大小写)
    
    把这个路径添加到变量值里面——%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
    
    注意,最好添加到最前面
    
    检查JDK是否安装并配置成功:
    cmd: java -version
    cmd:javac -version
    

    Tomcat环境变量
    如JDK相同操作,不再赘述。
    
    1、新建三个系统变量:
    TOMCAT_HOME=E:\tomcat-6.0.39(这个是你安装tomcat时的路径,按照实际情况改成你自己的目录)
    
    CATALINA_HOME=E:\tomcat-6.0.39
    
    CATALINA_BASE=E:\tomcat-6.0.39
    
    2、在Classpath中最后添加%TOMCAT_HOME%\lib\servlet-api.jar;
    
    3、在PAth中最前添加%CATALINA_HOME%\bin;
    
    注意:前后顺序不影响
    
    检查tomcat是否安装成功:
    D:\tomcat\bin\Tomcat6w.exe (自己tomcat安装目录下bin下的exe)双击,点击start运行,浏览器输入localhost:8080/ 出现成功页面;
    

    Tomcat部署本地静态文件
    由于移动端页面需要手机测试,捣鼓了半天tomcat部署本地html文件,注意点:

    配置D:\Tomcat\conf\server.xml

    最好不要用txt记事本打开该文件,用sublime或者vscode之类的打开,原因百度;
    在server.xml最底部加上:
    
     <Context docBase="E:\webSpace" path="/webSpace" debug="0"  reloadable="true"/>
     
    !!!!docBase:本地静态文件目录,可以是单个文件或者是项目空间;
    !!!!path:浏览器8080/之后输入的内容;例如我的:http://localhost:8080/webSpace/ ;
     
    reloadable="true":有更新时,自动加载;
    

    !!!!!!!!!注意注意注意!!!!!!!!!
    如果html名有中文,在server.xml的Connector 里面加URIEncoding=“UTF-8” ;端口号不能被占用的:8080
    注意点

    展开全文
  • 1、tomcat 1、服务器安装tomcat 2、将apk文件放入tomcat目录下的webapps/...是你要下载静态文件存放路径,自己修改即可 端口也可以自己修改 listen 80 default_server; server_name _; root /opt/; location / {

    1、tomcat

    1、服务器安装tomcat

    2、将apk文件放入tomcat目录下的webapps/root/下

    3、访问IP:8080/***.apk即可下载。

    2、nginx

    在nginx的 server中进行如下配置:

    root /opt/;是你要下载的静态文件存放路径,自己修改即可
    端口也可以自己修改

     listen   80  default_server;
            server_name  _;
            root /opt/;
    
            location / {
              
            }
            location /app{
               default_type application/octet-stream;
            }
    
    

    访问:ip/***.apk即可下载

    展开全文
  • NodeJS因为它的非阻塞I/O和优秀...之前我有一台Tomcat服务器兼做文件下载的功能,后来我在上面部署了一个NodeJS来提供静态文件的下载,然后我测试了Tomcat和NodeJS做文件服务器时的性能差距,并发掘NodeJS的特殊功能。

    测试动机

    NodeJS因为它的非阻塞I/O和优秀的高并发性能受到越来越多的关注,而且NodeJS的服务器相对于Nginx其搭建非常简单,仅需很少的步骤和设置就可以搭建一个高性能的文件服务器。之前我有一台Tomcat服务器兼做文件下载的功能,后来我在上面部署了一个NodeJS来提供静态文件的下载,然后经过压力测试发现NodeJS在静态文件的服务能力上强于Tomcat很多,主要体现在支持的并发连接数多,处理单个请求快。下面介绍一下我部署NodeJS静态资源文件服务器的过程和压测结果。

    这里以Ubuntu系统为例介绍NodeJS服务器的搭建过程

    首先需要安装node服务和npm工具,Ubuntu安装命令如下:

    $sudo apt install nodejs-legacy
    $sudo apt install npm
    

    如果网速还可以,那么安装这两个东西的时间也就在一分钟以内。

    然后我们需要为我们的nodejs应用创建一个目录,比如文件夹的名字叫myapp

    $ mkdir myapp
    $ cd myapp
    

    然后通过 npm init 命令为你的应用创建一个 package.json 文件,作用是初始化Express这个nodeJS框架的

    $ npm init
    

    敲回车以后需要输入一些东西,全部用默认的就可以,一路回车敲下去


    输入“yes”后,会在myapp目录下生成一个.json文件,如上图,然后我们安装express框架并将其保存到依赖列表中

    $ npm install express --save
    

    然后我们需要创建一个index.js作为nodeJS服务器的入口文件



    在index.js中,输入如下内容

    var express = require('express');
    var app = express();
    
    app.get('/', function (req, res) {
      res.send('Hello World!');
    });
    app.use(express.static('public'));
    
    var server = app.listen(3000, function () {
      var host = server.address().address;
      var port = server.address().port;
    
      console.log('Example app listening at http://%s:%s', host, port);
    });

    其中

    app.use(express.static('public'));

    表示将静态资源文件所在的目录作为参数传递给 express.static 中间件以提供静态资源文件的访问。例如,假设在 /public 目录放置了图片、CSS 和 JavaScript 文件,就可以通过这个配置将public底下的文件映射到url上面


    然后我在images目录放了一个图片文件,名字叫pic1.jpg

    然后我启动nodeJS服务器,用下面的命令

    $ node index.js

    执行这段指令的时候会在控制台打出刚才我在index.js中配置的console函数,控制台输出Example app listening at http://:::3000,表示NodeJS服务器已经成功启动并监听3000端口.

    注意:如果此时点击ctrl+c会终止掉nodeJS的服务进程,包括SSH工具

    然后通过浏览器访问http://localhost:3000 可以看到浏览器输出一句Hello World!,说明NodeJS服务器运转正常


    然后访问我们部署好的静态文件pic1.png只需要访问http://localhost:3000/images/pic1.jpg就可以看到浏览器下载到的图片了,这里要注意public文件夹映射到了3000端口的根目录,也就是说不必在url中输入/public。


    下面我们来对比一下tomcat静态文件下载和nodeJS静态文件下载的并发性能,测试工具是apache的ab,测试目标是一个20m左右的apk文件,首先看一下tomcat的表现

    测试环境:

    • 网络环境:本地回环
    • 测试客户端:本机
    • 被测试服务器:本机
    • 服务器系统:Ubuntu 14.04
    • 服务器配置:Intel(R) Core i7(TM) CPU 3.40GHz 2 CPUS
    • 内存:8GB
    • NodeJS版本: v0.4.12

    我在服务器上同时部署了80端口的tomcat和3000端口的nodeJS,tomcat的文件目录为webapp/项目目录/release/,tomcat所有设置除了端口以外均采用默认设置,使用两个20MB左右的apk压缩包做测试目标,测试命令分别为:

    ab -n1000 -c100 192.168.1.81/release/test.apk

    ab -n1000 -c100 192.168.1.81:3000/test.apk

    让我们来观察一下控制台输出:

    alex@alex-ThinkPad-T430:~$ ab -n1000 -c100 192.168.1.81/release/test.apk
    This is ApacheBench, Version 2.3 <$Revision: 1706008 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/


    Benchmarking 192.168.1.81 (be patient)
    Completed 100 requests
    Completed 200 requests
    Completed 300 requests
    Completed 400 requests
    Completed 500 requests
    Completed 600 requests
    Completed 700 requests
    Completed 800 requests
    Completed 900 requests
    Completed 1000 requests
    Finished 1000 requests




    Server Software:        Apache-Coyote/1.1
    Server Hostname:        192.168.1.81
    Server Port:            80


    Document Path:          /release/test.apk
    Document Length:        20300487 bytes


    Concurrency Level:      100
    Time taken for tests:   6.486 seconds
    Complete requests:      1000
    Failed requests:        0
    Total transferred:      20300772000 bytes
    HTML transferred:       20300487000 bytes
    Requests per second:    154.17 [#/sec] (mean)
    Time per request:       648.617 [ms] (mean)
    Time per request:       6.486 [ms] (mean, across all concurrent requests)
    Transfer rate:          3056498.14 [Kbytes/sec] received


    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0    1   0.8      0       6
    Processing:    43  638 333.7    519    2088
    Waiting:        0    5  15.8      1      93
    Total:         43  639 333.9    520    2091
    WARNING: The median and mean for the initial connection time are not within a normal deviation
            These results are probably not that reliable.


    Percentage of the requests served within a certain time (ms)
      50%    520
      66%    672
      75%    843
      80%    883
      90%   1085
      95%   1334
      98%   1528
      99%   1781
     100%   2091 (longest request)

    我们可以看到1000个请求的总用时是6.486秒,下面再看看nodeJS的表现,nodeJS文件目录为项目目录/public/

    同上面测试tomcat一样,测试同一个20m的apk文件,index.js的代码如下:

    var express = require('express');
    var app = express();
    
    app.get('/', function (req, res) {
      res.send('Hello World!');
    });
    
    app.use(express.static('public'));
    
    var server = app.listen(3000, function () {
      var host = server.address().address;
      var port = server.address().port;
      console.log('Example app listening at http://%s:%s', host, port);
    });
    


    alex@alex-ThinkPad-T430:~$ ab -n1000 -c100 192.168.1.81:3000/test.apk
    This is ApacheBench, Version 2.3 <$Revision: 1706008 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/


    Benchmarking 192.168.1.81 (be patient)
    Completed 100 requests
    Completed 200 requests
    Completed 300 requests
    Completed 400 requests
    Completed 500 requests
    Completed 600 requests
    Completed 700 requests
    Completed 800 requests
    Completed 900 requests
    Completed 1000 requests
    Finished 1000 requests




    Server Software:        
    Server Hostname:        192.168.1.81
    Server Port:            3000


    Document Path:          /test.apk
    Document Length:        20300487 bytes


    Concurrency Level:      100
    Time taken for tests:   18.002 seconds
    Complete requests:      1000
    Failed requests:        0
    Total transferred:      20300799000 bytes
    HTML transferred:       20300487000 bytes
    Requests per second:    55.55 [#/sec] (mean)
    Time per request:       1800.207 [ms] (mean)
    Time per request:       18.002 [ms] (mean, across all concurrent requests)
    Transfer rate:          1101261.94 [Kbytes/sec] received


    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0    0   0.7      0       3
    Processing:  1685 1798  43.1   1799    1876
    Waiting:       32   53  11.1     52      87
    Total:       1685 1798  43.0   1801    1876


    Percentage of the requests served within a certain time (ms)
      50%   1801
      66%   1829
      75%   1837
      80%   1840
      90%   1849
      95%   1856
      98%   1862
      99%   1871
     100%   1876 (longest request)


    NodeJS总耗时为18.002秒,比tomcat的速度慢3倍左右。

    从这里可以看出,对于一个不需要执行任何动态代码的静态文件下载,tomcat服务器在默认配置下要比nodeJS在默认配置下高3倍性能。

    但是要注意这是使用服务器自己测试服务器自己,所有的流量均走本地回环网卡,也就是说排除了网速对于服务器处理性能的影响,我也是过在局域网内使用另一台linux服务器进行测试,不过由于测试文件是个20m的apk,几乎99.999%的时间都用于网络传输(使用ab能让局域网网速跑满,实测的时候一直保持在11.3MB/s)所以Tomcat和NodeJS的性能差别并不明显。

    那么既然nodeJS在文件的并发访问请求方面相对于tomcat并无优势,那么我们为什么还要使用nodeJS来做静态资源服务器呢?

    有一个优势是nodeJS提供了方便的url重定向功能,比如我们有好几个文件夹下的静态文件都想通过192.168.1.81:3000/static/xxx.jpg  这样来获取,也就是不加上具体资源文件夹的名字如/css,/js这样,那么通过nodeJS只需几行代码就可以搞定:

    app.use('/static', express.static('css'));
    app.use('/static', express.static('js'));
    app.use('/static', express.static('imgs'));
    这样就轻松的把所有类型的静态文件都影射到了192.168.1.81:3000/static/这个url下

    另外,NodeJS在做静态资源文件服务器的时候,还可以监听资源文件夹的文件增删改事件,然后以这些事件做为触发器做一些其他的操作,这个功能使用Tomcat很难完成,例如有人用新增jpg图片文件的事件触发制作了webp压缩图片文件,对于nodeJS只需几行代码就搞定了,我把上面测试的代码稍加改动如下就可以实现监听某个文件夹动作的功能,使用fs模块和chokidar模块分别做测试:

    var express = require('express');
    var chokidar = require('chokidar');//文件监听,需要使用npm安装新模块
    var fs = require('fs');//fs文件监听
    var app = express();
    
    app.get('/', function (req, res) {
      res.send('Hello World!');
    });
    
    app.use(express.static('/opt/apache-tomcat-8.0.36/webapps/AndroidOnlinePackage/release'));
    app.use(express.static('public'));
    
    var server = app.listen(3000, function () {
      var host = server.address().address;
      var port = server.address().port;
    
      console.log('Example app listening at http://%s:%s', host, port);
    
    	
    	// 监控文件夹
    	var watcher = chokidar.watch("public", {
    	    persistent: true // 保持监听状态
    	});
    
    	// 监听增加,修改,删除文件的事件
    	watcher.on('all', (event, path) => {
    	    switch (event) {
    		case 'add':
    			console.log('添加文件'+path)
    		case 'change':
    		    console.log('改变文件'+path)
    		    break;
    		case 'unlink':
    		    console.log('删除文件'+path);
    		    break;
    		default:
    		    break;
    	    }
    	});
    
    	fs.watch('public', function (event, filename) {//fs的文件监听虽然系统集成该模块,但是使用的时候感觉并不是很准
    	  console.log('event is: ' + event);
    	  if (filename) {
    	    console.log('filename provided: ' + filename);
    	  } else {
    	    console.log('filename not provided');
    	  }
    	});
    });
    

    其中,如果使用chokidar模块进行监听需要使用npm安装该模块
    npm install chokidar
    
    注意在该js文件启动的时候,chokidar会将所有之前存在的文件都认为是‘添加文件’,出发js命令,所以要格外小心。

    另外chokidar.watch函数还可以轻松的添加过滤器等设置,用法比fs要简单实用。

    展开全文
  • 本文的动静分离主要是通过nginx+tomcat来实现,其中nginx处理图片、html等静态文件tomcat处理jsp、do等动态文件。 二、结构图 三、安装 1、安装、配置nginx 下载nginx与pcre(如果需要使用正则,需要安装...
  • 修改tomcat下/conf/server.xml文件 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <!--增加如下内容--> <Context docBase="/usr/local...
  • 一、安装jdk,配置java环境 1、查看当前linux是否存在自带jdk 命令: java -...3、下载成功后 通过某文件传输器将压缩包传输至服务器指定目录中 一般是安装在usr/local目录下,在该目录下创建一个文件夹用来存放需
  • tomcat下配置的前端工程也出现无显示数据问题。包括移动端部分数据无法显示。起初还以为是后端工程接口的问题。一个劲儿的前后端+移动端三端排查。最后发现都没有问题。 1.问题分析: 移动端部分数据和前端部分数据...
  • 一、下载安装tomcat(默认已安装了jdk1.8) apache-tomcat-8.5.64.tar.gz 解压即可使用 二、进入tomcat的webapps目录,创建服务imgserver mkdir imgserver cd imgserver 上传WEB-INF.tar.gz至此目录下,解压 ...
  • 一、首先下载tomcat(apache-tomcat-8.5.6) 二、将静态html页面以及相关文件放在一个目录,如A目录 三、将algorithm目录放在..:\apache-tomcat-8.5.6\webapps目录下 四、指定tomcat访问端口号(在如图所示目录下...
  • tomcat部署静态html网站方法

    万次阅读 2017-10-19 11:58:51
    一、首先下载tomcat(apache-tomcat-8.5.6) 二、将静态html页面以及相关文件放在一个目录,如A目录 三、将A目录放在..:\apache-tomcat-8.5.6\webapps目录下 四、指定tomcat访问端口号(在如图所示目录下找到...
  • tomcat主要是负责处理servlet的,静态的文件还是交给nginx处理,nginx对静态文件的处理比tomcat不是只快了一点,并且Nginx的使用对项目并发能力有很大的提升。下面主要记录下主要的配置过程: 实验环境:windows ...
  • nginx下载 1.下载,解压 因为配置两个tomcat,所以需要两个tomcat 2修改其中一个tomcat的端口号 我的例子一个是8080,另一个是8088 3配置nginx-1.4.5\conf\nginx.conf upstream backend {  server ...
  • tomcat下载安装好了之后,将项目文件test直接拷贝到webapps中,即可访问127.0.0.1:8080/unit7/NewFile.html(unit7是项目名,newfile是文件名)。 注:1.在webapps中新建的test文件夹,项目必须是web项目(即以网页...
  • 如果没有用apache就需要下载urlrewritefilter包,这种方法所有的请求都会先转到UrlRewriteFilter类中进行处理,效率较低一般把伪静态放在apache中进行处理,步骤如下:1. 打开apache/conf/httpd.conf文件找到如下行...
  • 使用tomcat的默认servlet去提供下载:  直接以超链接的方式下载...这个DefaultServlet 专门用于处理放在tomcat服务器上的静态资源。    download.html &lt;!DOCTYPE html&gt; &lt;html&gt;...
  • 背景 最近主要工作是开发文件服务相关接口,遇到很多性能问题,比如大文件读取内存溢出(java使用文件流上下...1.使用外置静态资源目录作为文件下载服务,并开启文件缓存策略。 server: port: 80 servlet: encoding:
  • 读取项目外的文件,配置...打开文件:Tomcat/conf/server.xml 修改文件配置: <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="/imgFile" docBas...
  • 2.现在想通过一个WEB项目页面下载这些录音文件。 3.很显然这些录音文件放在WEB项目下不是很合适(WEB项目更新是个大麻烦,海量的录音文件要处理)。   二、外部静态资源映射 首先想到的就是tomcat能否直接配置静态...
  • Tomcat部署html静态网站的五种方式

    千次阅读 2019-04-28 10:25:36
    方式一:直接把静态项目复制到Tomcat安装目录的webapps目录中。 例如:我们新建一个test文件夹,在文件夹里新建一个test.html文件,然后将整个test文件夹复制到Tomcat安装目录的webapps目录中,启动tomcat后在...
  • 小程序内的静态文件不能通过IP+端口号的方式获取,只能使用域名的方式,并且要求是https协议,虽然在开发阶段可以使用http协议,但是针对没有域名的我们,可以使用如下方式进行开发: 前提条件需要调通tomcat下的...
  • Tomcat 搭建简单文件服务器

    千次阅读 2017-06-14 17:42:49
    然后在网址中访问: http://127.0.0.1:8080/download.zip 便可下载 (或者创建一个可以访问静态资源的 web 项目,如复制tomcat中的examples 将文件夹重命名,然后将需要的文件放在该目录下,即可访问) 方法二:如...
  • 就是代理一些静态文件,如图片、文本、商品详情。这些文件一般改动很少,放在别的服务器上代理,就可以让程序响应变快,比如下载文件。没有代理文件之前,都是通过IO去磁盘、内存中下载,就很慢。 nginx静态代理...
  • 背景:最近接了个工厂项目,里面有个需求:内网环境中,PAD端和PC端可以预览或下载公共文件,公共文件类别包括但不限于各种图片、媒体格式、PDF、WORD和EXCEL。结合目前工厂实际运维环境,可以总结出关键信息:内网...
  • Linux安装tomcat并启动服务访问静态页面(小白向) 先去官网下载安装包...在webapps文件夹下新建一个test文件夹用于放置你的静态文件 修改server.xm文件(在conf文件夹下) 找到host标签,修改文件代码,详情如下图所示 &
  • Tomcat目录结构 文件夹 说明 备注 bin 该目录下存放的二进制可执行文件 startup.bat启动服务器、shutdown.bat停止服务器 conf 最重要的目录其中最重要的文件:server.xml和web.xml server.xml:配置整个...
  • Tomcat安装Jenkins(注意:这里不仅要安装Jenkins还要运行静态的HTML的文件 所以相当于是在一个Tomcat中运行了多个项目,参考博客:https://blog.csdn.net/dreamstar613/article/details/75282962/) Jenkins.war...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 262
精华内容 104
关键字:

tomcat静态文件下载