用 <%! String str="";%> 定义的 str 与用 <% String str="";%> 定义的有何不同?

解决方案 »

  1.   

    <%!%>是用来声明变量的 里面不可以写其他的流程语句了 
    <%%>就是流程语句的scriptlet
      

  2.   

    在<%! %>内的变量和方法是一个类内的变量或方法,也就是成员变量和成员方法。
    在<% %>内的变量是一个方法的变量也就是局部变量。
    成员变量会被多个对象共享,而局部变量单独对象访问。
    简单的说就是
    <%! %>定义的变量在其他<% %>中可以操作改变值
    <% %>定义的变量只能在他的块里面,其他块操作值不变
      

  3.   

     <%! String str="";%>是全局变量
      

  4.   


    在jsp中,<%! String a%>相当于是给servlet定义了一个属性。
    而<%String a%>相当于在servlet中的service()方法中定义了一个变量。
      

  5.   

    对于这种问题,楼主已经纠结过一次了。
    http://bbs.csdn.net/topics/390301153
    我的建议:跟上次一样,看JSP对应的java文件就明白了。