在javaweb项目开发中,图片上传是个比较常见的场景。一般都是在项目路径下建个文件夹,然后上传到该文件夹下;这样这个图片就可以和静态资源一样被直接访问。这样的好处就是访问这图片特别方便;缺点是重新部署时要手动把图片备份,不然图片就丢失了。

        今天通过在网上查阅一些资料,找到了如下2个方案:
        (1)配置tomcat虚拟目录
      • 该方案的好处是虚拟目录下的文件也可以类似于静态资源一样这样访问
      • 美中不足的是上传图片还需要上传到虚拟目录的绝对路径,在网上没看到怎么获取虚拟目录的绝对路径的方法;个人想到的解决方案就是配置一个properties文件,里面放绝对路径。

更多相关内容可以在网上查阅。。参考:http://blog.csdn.net/l1028386804/article/details/52389722


        (2)通过linux的软连接实现
      • 该方案的好处就是可以和类似静态文件一样访问,上传就直接上传到项目根目录下的文件夹即可。和文章开头说的那种方案在代码上来说是一样的。
      • 缺点是需用通过linux命令对上面项目根目录的上传文件夹做软连接,连接完之后上传的文件其实是上传到了软连接的文件夹去了。
      • 还有个问题是需要配置tomcat支持软连接

综合上面2种情况,我选择采用软连接的方式,下面谈谈linux软连接。

一、软连接介绍

        软连接命令:
ln -s 源文件 目标文件 
 
1
ln -s 源文件 目标文件 
        具体介绍可参考:http://www.cnblogs.com/crazylqy/p/5821105.html

二、实际案例

        (1)代码中,我们把文件上传到项目路径(webRoot或者webapp)的下的images/ 文件夹中;这个上传怎么实现,不介绍。
        (2)linux中的处理
    • 在linux中建立一个名为images的文件夹。(这个文件夹名字要和你准备软连接的文件夹名字一样,这个文件夹的位置随便在那都可以,但是一般都在tomcat的外面。)

    • 进入到tomcat下的部署好的项目路径下,创建软连接。源文件夹是上面创建的该文件夹,目标文件夹是后面我们上传的文件夹。

建立成功后就可以看到images文件夹下有个箭头,用图形界面看其实就是个快捷方式。

                
 
    • 建立软连接后,可以测试上传文件,会发现文件上传后跑到tomcat外面的文件夹里面去了。但是用访问静态文件的方式现在还是访问不到,会报404。原因是tomcat默认不支持软连接,需要在conf/context.xml中开启。配置方法如下:

tomcat5、6、7版本:

                        <Context allowLinking="true" />

          tomcat8、9版本:

<Context> <Resources allowLinking="true" /> </Context>

         更多配置参考:http://www.cnblogs.com/wuxun1997/p/6769971.html

    • 配置完后,就大功告成了。

更多软连接的案例可参考:http://blog.csdn.net/ggmmqq/article/details/8253570  

http://www.cnblogs.com/wuxun1997/p/6769971.html

三、软连接的注意事项

(1)软连接的删除需要特别注意,具体可参考

http://www.cnblogs.com/cartsp/p/6437046.html

http://blog.csdn.net/zhenwenxian/article/details/16369767

(2)笔者发现eclipse的重新部署还是会把软连接的源目录下的文件删除,这个是个很奇怪的地方。不过运维人员重新部署肯定不是用eclipse的。所以不用担心。

(3)重新部署项目后,软连接需要重新建立


后续还有一篇介绍linux软连接的文章,推荐阅读。


                 

