-
2011-04-07 00:28:00
一般来说,%@include....%是不支持绝对路径的,但我以前加模块名称写成这样,jboss是不报错的,
<%@include file="/kbase/main/check_province.jsp"%>
今天却死活找不到文件,去掉模块名称就好了,估计是jboss的配置原因,不知道具体原因在哪,先记在着,有空再研究
更多相关内容 -
jsp中 jsp:include中使用绝对路径的问题
2018-05-08 06:58:31jsp:include page=" /项目名/templates/header.jsp"></jsp:include> 报的错为 org.apache.jasper.JasperException: javax.servlet.ServletException: File &quot; /项.....http://www.iteye.com/problems/34149/
<jsp:include page=" /项目名/templates/header.jsp"></jsp:include>
报的错为
org.apache.jasper.JasperException: javax.servlet.ServletException: File " /项目名/templates/header.jsp" not found
提示找不到的页面就是参数给出的页面"/项目名/templates/header.jsp"
这个去掉开头的“/”后面的路径应该绝对没问题,除非这个“/”不代表服务器的根目录(服务器地址)
下面
<jsp:include page=" http://localhost:8080/项目名/templates/header.jsp">
报的错为
org.apache.jasper.JasperException: javax.servlet.ServletException: File "/templates/http:/localhost:8080/项目名/templates/header.jsp" not found
提示找不到的页面比参数在前面多出了一段 /templates/
就是说这里并没有因为参数以“http://”开头而给予"特殊待遇",只是把它当成了一段普通的字符串,同时因为不是以“/”开头的而被当成了相对路径处理,并在前面补充上了"/templates/"
那个如果是这样,这个 "/templates/"就应该是自身所在的位置,而按此推理,这个“/”代表了???
又实验了下
<jsp:include page=" ../templates/一个不存在的页面"></jsp:include>
报错为
org.apache.jasper.JasperException: javax.servlet.ServletException: File " /templates/一个不存在的页面" not found
结论
观察了下,想了想,知道了,原来我饶了一个大圈,问题其实很简单:
总结了下,JSP中<jsp:include>标签的应用:
1,不支持<%= %>等动态的语法,特别是page属性的值,只能是一个写死的字符串(刚听说,其实也有自己本身的一些特殊语法,以后再学)
2,对于引入页面的路径问题,也可以常用"绝对路径"和"相对路径"两种应用方式。
绝对路径就是以“/”开头的路径,其它的包括以“http://”开头的都是相对路径,可应用“./”“../”等
相对路径 没什么好说的。强调一点,这里的相对路径也是相对于访问页面的URL的路径,本质上与页面文件在项目中的存储位置没直接关系,所以这里用相对路径时也存在由于访问URL不确定带来的问题(是不是这样呢?如文章开头说的,这里都是我自己的结论)。
主要是绝对路径的问题:
我们知道大部分情况下写在页面(不管静态还是动态)里并输出到IE中的路径都是由IE来解析的,以“/”开头的绝对路径 这个“/”代表的是服务器的根目录:比如访问URL为 http://localhost:8080/项目名/templates/template.jsp
那么“/”代表的就是 "http://localhost:8080/" 而并不带有项目名信息。
而<jsp:include>引入页面的过程,是在服务器运行向IE输出数据的过程中由JAVA程序调用执行,路径也当然由JAVA程序来解析,此时以"/"开头的绝对路径中的“/” 代表的已经是本项目的根目录了。
比如 URL为 http://localhost:8080/项目名/templates/template.jsp
那么“/”代表的就是 "http://localhost:8080/项目名/"。已经带有了项目名信息。
同时,也不用像引入JS CSS文件那样在路径前加上 <%=request.getContextPath()%> 来解决项目名本身修改的问题了。只需一个“/”就什么也不用管了。
如上所述:
需求需要的这段代码其实很简单引用<jsp:include page="/templates/header.jsp"></jsp:include>
需要被任意位置的页面引入的页面 存放在项目根目录下的templates目录下 -
include指令 中file 属性 路径问题!
2015-09-12 05:43:34 在java web中 以“/”开头的路径都是绝对路径。 如图中,是不是解释错误了。。 -
include指令
2019-09-18 15:29:21文件包含指令include是JSP的另一个指令的标识。通过该指令可以在一个JSP页面中包含...使用include指令,最终将生成一个 文件 ,所以在被包含和被包含的文件中不能用相同名称的变量。 语法:<%@ include file=“pa...文件包含指令include是JSP的另一个指令的标识。通过该指令可以在一个JSP页面中包含另一个JSP页面。不过该指令是静态包含,也就是说被包含的文件中所有内容会被原样包到该JSP页面中,即使被包含的和包含的文件中JSP代码,在包含是也不会被执行。使用include指令,最终将生成一个 文件 ,所以在被包含和被包含的文件中不能用相同名称的变量。
语法:<%@ include file=“path”%>
该指令只有一个file属性,用于指定要包含文件的路径。该路径可以是相对路径,也可以是绝对路径,但不可以是<%= %>表达式所表示的文件。
静态包含<%@ include file = “path”%>
两个jsp文件融为一个被编译了。所以,这两个jsp文件不能有冲突的地方。
动态包含:<JSP:include page=“path”>
区别:
1、语法不同
静态包含:<%@ include file=“path”%>
动态包含:<JSP:include page=“path”>
2、参数传递不同
静态包含不能像包含页面传递 参数
动态包含可以使用jsp:param标签像被包含页面传递参数
3、原理不同
静态包含:先合并再翻译
动态包含:先翻译再合并 -
include指令与include动作标识的区别
2018-10-18 15:21:10include指令使用格式:<%@ include file=“文件的绝对路径或相对路径”%> file属性:指定被包含的文件,该属性不支持任何表达式,也不允许通过如下的方式来传递参数。 <%@ include file=...JSP中主要包含三大指令,分别是page,include,taglib。本篇主要提及include指令。
include指令使用格式:<%@ include file=“文件的绝对路径或相对路径”%>
file属性:指定被包含的文件,该属性不支持任何表达式,也不允许通过如下的方式来传递参数。
<%@ include file=“welcome.jsp?name=Tom”%>下面用法将会抛出异常,也是不允许的:
<% String path=“login.jsp”;%>
<%@ include file="<%=path%>"%>
如果该属性值以”/“开头,那么指定的是一个绝对路径,将在当前应用的根目录下查找文件;如果是以文件名称或文件夹名开头,那么指定的是一个相对路径,将在当前页面的目录下查找文件。
JSP中常用的动作标识有jsp:include、jsp:forward、jsp:useBean、jsp:setProperty、jsp:getProperty、jsp:fallback、jsp:pugin。本篇主要提及jsp:include动作标识。
jsp:include动作标识使用格式:<jsp:include page=“被包含文件的路径” flush=“true|false”/>
或者向被包含的动态页面中传递参数:
<jsp:include page=“被包含文件的路径” flush=“true|false”><jsp:param name=“参数名称” value=“参数值”/></jsp:include>
page属性:和include指令的file属性一样。
flush属性:表示当输出缓冲区满时,是否清空缓冲区。该属性值为boolean类型,默认值为false,通常情况下设为true。
处理方式不同:使用include指令,被包含的文件的内容会原封不动地插入到包含页中使用该指令地位置,然后JSP编译器再对这个合成地文件进行编译最终编译成的文件只有一个。使用include动作标识,该标识被执行时,程序会将请求转发到(注意是转发而不是请求重定向)被包含的页面,并将执行结果输出到浏览器中,然后返回包含页继续执行后面的代码。服务器执行的是两个文件,JSP编译器会分别对这两个文件进行编译。注:]请求转发,存储在request对象中的信息会被保留并被带到目标页面中;请求重定向,重新生成一个request请求,将该请求重定向到指定的URL,所以事先存储在request对象中的信息都不存在了。
包含方式不同:include指令,静态包含,最终服务器执行的是将两个文件合成后由JSP编译器编译成的一个class文件,若改变被包含的文件,则主文件的代码就发生了改变,服务器会重新编译主文件。include动作标识,动态包含,通常用来包含那些经常需要改动的文件。服务器执行的是两个文件,被包含文件的改动不会影响到主文件,服务器不需要对主文件进行重新编译,只需要重新编译被包含的文件即可,而只有当jsp:include动作标识被执行时,使用该标识时,目标文件才会被编译。
约定不同:include指令的约定index.jsp文件的部分代码
1 <%@ page language=“java” contentType=“text/html; charset=UTF-8”%>
2 <%@ include file=“top.jsp” %>
top.jsp文件的部分代码1 <%@ page language=“java” contentType=“text/html; charset=GB2312”%>
访问index.jsp将会出现异常jsp:include动作标识,无需遵循这样的约定,不会出现异常
1 <%@ page language=“java” contentType=“text/html; charset=GB2312”%>
2 <jsp:include page=“top.jsp”/>本篇转载自博客园用户:52Hz;
-
#include后用库路径与相对路径的区别
2018-08-13 14:37:56include &lt;&gt; 和#include ” “的区别 ...如果是自己写的头文件 建议使用#include“” &lt; &gt;引用的是编译器的类库路径里面的头文件 " "引用的 -
#include“头文件“的相对路径是相对谁的路径
2016-03-22 11:30:16问题:#include“头文件“的相对路径是相对谁的路径???? 是相对工程文件的路径, 你可以把stdAfx.h分别复制到放到各个比如相对工程文件的路径,相对与其对应的C文件的路径,又或者是根据所建立的工程添加的文件... -
浅谈JSP中include指令与include动作标识的区别
2018-05-30 08:53:47我们都知道在JSP中include有两种形式,分别是<%@ include file=” ”%><jsp:include page=” ” flush=”true”/>前者是指令元素,后者是动作元素。具体它们将在何处用?如何用及它们有什么区别?这应该是很多人... -
jsp页面中的指令---include指令
2019-10-07 23:10:55该指令只有一个file属性,用于指定要包含的文件的路径,可以是相对路径,也可以是绝对路径,但是不可以是通过<%=%>表达式所代表的文件 小技巧:在应用include指令进行文件包含时,为了使整个页面的层次结构不发生... -
cmake(三十五)Cmake之include指令
2021-05-11 21:11:50+++++++++++'普通(file)文件'+++++++++++ 1)如果是'相对'路径,是'相对于'include指令所在的'CMakeLists.txt'的路径 2)'绝对'路径-->'建议' 一般我们会将'cmake'文件放到cmake目录下,所以'前缀'一般是: CMAKE_... -
include指令与include标签区别
2018-06-28 21:34:08<%@ include file=""%&...file属性是必填的(绝对路径或相对路径),但它不支持任何表达式,也不允许通过?挂参方式来传递参数。2.include动作:<jsp:include page=& -
标签include和指令include
2019-07-23 08:07:53指令include和标签include 1. 指令include(静态包含,属于JSP范畴) 定义:静态包含指令是在JSP编译时插入的一个包含文本或代码的文件,这个包含的过程的静态的,而包含的文件可以是JSP文件、HTML文件、文本文件,... -
jsp的include指令案例
2020-09-17 16:22:44使用include指令,最终将生成一个文件,所以在被包含和包含的文件中,不能有相同名称的变量。 include指令的语法格式如下: <%@ include file="path"%> 该指令只有一个file属性,用于指定要包含文件的路径... -
#include头文件搜索的路径
2019-02-01 10:32:11The #include directive tells the preprocessor to treat the contents of a specified file as if those contents had appeared in the source program at the point where the directive appears. ... -
include指令与jsp:include动作标识的区别
2018-07-23 19:50:55include指令与<jsp:include&...path可以是相对路径,也可以是绝对路径。示例: <#@include file="top.jsp"%> <jsp:include>动作标识的语法... -
JSP动态include和静态include指令区别最简单的说法
2020-08-18 23:04:01其中url既可以是静态页面,也可以是动态页面的绝对路径或相对路径,如果路径不对会提示语法错误,也可以使用控制器路径。 动态include 含义,使用动态include指令,可以将一个外部文件嵌入到当前JSP文件中,但不会... -
JSP中include指令与include动作标识的区别
2019-03-25 11:12:57本篇主要提及include指令。 JSP中常用的动作标识有<jsp:include>、<jsp:forward>、<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>、<jsp:fallback>、<... -
#include 指令
2019-02-26 18:04:34文章目录#include 基本概念#include后面 <> 和 "...#include 指令后面会跟一个文件名,预处理器发现 #include 指令后,就会根据文件名去查找文件,并把这个文件的内容包含到当前文... -
JSP页面包含文件的两种方法及其区别:include指令标识 & 动态标识
2020-03-17 10:45:15%@ include %>指令实现;另一种是应用\<jsp:include>动作元素实现。 (一)<%@ include %>指令 通过该指令可以在一个JSP页面中包含另一个JSP页面。但该指令是静态包含,也就是说被包含文件中所有的... -
C--#include 路径查找问题
2018-08-22 11:06:02首先讲一个全局变量的问题,当两个文件A和B都定义了全局变量a的时候,这个两个文件中的a是没有关系的,要想在另一个文件中使用a只有用extern声明。...所以我们在.h文件中不定义变量,否则两个不... -
jsp中include指令和include动作的区别
2017-04-07 09:44:52jsp中include指令和include动作的区别 -
javaWeb入门<2>javaWeb中使用绝对路径与相对路径小结
2016-10-19 15:12:40在JavaWeb开发中,只要是写URL地址,那么建议最好以"/"开头,也就是使用绝对路径的方式,那么这个"/"到底代表什么呢?可以用如下的方式来记忆"/":如果"/"是给服务器用的,则代表当前的web工程,如果"/"是给浏览器用... -
JSP @include file的路径问题
2016-11-17 13:39:31以前的项目多是直接部署在根目录下,很少考虑上下文路径的问题,这次需要将应用部署到指定的上下文路径上,是portlet上要用,以前没有用过portlet,不是很了解! 在使用跟目录的时候,是这么写的 在使用aa作为... -
jsp的include指令和include动作
2017-02-18 15:52:40在jsp页面使用指令的时候,将会在JSP编程时在该指令出现的地方插入一个包含文字或代码的文件,这个包含的过程是静态的。静态的包含是指在编译时就能确定包含文件的内容,直接被插入到jsp文件中,形成一个jsp文件,... -
c语言中#include 路径查找问题
2014-11-01 15:25:24命令形式如:“gcc -I /path/where/theheadfile/in sourcefile.c“,这里源文件的路径可以是绝对路径,也可以是相对路径。eg: 设当前路径为/root/test,include_test.c如果要包含头文件“include/include_test... -
XCode项目设置引入头文件路径之绝对路径(系统路径)/相对路径
2017-12-04 13:51:11iOS开发之 相对路径与绝对路径 https://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/XcodeBuildSettingRef/1-Build_Setting_Reference/build_setting_ref.html 在iOS的工程中,... -
【CMake】cmake中的include指令(.cmake文件/MACRO宏/function函数)
2019-10-22 10:02:34也许,你会诧异,.cmake文件是干什么的,甚至会想.cmake文件是不是cmake的正统文件,而CmakeLists.txt并不是。 但其实,CmakeLists.txt才是cmake的正统文件,而.cmake文件是一个模块文件,可以被include到CMakeLists... -
html中include include方式
2021-06-11 00:41:08与的区别1、#包含文件的相对路径,#包含文件的虚拟路径。2、在同一个虚拟目录内,!--#=""--和!...--#includefile="myweb/file.asp"--是绝对要报错的。3、如果一个站点下有2个虚拟目录myweb1和myweb2,m...