Java中项目的路径不要写相对路径,尽量用绝对路径

本文介绍了解决因项目部署路径不同导致的404错误问题。通过使用绝对路径而非相对路径来确保所有环境下都能正确访问资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 问题

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

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

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

fbee14cca579500b11a193c3a3a0cfeeb41.jpg

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

c9123932ed7f1e2e6de7bb087fd3e708fc9.jpg

  • 错误原因及解决方案

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

在idea中打开tomcat configuration

d92b6ca1ecceab0dffab4a8c3363293069b.jpg

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

 

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

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

 

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

2e441e24956bee3d14451a8edd84997d638.jpg

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

79931e41f604d64f49145dd0bac99ce9c03.jpg

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

 关于application context设置与不设置的区别

结论

在这里说明一下,${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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值