如果我在我的A.jsp中声明一个变量,并且我试图将A.jsp包含到B.jsp.So我的问题就在这里,是否在A.jsp中声明的变量在B.jsp中是否可用? 请解释我对动态包含和静态包含的情况。
答案 0 :(得分:5)
使用<%@ page include =“”>包含jsp模板时实际上将源插入并编译到包含文件中。这使您能够使用父文件中声明的变量。
当执行“动态”包含时,它将使用RequestDispatcher.include,它将调用调用页面作为新的Servlet。这使您无法使用声明的变量。
我建议你使用request.setAttribute(“name”,obj)在请求范围上传递变量;这样做的时候
答案 1 :(得分:0)
您无法使用<%@ include %>
指令传递服务器端参数。该指令执行静态包含。包含文件的内容静态插入到包含页面中。也就是说,在从jsp到servlet的转换时间内。
使用<jsp:include>
标记代替,它在运行时处理,使用<jsp:param>
可以传递参数。
例如,如果你有a.jsp
<jsp:include page="b.jsp" />
<jsp:param name="param1" value="value1" />
<jsp:param name="param2" value="value2" />
</jsp:include>
您可以在b.jsp
中将这些参数作为请求参数获取<% String v = request.getParameter("param1"); %>
考虑到你仍然可以在b.jsp中的a.jsp上获得请求参数。