Jsp填坑

​ 今天改一个JSP项目,由于博主用的是MyEclipse最新的2018.8.0的,项目是老版本的(不知猴年马月的老东西了)导入项目后启动发现报错,错误信息为:

File [/WEB-INF/jsp/user/rollpage.jsp] not found

文件没有找到???

Jsp填坑

看到#47让我想到了SQL注入尾部的# 难道是把斜杠/给我转化为了字符

Jsp填坑

那换为绝对路径试试

${pageContext.request.contextPath }

绝对路径还是这个错 什么鬼 ?去问问百度大哥

Jsp填坑

百度一下 竟然无果,360就不用说了(我要你们有何用)

Jsp填坑

回过头来再看下代码报错位置

<%@include file=”/WEB-INF/jsp/common/head.jsp”%>

突然想到了JSP的静态包含与动态包含

在jsp中include有两种形式,其中<%@include file=”url”%>是指令元素,<jsp:include page=”” flush=”true”/>是动作元素。

<%@include file=”url”%>包含一个静态文件,而<jsp:include page=”” flush=”true”/>包含一个静态或动态文件。

<%@include file=”url”%>不会检查文件的变化,适合包含一个静态文件,被包含的文件可以是html,jsp,文本文档,如果是html,文本文档,文件内容将会添加到jsp文件中<%@include file=”url”%>的位置上;如果包含一个jsp文件,这个jsp文件将会被执行,将结果添加到<%@include file=”url”%>的位置,但其变量无法使用。

<jsp:include page=”” flush=”true”/>总会检查文件中所发生的变化,适合包含动态页面,所以既可以用它包含静态文件,也可以用它包含动态文件,当包含动态文件时,flush的值必须为true,表示页面可以刷新。如果被包含的是jsp页面,还可以向被包含页传递参数,例如

<jsp:include page=”test.jsp” flush=”true”>

<jsp:param name=”index” value=”TT”/>

<jsp:param name=”home” value=”EE”/>

</jsp:include>

test.jsp为被包含页面。

<%@include file=”url”%>是先包含再编译,只会产生一个class文件,;<jsp:include page=”” flush=”true”/>是先编译再包含,会产生多个class文件。

值得注意的是,不管被包含的是动态文件还是静态文件,被包含的文件都不应该出现

原文 

https://www.5658.pw/2019/01/03/Jsp填坑/

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Jsp填坑

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址