日期:2014-05-20  浏览次数:20772 次

jsp小问题求教
Java code

<table border=1>
<%
    while(rs.next())
{
%>
        <tr>
        <td><%=rs.getInt("id") %></td>
        <td><%=rs.getString("cont") %></td>
        </tr>
<%
}
 %>    
 </table>

</body>

<%
rs.close();
stmt.close();
conn.close();
 %>


程序中把大括号分开写是什么原理,jsp编译后会知道那table中的代码块是在while循环中吗

------解决方案--------------------
程序中把大括号分开写是什么原理,?
如果她不分开,系统会将其当做是java代码,但那些标签是html呀,所以就会报错了

jsp编译后会知道那table中的代码块是在while循环中吗
当然知道了,因为有成对的<% 和%>,系统会把他们之间的代码当做是java代码

------解决方案--------------------
可以这么理解jsp省略了servlet里的out.print()。html标签就是被out.print出来的。<%%>就是告诉tomcat这里要开始写html了。

jsp其实是被转换成servlet来执行的,可以在Tomcat6.0\work\Catalina\localhost\对应的工程下找到生成的servlet。看一下其源代码就知道了。
------解决方案--------------------
你记到一点就是java代码要用<%%>括起来,而其他的html代码就要写在<%%>之外
<tr>
<td><%=rs.getInt("id") %></td>
<td><%=rs.getString("cont") %></td>
</tr>
上面的代码就要和java代码分离开来。发送请求时,jsp会转换成servlet,最终在service()方法里显示转换后的所有java代码,原来的java代码照写,而html代码则用out.write()语句输出
------解决方案--------------------
大括号不分开写怎么写?while循环里面夹杂着html代码,说明这段代码是循环输出表格的行的。

在web容器里面,是先解析jsp,把他解析成html代码之后返回给浏览器的,在JSP编译的时候JSP它不知道你生成出来的html代码是什么,生成完之后到浏览器上一看,你就知道了……