博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中项目的路径不要写相对路径,尽量用绝对路径
阅读量:6643 次
发布时间:2019-06-25

本文共 1192 字,大约阅读时间需要 3 分钟。

hot3.png

  • 问题

今天在将自己代码提交之后,有人提醒报了404错误

我还傻傻的说我这里不报错啊,是不是你那里出问题了

浏览器报404,找到了这一个ajax请求

fbee14cca579500b11a193c3a3a0cfeeb41.jpg

并且在控制层也能找到对应的响应器,检查了半天却没有发现错误,但是在同事那里就是报404的错误

c9123932ed7f1e2e6de7bb087fd3e708fc9.jpg

  • 错误原因及解决方案

后来发现在问题出新的原因是因为url我使用的是相对路径

在idea中打开tomcat configuration

d92b6ca1ecceab0dffab4a8c3363293069b.jpg

在这里我发现我的Application context选择的是默认值,也就是部署在了服务器的webapp的root路径下,而同事那里在这里设置了值ContextName,那么他的项目就部署在了webapp的ContextName路径下面(有关application context的信息可以点击链接:

 

因为同事那里给tomcat的添加了虚拟路径,而我这里没有设置

因此我就直接在服务器的根路径下就能访问到“count/subjectCount”,并且项目的访问路径如下图6021224bb617afc410ee2cd7f0de1610d47.jpg

 

但是我的同事给容器添加了虚拟路径,ContextName

2e441e24956bee3d14451a8edd84997d638.jpg

这时我们就要在访问路径前面提添加"ContextName”,即新的url是“ContextName/count/subjectCount”,并且此时的项目访问路径如下图

79931e41f604d64f49145dd0bac99ce9c03.jpg

这也就是问题出现的的原因,有的人对容器添加了虚拟路径,有的人没有给容器添加虚拟路径,直接放在toot里面了

结论

在这里说明一下,${pageContext.request.contextPath}是JSP取得绝对路径的方法,等价于<%=request.getContextPath()%> 。

也就是取出部署的应用程序名或者是当前的项目名称

因此,我们就应该设置访问路径的时候,使用绝对路径进行访问

  • 使用jquery
var url='${pageContext.request.contextPath}'+'/count/subjectCount';
  • 使用jsp的原始方法
<%    String path = request.getContextPath();    String basePath = request.getScheme()+'://'+request.getServerName()+':'+request.getServerPort()+path+'/';%>***********var url=path+'/count/subjectCount';var url2=basePath+'/count/subjectCount';***********

在这里basePath获取了完整的路径和端口号还有项目的上下文环境。 ,可解决因为修改服务器端口号引起的找不到路径问题。

转载于:https://my.oschina.net/u/3908739/blog/1921095

你可能感兴趣的文章
zw版【转发·台湾nvp系列Delphi例程】HALCON FastThreshold1
查看>>
深入JVM系列之(3):JavaCore和HeapDump
查看>>
9.12 h5日记
查看>>
使用Silverlight Streaming托管Silverlight应用程序
查看>>
Linux实战教学笔记39:Mha-Atlas-MySQL高可用方案实践(一)
查看>>
LeetCode: Restore IP Addresses
查看>>
asp.net(c#)将彩色图片变灰阶图片
查看>>
HDU 2504 又见GCD(数论,最大公约数)
查看>>
Python基础-入门之路
查看>>
驭风篇
查看>>
centos7 在虚拟机中装好后的网络连接问题
查看>>
PHP 生成随机字符串
查看>>
数据结构-算术表达式求值
查看>>
关于chrome被篡改主页修复方法
查看>>
电子商务网站中店铺按销量的排序
查看>>
oracle字段类型
查看>>
jQuery 的选择器常用的元素查找方法
查看>>
Linux命令未找到(command not found),误删Linux path原始路径
查看>>
SSE指令集系列之三
查看>>
LAMMPS源代码(1)- 源自精小木虫论坛华贴
查看>>