区别在于,当jsp被编译成class时:
<%!String aaa="111";%>编译成类属性
<%String aaa="111";%>编译成普通变量

解决方案 »

  1.   

    <%!String aaa="111";%>编译成永久变量可以在别的地方调用
    <%String aaa="111";%>编译成普通变量
      

  2.   

    <%!...%>是声明,<%...%>是表达式
      

  3.   

    <%!...%>是公共变量
    <%String aaa="111";%>是私有变量(即被封装)只在<%%>内有效
      

  4.   

    谢谢各位了
    那public class test{
       public test(){
    }
    ………………
    }
    有什么隐处呢??
      

  5.   

    public test(){
    }

    public class test{
     }类的构造函数而已!
      

  6.   

    其实看看jsp先被编译成的servlet的源代码,就知道。
      

  7.   

    不只是在<% %>中有效吧
    我的文件里有这样都一部分,都可以啊
    <body>
    <%
    ResultSet result;
    //JDBC执行部分
    //其它代码
    %>
    <script………></script>
    <form………>
       <table>
         <!--其它代码-->
           <%
              result.beforeFirst();
              while(result.next())
                {tmp=result.getString("userID");
                 //其它代码
                 }
        
    这样子,result还有好几个变量都是在前面定用赋值,但在后面引用都是正确的呢?