JSP页面不按代码顺序显示

首先附上JSP代码

<%@ page contentType="text/html; charset=utf-8" %>
<%@page import="java.sql.*"  %>
<html><body>
    <p>标记点1</p>

    <%
        Connection con;
        Statement sql;
        ResultSet rs;

        try{
            Class.forName("com.mysql.jdbc.Driver");
        }catch(Exception e){
            out.print("没有MySQL驱动");
        }

        String url="jdbc:mysql://127.0.0.1/warehouse";
        String user="root";
        String password="";
        con=DriverManager.getConnection(url, user, password);

        sql=con.createStatement();
        rs=sql.executeQuery("select * from product;");


        out.print("<table border=2>");
            out.print("<tr>");
                out.print("<th width=100>产品号</th>");
                out.print("<th width=100>名称</th>");
                out.print("<th width=100>生产日期</th>");
                out.print("<th width=100>价格</th>");
            out.print("</tr>");

            while(rs.next()){
                out.print("<tr>");
                    out.print("<td width=100>"+rs.getString(1)+"</td>");
                    out.print("<td width=100>"+rs.getString(2)+"</td>");
                    out.print("<td width=100>"+rs.getString(3)+"</td>");
                    out.print("<td width=100>"+rs.getString(4)+"</td>");
                out.print("</tr>");
            }
        rs.close();


        out.print("</tale>");

        out.print("<p>标记点2</p>");

        rs=sql.executeQuery("select * from students;");

        out.print("<table border=2>");
            out.print("<tr>");
                out.print("<th width=100>学号</th>");
                out.print("<th width=100>姓名</th>");
                out.print("<th width=100>专业代号</th>");
                out.print("<th width=100>性别</th>");
            out.print("</tr>");

            while(rs.next()){
                out.print("<tr>");
                    out.print("<td width=100>"+rs.getString(1)+"</td>");
                    out.print("<td width=100>"+rs.getString(2)+"</td>");
                    out.print("<td width=100>"+rs.getString(3)+"</td>");
                    out.print("<td width=100>"+rs.getString(4)+"</td>");
                out.print("</tr>");
            }
        rs.close();

        out.print("</tale>");   
     %>

    <p>标记点3</p>
</body></html>

编译运行后好奇怪啊。页面显示的顺序不对。
JSP结果显示
本应是标记点2在两个表格**中间**显示,标记点3第二个表格**下方**显示。为什么会显示这样呢?
我的代码有问题吗?有问题的话,哪里错了,如何改正?没问题的话,可以解释下为什么吗?谢谢。

你table的闭合标签错误

</table>你写的是</tale>

你直接把

写在后面试下,JSP肯定打印输出可能不会等前面查询完

P写在table引号后面

out.print(""); 写错了哦

< /tale> 这玩意。 应该是< /table>的。 空格去掉。