你的这个提问涉及的路径问题挺多,也是有些开发者经常会遇到的问题,按我的经验给你说下。
1.java web容器中项目部署时的访问路径
一般网站部署后,访问路径是不带项目名称的,比如最代码的服务器部署目录:/data/www/zuidaima/,在tomcat的conf/server.xml中host的访问配置是:
unpackWARs="false" autoDeploy="false"
xmlValidation="false" xmlNamespaceAware="false">
这样http的访问地址就是http://www.zuidaima.com/
而在eclipse jee集成tomcat版本本地开发时,eclipse的配置中path的配置是带有项目路径的
所以访问的时候除了要有端口外,还得带上项目路径,比如:http://localhost:8080/zuidaima/
建议Path设置为空,这样本地debug时,所有访问路径和线上是一致的,不会出现线上访问404的情况。
2.mvc开发中view层中访问路径的问题
比如jsp中配置静态页面的地址:
则该文件在项目的本地目录则是:/data/www/zuidaima/resource/css/bootstrap.min.css,则其通过http访问是http://www.zuidaima.com/resource/css/bootstrap.min.css
其中/resource/css/bootstrap.min.css以/开头则表示是相对于项目根目录而言,则本地访问中,根目录配置是:/data/www/zuidaima/,而web网页http访问中根路径是http://www.zuidaima.com/。
但是如果出现resource/css/bootstrap.min.css的不以/开头的配置,则其访问路径是相对于当前访问目录而言的,比如在最代码首页,分享页,这样配置,所有文件都是可以访问的,因为首页当前目录就是/根目录,但是如果访问比如:http://www.zuidaima.com/user/2318804493993984.htm,这样访问就404错误,http真实访问目录是:http://www.zuidaima.com/user/resource/css/bootstrap.min.css,这样对照到服务器资源明显就是错误的路径,所以出现这样的配置:
相当于http://www.zuidaima.com/user/../resource/css/bootstrap.min.css,这样和http://www.zuidaima.com/resource/css/bootstrap.min.css是一个作用,是否有点豁然贯通了?
所以建议在web开发中,尽量是用相对路径的根目录配置法,这样一目了然,http访问路径和服务器配置路径是一一对应的,当然在很多情况下,静态资源和动态请求是分开域名提供服务的,比如最代码的css是:http://static.zuidaima.com/resource/css/bootstrap.min.css,这样如果不在同一个域名那只能通过绝对路径访问了。