tomcat8总结默认端口默认项目,以及图片上传和展示的路径问题.

一.关于tomcat是常用的服务器软件,下面是总结关于正常的项目在tomcat上运行的几个问题.

  环境 :

  • 操作系统:windows7
  • tomcat版本:apache-tomcat-8.0.39
  1. tomcat的默认端口是8080,访问一个新的没有经过设置的tomcat的主页应该是这样访问= http://域名:端口号,例如http://haha.com:8080,本地的tomcat没有域名的情况下就是http://localhost:8080,但是一般的网址是没有端口号的,直接访问就可以访问网站,这需要怎么设置呢?
  2. 如果存在多个web项目,那怎么让访问者访问指定的一个默认项目呢?
  3. 上传图片或者文件的路径是保存在哪里?上传后又怎么展示出来?
  • 问题1,tomcat的默认端口为8080,web访问的默认端口为80,例如:www.baidu.com:80等同于www.baidu.com,所以我们只要修改访问的默认端口为80就可以了。

在tomcat的安装目录如下图:

其中,tomcat的配置文件放在conf这个文件夹下,进入这个文件夹,会看到一个server.xml文件,最好用带有xml文档高亮的编辑器打开这个文件,实在没有用记事本打开也可以,找到下面这段。

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8449" />

上面这段代码中的port 就是默认访问的端口,将它改为80,保存server.xml文件就修改了默认端口。

但是仅仅经过这样的修改还是不行的,原因是每次tomcat启动后都会生成一个ROOT的项目,就是测试tomcat安装成功没有的那个界面,也就是说假如你的项目名称为pdc,你输入localhost访问的是localhost/ROOT这个项目,而并非localhost/pdc

  • 问题2,设置默认项目如果你想输入localhost直接访问pdc项目,还是在server.xml文件中找到这段
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

</Host>

在这段代码中插入如下代码:

<Context path="" docBase="pdc" debug="0" reloadable="true" />

这段代码的意思是 Context path为访问域名下面的路径,这里为""是空,效果就是指定 localhost:80/""这个地址,docBase就是项目名称pdc ,就是说明如果项目名称为空,访问的就是pdc

如上配置完成后,直接输入localhost  就等同于localhost:80/pdc

但是我们知道,将项目打成,pdc.war包后,直接复制项目到tomcat的webapps目录下,启动tomcat就会加载项目,但是你在运行之前,清空了webapps目录下的所有项目,如上配置后,再启动,其实会生成两个项目,一个是ROOT项目,一个是pdc项目

这两个项目完全一模一样,如果单是访问的话,无所谓,展示的东西都是一样的。但是如果我访问的是ROOT项目,我上传了一张图片,然后再访问pdc项目会不会展示图片呢?结果是,图片将无法找到。

这就产生了一个图片上传的问题。

  • 问题3,tomcat8上传图片与展示图片路径的问题

  其实,并非只跟路径有关,和项目也有关系,正常的思路是,你将请求上传的图片,用后台处理改名,存入一个项目指定的文件夹下,例如这个文件夹叫images,你上传后,就放到images里面了。但是后台代码的图片路径一般不会写成固定的类似这种“/pdc/iamges”如果是这样写,项目一改名,代码就会出错了,所以获得图片上传的路径一般都会用session.getContext().getRealPath()或者session.getContext().getContextPath()这样的方法直接获得路径,这样的话,如果你访问的是www.abc.com上传的图片,会存入到你的tomcat下webapps/ROOT/images里,如果你数据库存放的是图片的路径的话,那么可能就会得到//images这样的路径,如果你是www.abc.com/pdc访问的项目,并且上传了文件,你数据库里将会得到这样的路径/pdc/iamges

所以很多刚接触tomcat的人,上传图片成功了,但是展示却出了问题,原因就是在这。要想避免这样的问题发生,其实方法还是有很多的,比如统一路径,在代码中就固定把文件固定放在/ROOT/images下,这样就只有ROOT的这个项目下有images这个文件夹,即使访问了pdc 存放路径也可以放到/ROOT下的images下。所以问题就是,如果你只有一个项目,你配置了默认项目的话,也会生成一个一模一样的ROOT项目,而ROOT上传的图片在ROOT/images下,访问pdc上传的图片,存放在pdc/images下。

版权声明:本文为博主原创文章,未经博主允许不得转载。

posted on 2017-04-24 12:09  winsker  阅读(4760)  评论(0编辑  收藏  举报

导航