今天在做商城页面,遇到问题:
<%@include file="menu.jsp" %>
错误提示:
Multiple annotations found at this line:
- Duplicate local variable path
- Duplicate local variable
basePath
重复变量,
改成: <jsp:include page="menu.jsp"> 也不行
查资料:
因为<%@include%>引进的是代码,把代码包含进来,而新进JSP时,会默认生成
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<base href="<%=basePath%>">
这二句代码,所以用<%@include%>引进页面是就报重复变量 basePath
解决方法,把要引进页面的重复的句子去掉就行,
另外:
查询到 <%@ include file=""%>与<jsp:include page=""/> 的区别:
一、执行时间上:
<%@ include file=”relativeURI”%> 是在翻译阶段执行
<jsp:include page=”relativeURI” flush=”true” /> 在请求处理阶段执行。
二、二:引入内容的不同:
<%@ include file=”relativeURI”%> 引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起。
<jsp:include page=”relativeURI” flush=”true” /> 引入执行页面或servlet所生成的应答文本。
翻译: JSP容器负责将jsp页面转化成servlet,并编译这个servlet。