首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查jsp文件是否包含在另一个jsp文件中?

问如何检查jsp文件是否包含在另一个jsp文件中?
EN

Stack Overflow用户
提问于 2011-10-16 08:21:11
回答 1查看 3.7K关注 0票数 3

看到你们都知道在jsp中包含文件..。我有两个文件

one.jsp two.jsp

在two.jsp中,我有以下给定的代码

代码语言:javascript
复制
Long something = 0;

在one.jsp代码中是

代码语言:javascript
复制
<%@include file='two.jsp'%>
<%@include file='two.jsp'%>

我两次都把同一份文件放进去了,

所以会出现错误,因为某个变量会被创建2次,对吗?

所以这意味着在第二次包含文件之前,我应该检查一下,如果它包含了,那么我就不应该再灌输它,如何检查它呢?

与php中的函数一样,包含(“file.php”);//等函数将包括文件

和include_once("file.php");//这将包括文件,如果它之前不包括,

有什么解决办法吗?

EN

回答 1

Stack Overflow用户

发布于 2011-10-16 08:53:38

实际上,使用这两个静态包含将导致将同一个变量声明两次的错误。在编译时,这些导入将在包含页中追加所包含页的代码,然后将全部编译。

我不知道任何内置在JSP中的include_once方法,但您可以通过在顶级页面中作为变量声明全局Set (即HashSet),或者作为请求属性(在处理结束时应该清除该属性)来执行类似的操作,其中可以添加已经包含的页面的名称。

one.jsp

代码语言:javascript
复制
<% HashSet<String> pagesSet = new HashSet<String>(); %>
...
<%@include file='two.jsp'/>

two.jsp

代码语言:javascript
复制
<% if (!pagesSet.contains("two.jsp"){ %>
   //... Remember to actually ADD two.jsp to pageSet, 
   // because it IS being included NOW.
   pageSet.add("two.jsp");

   // Entire contents of two.jsp
   // ....
<% } %>

注意,这与C中的#ifndef #define #endif模式非常相似。

考虑到使用dynamic,您将避免重复变量的问题。包含的页面将在它自己的作用域上执行,要访问服务器端变量,您必须将它们传递给<jsp:param>或Request、Session或Application作用域之一。关于静态和动态包含之间的差异,请参见这个问题的答案:包含指令和属性名称问题

此外,如果有大量的“条件”静态包含,则最终可能会命中64K方法极限。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7783145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档