以下是JSP的一段代码:
<% for(int i = 1; i <= 4; i++) {%>
<h<%=i%>>你好!JSP!</h<%=i%>><br>
<% } %>我觉得包含在<%%>里的就是JSP的代码,但是为什么将左大括号{移到下面就不对了呢?<% for(int i = 1; i <= 4; i++) %>
<% { %>
<h<%=i%>>你好!JSP!</h<%=i%>><br>
<% } %>错误原因:
An error occurred at line: 10 in the jsp file: /test/test.jsp
i cannot be resolved
7:     pageEncoding="GBK"%>
8:     <% for(int i = 1; i <= 4; i++) %>
9:     <% { %>
10:  <h<%=i%>>你好!JSP!</h<%=i%>><br>
11:  <% } %>请各位帮忙解释下,谢谢!

解决方案 »

  1.   

    这没什么好说的  软件规定for循环就要那么写 没办法 人家定义了标准  你用人家的东西就得那么写 人在屋檐下不得不低头 
      

  2.   

    10: <h<%=i%>>你好!JSP!</h<%=i%>><br>
    这里有问题 不是{位置的问题
    我觉得你这样写有些麻烦,不知道你这样写 试试[code=jsp]<% for(int i = 1; i <= 4; i++){ out.println("<h"+i+">你好!JSP!</h"+i+"><br>");
    } %>[/code]
      

  3.   

    <%
      for(int i=1;i<=4;i++){
        out.print("<h"+i+">你好!JSP</h"+i+">");
      }
     %>
      

  4.   

    其实根本就循环就没执行,  
    ----------------------------------
     <%for(int i=0;i<4;i++) %>
      <%{ %>
       您好啊
      <%} %>
    -----------------------------
    只输出了 “您好啊”
    要是加个 您好啊<%=i%>  就出错的
      

  5.   

    <%= for(int i = 1; i <= 4; i++) {%>
    <h<%=i%>>你好!JSP!</h<%=i%>><br>
    <% } %>
    jsp页面引入JAVA代码段<%=%>需要加=号
      

  6.   

    大家知道jsp在执行的时候要转换成servlet源文件(.java文件)然后再编译为servlet类(.class)文件。
    你的问题是在编译的时候出现的问题。
    tomcat把你编译的jsp文件放在目录为
    tomcat安装目录\work\Catalina\localhost\工程名\org\apache\jsp下
    如果你写的jsp的写法为:
    <% for(int i = 1; i <= 4; i++) {%>
    <h<%=i%>>你好!JSP!</h<%=i%>><br>
    <% } %>
    生成的servlert源文件关键代码为:
     for(int i = 1; i <= 4; i++) {
          out.write("\r\n");
          out.write("<h");
          out.print(i);
          out.write(">你好!JSP!</h");
          out.print(i);
          out.write("><br>\r\n");
     } 
    如果你写的jsp的写法为:
       <% for(int i = 1; i <= 4; i++)%>
       <%{ %>
    <h<%=i%>>你好!JSP!</h<%=i%>><br>
    <% } %>
    生成的servlert源文件关键代码为:
    for(int i = 1; i <= 4; i++) 
          out.write("\r\n");
          out.write("  \t");

          out.write("\r\n");
          out.write("<h");
          out.print(i);
          out.write(">你好!JSP!</h");
          out.print(i);
          out.write("><br>\r\n");
     } 
    很显然第二种写法for循环只有一条语句执行体。而下面又用out.println(i);来使用变量i。这个时候就找不到了。所以编译时通不过的。
    个人见解
      

  7.   

    hackerster0324 的回复非常好!解决我心头疑惑,谢谢!
      

  8.   

    <%for()%>
    <{>
    这样是错误的!  就想java里面
    for()
    ..
    {}
    for()后面空行了,那么java语句就找不到下面的了!这个也是!
    <%for%><%{%>这样写就像是for后面空行了!