一、\${ctx}与${pageContext.request.contextPath}的区别

相同点:

\${ctx}和\${pageContext.request.contextPath}都是获取当前文件的根目录

不同点:

\${ctx}是\${pageContext.request.contextPath}的简写版

例:

项目结构:

pathTest.jsp代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
路径1:${ctx}<br>
路径2:${pageContext.request.contextPath}
</body>
</html>

结果如图:

注:使用\${ctx}时,要先进行配置:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>

二、使用\${ctx}访问js文件或图片

<img src="${ctx}/images/left-head.jpg"/>

运行结果:

但是没懂WebContent目录的存在,\${ctx}获取的是文件跟目录,也就是/SpringDemo,但是images是在SpringDemo\WebContent目录下,那么为什么\${ctx}/WebContent/images/left-head.jpg会报错

F12查看页面源码,发现也跟WebContent没有关系

网上找了很久资料,终于找到了原因,直接搬过来了,原文:https://www.cnblogs.com/lixiuming521125/p/7253918.html ,作为一个勤劳的搬运工,原文内容如下:

WEB项目是放在容器上运行的,而Java的源码是不能直接运行,需要经过编译部署才能在容器上运行,那么线索就来了,容器上运行的是编译的结果,自然就不是项目本身(这里指的是项目本身的目录结构);所以所有的访问路径是按照编译后的路径。

看下WEB工程的目录结构和编译结果的目录结构:

左边WEB项目的src的源码文件 --> 左边build下的.class的字节码文件,也就是右边容器编译结果路径的WEB-INF下的classes文件

左边WEB项目的WebContent --> 生成右边整个容器编译结果;也就是说右边编译的结果的主体内容就是左边WebContent里面的东西

访问路径是通过访问编译结果的工程名再到下面的文件,所以,访问路径不需要写上“WebContent”

最新文章

  1. iOS查看3D效果的手势交互
  2. git 学习笔记
  3. CentOS6.5 根目录结构划分
  4. MySQL限时解答
  5. HDU 1244 Max Sum Plus Plus Plus
  6. mongodb下如何开启不同端口,本地远程ip的服务器呢
  7. P78、面试题10:二进制中1的个数
  8. 安装solaris_11.2与windows双系统(VM10模拟实现)(二)
  9. 普林斯顿大学算法课 Algorithm Part I Week 3 自我总结
  10. CS20SI-tensorflow for research笔记: Lecture1
  11. salt Rosters
  12. 洛谷P3178 [HAOI2015]树上操作
  13. springboot(二十三)Springboot2.X响应式编程
  14. Salt Document学习笔记1
  15. Oracle分析函数-排序排列(rank、dense_rank、row_number、ntile)
  16. 怎样更新CentOS6.5的yum源
  17. 【转】java 线程的几种状态
  18. pair
  19. Redis(四)Redis高级
  20. C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)

热门文章

  1. idou老师教你学Istio:如何用 Istio 实现速率限制
  2. 传递JSON数据有没有必要用RequestBody?
  3. Python之面向对象-反射
  4. ios手机处理keyup事件时的兼容性问题
  5. Mysql行转列的简单应用
  6. ubuntu HackRF One相关环境搭建
  7. bc命令详解
  8. django之基本配置
  9. centos7安装oracle亲测可用
  10. 2-Sixth Scrum Meeting20151206