代码里面写:
<jsp:include page="<%=request.getContextPath()%>/foot.jsp"></jsp:include>
会报错,错误信息:
index.jsp(17,22) attribute for %>" is not properly terminated如果我改成:
String str = request.getContextPath()+"/foot.jsp";
<jsp:include page="<%=str%>"></jsp:include>
那么什么内容也显示不出来,求高手解答

解决方案 »

  1.   

    试试
    <jsp:include page="<%=str%>" flush="true"/>
      

  2.   

    <jsp:include flush="true" page="<%=pageUrl%>"></jsp:include>可以,
    你说的空白,其实没有报错,是你的url地址不对page=" <%=str%>" 是不是多了一个空格
      

  3.   


    我这样<%
    String str = request.getContextPath()+"/foot.jsp"; 
    out.println(str);
    %>
    <jsp:include page="<%=str%>" flush="true"/>
    都不行
      

  4.   

    如果我单独去访问那个jsp页面,能访问到的
      

  5.   

    page=" <%=str%>"前面的空格去掉了吗?
      

  6.   

    您一开始的那种用法肯定是错误的,因为貌似没这种用法。第2种显示空白的原因,是因为你没有正确理解JSP动作指令
    当采用<jsp:include>动作包含资源时候,他include的page是指定包含资源的相对路径,这个路径是相对于当前JSP页面的URL
    相对路径的解析在请求处理期间发生,当前页面和被包含的资源是两个独立的个体,当前页面将请求发送给被包含的资源,被包含的资源对请求的处理的结果将作为当前页面对请求响应的一部分发送到客户端。
    而你request.getContextPath()得来的是以 /开头的,和后面的/foot.jsp拼接之后就变成 /(ContextPath)/foot.jsp,这个路径以/开头,所以被JSP编译器解析为绝对路径,所以没办法正确解析。,所以没有预期效果
      

  7.   

    晕了,确实是你的url地址写错了
    jsp:include是服务端执行的,你的地址应该是相对于contextPath的地址,也就是
    String str = "/foot.jsp";