jsp之${CTX}理解
理解一:
jsp之${CTX}
根据自己的需要选择以下标签。
<%@ taglib uri="/struts-tags" prefix="s"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
我项目中的代码如下:
index.jsp
<%@ page language="java" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/><html>
<head><title>主页</title><script src="${ctx}/static/js/jquery.iphone.toggle.js"></script>
</head><body>
<div class="span10" id="content"><!-- start: Content --><div><ul class="breadcrumb"><li><a href="${ctx}/index">主页</a></li></ul></div>欢迎使用an笛声后台系统
</div><!-- end: Content -->
</div>
</body>
</html>
${CTX}
与${pageContext.request.contextPath}的对比
1、${pageContext.request.contextPath}是获取当前根目录。
2、${ctx}通过观察可以知道也是获取当前根目录的意思
不同之处:
${ctx}是
${pageContext.request.contextPath}的简写版。
同时发现在项目的index.jsp文件内有这样一段话的配置,<c:set var="ctx" value="${pageContext.request.contextPath}"/>。在此值得注意的是,在使用${ctx}的时候一定不要忘记把带有该配置的<c:set var="ctx" value="${pageContext.request.contextPath}"/>的文件引入到当前页面来。
理解二
一、${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没有关系
网上找了很久资料,终于找到了原因,直接搬过来了,原文:web项目访问路径上为什么不能写上WebContent - 啄木鸟伍迪 - 博客园 ,作为一个勤劳的搬运工,原文内容如下:
WEB项目是放在容器上运行的,而Java的源码是不能直接运行,需要经过编译部署才能在容器上运行,那么线索就来了,容器上运行的是编译的结果,自然就不是项目本身(这里指的是项目本身的目录结构);所以所有的访问路径是按照编译后的路径。
看下WEB工程的目录结构和编译结果的目录结构:
左边WEB项目的src的源码文件 --> 左边build下的.class的字节码文件,也就是右边容器编译结果路径的WEB-INF下的classes文件
左边WEB项目的WebContent --> 生成右边整个容器编译结果;也就是说右边编译的结果的主体内容就是左边WebContent里面的东西
访问路径是通过访问编译结果的工程名再到下面的文件,所以,访问路径不需要写上“WebContent”
jsp之${CTX}理解相关推荐
- struts2中action向action之间传数据和action向jsp传数据理解
1,在 Action中我们经常会从这个Action跳转到另一个Action中,这时我们就要用到redirect.redirect-action.chain, 其中redirect和redirect-a ...
- JSP学习---jsp简介和理解jsp的本质
本篇博课知识点: 1.jsp技术简介 2.Tomcat首次访问JSP的过程: 3.JSP语法: 4.代码演示 jsp技术简介 JSP是Java Server Page的缩写,它是Servlet的扩展, ...
- 什么是jsp,对于jsp的详细理解
博主的每篇博文的浪漫主义 <欧若拉> 假如爱是一道光 这是一篇学习笔记 ,来自 http://www.monkey1024.com/javaweb/941 叫 小猴子monkey1024的 ...
- 理解JSP页面中<%!%>与<%%>与<%=%>及out.write()
1 jsp中的<理解 首先,我们要了解jsp运行原理.JSP的本质就是一个Servlet,JSP的运行之前会先被Tomcat服务器翻译为.java文件,然后在将.java文本编译 为.class ...
- JSP的生命周期研究
先看个简单的jsp例子: <%@ page language="java" contentType="text/html; charset=UTF-8"p ...
- java jsp总结
一.jsp简介 JSP(全称Java Server Pages)是由 Sun Microsystems 公司倡导和许多公司参与共同创建的一种使软件开发者可以响应客户端请求,而动态生成 HTML.XML ...
- 19.jsp生命周期
JSP 生命周期 理解JSP底层功能的关键就是去理解它们所遵守的生命周期. JSP生命周期就是从创建到销毁的整个过程,类似于servlet生命周期,区别在于JSP生命周期还包括将JSP文件编译成ser ...
- jsp怎么调用servlet_Servlet简述
servlet 1.servlet 是什么? Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上 ...
- jsp处理的生命周期
JSP 生命周期 理解JSP底层功能的关键就是去理解它们所遵守的生命周期. JSP生命周期就是从创建到销毁的整个过程,类似于servlet生命周期,区别在于JSP生命周期还包括将JSP文件编译成ser ...
- Servlet+JSP一文完结
目录 前言: 一.Servlet简介 二.生命周期 三.Servlet实例 四.Servlet表单数据 五.客户端HTTP请求. 六.Servlet服务器HTTP响应 七.Servlet HTTP状态 ...
最新文章
- OCQ亮相中国移动办公峰会 荣获2017中国移动办公创新品牌
- pandas将dataframe中的年、月、日数据列合并成完整日期字符串、并使用to_datetime将字符串格式转化为日期格式
- hibernate配置相关知识
- 获取程序代码块资源消耗
- STM32 串口ISP下载
- ECMAScript面向对象(三)——之继承
- ArcEngine由点生成TIN
- 链路负载需求及基本原理
- SharePoint2010 获取网站集SPSite,SPWeb对象的4种方法
- 矩阵范数与向量范数的公式及其理解
- QQ登录界面测试用例--最全的书写以及测试用例设计,你须知道的7个小技巧
- 【图像识别】基于计算机视觉实现自动报靶系统(重弹孔)含Matlab源码
- 2021临泉一中高考成绩查询,临泉三所省级示范高中高考成绩揭晓!
- git 中 A C D M R T U X 分别解释
- numpy和pandas简单使用
- HDU1116 Play on Words——欧拉路(有向图+并查集)
- 学会这些思维模型,窥见查理·芒格的致胜秘笈(二)
- Linux下FTP;LFTP;TFTP;SFTP;NCFTP;RCP;SCP的使用
- 阿尔斯通任命耿明为中国区总裁;希尔顿集团大中华区首推零工模式 | 美通企业日报...
- 中国楼市房贷真相:只有傻瓜才自掏腰包!
热门文章
- 浏览器 主页 被篡改 ,怎么都修改不回来(包括 Firefox ,google Chrome) KMS激活问题
- 外设键盘win和alt功能互换解决方法
- 软件推荐(6):滴答清单
- 智遥工作流将数据导出到Excel分析
- Android知识点 015 —— 2.3.9 CountDownTimer倒计时(补充 疯狂Android讲义)
- ccf 命令行选项 java,DiskPart 命令行选项
- html小吃制作,最简单易学的12种小吃的做法|小吃|简单易学
- Java实现 N的阶乘
- 镰仓物语 | 亲近的人即便离开人间,它也在你的身边
- 盘点免费好用的5款思维导图工具