在使用标签添加到页面的jsp页面中,变量的作用域规则是什么?
我的理解是,包含的页面实际上是逐字复制到页面中的,这使我假设,如果我在Parent JSP中声明了一个变量,则该变量将在子页面中可用。
但是Eclipse对此有所抱怨(这可以理解,因为我可以将页面包含在任何页面中,也可以单独使用它们。当我尝试启动tomcat服务器时,它无法启动。
我基本上想从父页面的会话中获取几个变量,并在子页面中使用它们。这行不通。
因此,我一直反对他在每个子页面中从会话中获取它们的想法,但是我想知道是否可以给他们所有相同的变量名,或者是否必须在其中为它们选择不同的变量名。每个页面,这样他们就不会发生冲突。
另外,如果我在父jss中导入log4net,那么导入又该在子jss中导入吗?
在JSP中,有两种方法可以包含其他jsp页面。
<%@include file="include.jsp"%>
和
<jsp:include page="include.jsp" />
如果使用前者,则在父JSP上声明的任何变量都将在include.jsp的范围内(当然,您猜想的是Eclipse不会看到此变量),因为它已被编译器有效复制。
如果使用第二种方法,则包含在运行时完成,并且包含页面具有其自己的作用域。
进口同上。尽管可以安全地将它们多余地导入到包含页面中。
如果使用的是前者,则更喜欢在它们的后缀.jspf以表示JSP片段。然后,我可以关闭片段文件中的一些Eclipse警告。但总的来说,我尝试避免使用该方法,而是选择第二种方法。
在此处的文档中可以找到更多信息:Include指令和JSP include。