今天看了一段代码发现一个问题在一个JSP 里面<%!
String a="";
%>和
<%
String a="";
%>有什么区别吗?

解决方案 »

  1.   

    <%! 
    这个定义,
    相当于
    class A{
    String a;
    }<%
    是程序变量
    相当于
    class A{
    void jsp() {
    String a = "ass";
    }
    }
      

  2.   

    我觉得你自己查看一下编译好的jsp文件了解的会更透彻一些,jsp文件中的java代码其实就是相当于一个Servlet代码,<%! String a%>相当于是给servlet定义了一个属性,就像2楼说的一样,<%String a%>相当于在servlet中的service()方法中定义了一个变量。
      

  3.   

    <%!
    String a="";
    %>转为java文件中是定义一个全局变量。
    <%
    String a="";
    %>
    转为java文件是写在方法中的局部变量。
      

  4.   

     通过观察代码后我们发现,原先声明在<%! %>内的变量和方法是一个类内的变量和方法也就是成员变量和成员方法。声明在<%%>内的变量是一个方法的变量也就是局部变量。
      

  5.   

    http://www.cnblogs.com/zengmiaogen/archive/2012/04/15/2450414.html