linux下通过软连接实现访问项目路径外面的资源的更多相关文章

  1. Linux下SVN创建新的项目

    Linux下SVN创建新的项目   Linux环境下的SVN创建新的项目 一.前置条件: 1)有安装了linux系统的服务器,123.*.*.29 2)服务器上安装了svn,本人服务器的svn的数据安 ...

  2. Windows 与 Linux下关于端口不能访问的问题

    自己写的一个HTTP文件服务器,在端口 50000上监听HTTP连接请求,在Eclipse里面将程序正常地启动之后,能够在自己的机器上(Eclipse启动该程序的机器上)访问 50000端口,即Fil ...

  3. linux下使用SVN上传项目

    linux下使用SVN上传项目 摘自:https://blog.csdn.net/puppet_/article/details/78259591 2017年10月17日 13:51:33 puppe ...

  4. Linux 下指定端口开放访问权限

    Linux 下指定端口开放访问权限 作者:Grey 原文地址: 博客园:Linux 下指定端口开放访问权限 CSDN:Linux 下指定端口开放访问权限 环境 CentOS 系和 Debian 系的防 ...

  5. linux下使用软连接之案例二

           在笔者的上一篇文章介绍过怎么通过linux的软连接在不修改上传代码的情况下,将上传到项目路径下的图片改为上传到项目外面,防止重新部署后图片被删除了.同时还可以直接通过类似访问静态资源的方 ...

  6. Linux下tomcat的安装与项目部署

    最近在linux下安装了jdk,为了圆我以前的心愿,把tomcat也安装了,顺便部署个项目,也算是小又成就感 废话不说了,直接上过程 一.下载安装对应的jdk,并配置Java环境. 有关jdk的安装请 ...

  7. linux下c/c++方式访问curl的帮助手册

    自:http://blog.chinaunix.net/u1/47395/showart_1768832.html 有个业务需求需要通过curl 代理的方式来访问外网 百度了一把,测试可以正常使用.记 ...

  8. linux 下添加库的加载路径的方式

    linux 下有两种添加加载库路径的方式: 1.修改环境变量: export LD_LIBRARY_PATH=path_name 2.修改配置文件 修改 /etc/ld.so.conf 的内容在最后添 ...

  9. Linux下的软连接和硬链接

    由于教学上的原因,需要下载Android源码,后来使用repo时,系统提示需要python2,我的系统中是两个都有的,但是默认是python3,无法下载,通过创建了个链接搞定,下面就来说说linux下 ...

随机推荐

  1. Nginx的访问认证

    1.设置访问认证的作用: 在实际的工作中,有时候我们会接到给网站加密的任务,就是需要有用户名和密码才能访问网站的内容,这个一般会是在企业的内部web服务上面来实现,其实也很简单就两个参数 语法: lo ...

  2. 禅道项目管理软件 为提交Bug页面添加“优先级”字段

    为提交Bug页面添加“优先级”字段 by:授客 QQ:1033553122 测试环境: 禅道项目管理软件7.1.stable版本 备注:仅适合windows版本,linux下,直接在页面管理后台安装官 ...

  3. HCTF2018 pwn题复现

    相关文件位置 https://gitee.com/hac425/blog_data/tree/master/hctf2018 the_end 程序功能为,首先 打印出 libc 的地址, 然后可以允许 ...

  4. Spring Boot系列学习文章(一) -- Intellij IDEA 搭建Spring Boot项目

    前言: 最近做的一个项目是用Spring Boot来做的,所以把工作中遇到的一些知识点.问题点整理一下,做成一系列学习文章,供后续学习Spring Boot的同仁们参考,我也是第一次接触Spring ...

  5. springboot 学习之路 15(集成shiro)

    shiro: Apache Shiro 是 Java 的一个安全框架.功能强大,使用简单的Java安全框架,它为开发人员提供一个直观而全面的认证,授权,加密及会话管理的解决方案.   更多shiro介 ...

  6. cuda中用cublas库做矩阵乘法

    这里矩阵C=A*B,原始文档给的公式是C=alpha*A*B+beta*C,所以这里alpha=1,beta=0. 主要使用cublasSgemm这个函数,这个函数的第二个参数有三种类型,这里CUBL ...

  7. c#考勤统计

    现在项目需求,需要从多张表中获取数据,组装到一个实体对象中,并通过计算统计出每个员工的考勤记录.(全凭自己思考做的,不足的地方希望各位大神指正!毕竟自己能力有限,思考不全) 考勤统计列表: 明细列表: ...

  8. 详解JNDI的lookup资源引用java:/comp/env

    ENC的概念:     The application component environment is referred to as the ENC, the enterprise naming c ...

  9. SQLTest系列之INSERT语句测试

    原文地址:https://yq.aliyun.com/articles/64375?spm=5176.100239.blogcont69187.22.fhUpoZ 摘要: 一款可以测试MSSQL Se ...

  10. sql server数据导入导出方法统计

    常用的数据量不是很大的情况的几种方法:转载地址 http://www.cnblogs.com/changbluesky/archive/2010/06/23/1761779.html 大数据量的推荐导 ...