servlet web项目中,URL、ApplicationContext和PathRelativetoDeploymentRoot 三个之间的关系

servlet项目中
曾随意改过下面三个地方的小伙伴一定有的疑惑
servlet web项目中,URL、ApplicationContext和PathRelativetoDeploymentRoot 三个之间的关系
servlet web项目中,URL、ApplicationContext和PathRelativetoDeploymentRoot 三个之间的关系
servlet web项目中,URL、ApplicationContext和PathRelativetoDeploymentRoot 三个之间的关系
简单粗暴

URL就是你默认打开的页面,方便你想第一时间看到哪个页面。跟真正想要打开的页面无半点关系。这个URL是必须要跟你的application环境和web环境适配的,即application环境和web环境决定了你URL的写法。

Application Context是你项目环境
第一幅图里面的PathRelativeToDeploymentRoot 就是我们找到跟网页有关的静态资源的路径

如果我们想要打开网页就得是
localhost+端口号+Application Context + web静态资源路径

举个例子
你的Application Context : /sss
你的 web静态资源路径 : /hhh

那么你想访问页面就得是(这里假设你没设置默认打开路径)
localhost:端口号/sss/hhh/某页面(带上后缀.jsp或者.html)

就是Application Context 下是 servlet web项目中,URL、ApplicationContext和PathRelativetoDeploymentRoot 三个之间的关系
web静态资源路径是能找到这些的感觉
servlet web项目中,URL、ApplicationContext和PathRelativetoDeploymentRoot 三个之间的关系
你执行完localhost:端口号/sss/hhh/某页面(带上后缀.jsp或者.html)后
你上网页上打开开发者模式,你也可以很明显的看到静态资源的路径都是带上/sss/hhh的
servlet web项目中,URL、ApplicationContext和PathRelativetoDeploymentRoot 三个之间的关系

所以很明显了,如果你设置了application context
你现在想用ajax
而你的ajax的url 没有加上application context
那么你是找不到对应的@WebServlet()的

举个例子
当前application context是 /sss
你写的ajax url 是"/login"
你对应的@WebServlet是@WebServlet("/login")
那么你这个ajax想要找到这个@WebServlet,就必须要加上/sss
就是将ajax的url改成"/sss/login" ,你才可能成功执行 java逻辑部分

举个例子
假设你按照上面的做了,(现在是在一个登录页面)。那么你现在点击登录,发送ajax请求,后台响应到,并判断你是否可以登录,然后返回登录成功到页面。页面判断后,该执行 application context + web静态资源路径 + 新页面 才会进去。

好了,差不多就是这样。
简单粗暴一点就这么设置
application context: /
web资源路径:/
那么你访问页面就是 localhost+端口号+页面名字
那么你的ajax就是 /xxxx (随意你)

省的给搞晕!!!!