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

  • 问题

今天在将本身代码提交以后,有人提醒报了404错误javascript

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

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

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

  • 错误缘由及解决方案

后来发如今问题出新的缘由是由于url我使用的是相对路径ajax

在idea中打开tomcat configuration浏览器

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

 

由于同事那里给tomcat的添加了虚拟路径,而我这里没有设置服务器

所以我就直接在服务器的根路径下就能访问到“count/subjectCount”,而且项目的访问路径以下图app

 

可是个人同事给容器添加了虚拟路径,ContextNamewebapp

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

这也就是问题出现的的缘由,有的人对容器添加了虚拟路径,有的人没有给容器添加虚拟路径,直接放在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获取了完整的路径和端口号还有项目的上下文环境。 ,可解决由于修改服务器端口号引发的找不到路径问题。

相关文章
相关标签/搜索