<%@ page contentType="text/html;charset=GB2312" %>
<HTML>
<BODY>
<%! 
     int number=0;
    synchronized void countPeople()
   {
     number++;
   }
%>
<%
    
     countPeople();
%>
这是jsp的程序 我想之都他的执行顺序,到底是哪段先执行?请赐教,感谢

解决方案 »

  1.   

    <%@ page contentType="text/html;charset=GB2312" %> 
    <HTML> 
    <BODY> 
    <%! 
        int number=0;   //1
        synchronized void countPeople() 
      { 
        number++; 
      } 
    %> 
    <%     
        countPeople();   //2
    %> 
      

  2.   

    <%@ page contentType="text/html;charset=GB2312" %> 
    <HTML> 
    <BODY> 
    <%! 
        int number=0; 
        synchronized void countPeople() 
      { 
        number++; 
        System.out.print("1");
      } 
    %> 
    <% 
        
        countPeople(); 
        System.out.print("2");
    %> 
    可以加 System.out.print  试试就知道了 应该是先下面后上面
      

  3.   

    那么synchronized void countPeople() 是谁去调用的呢?
      

  4.   

    你可以用程序跑测试下:<%@ page contentType="text/html;charset=GB2312" %> 
    <HTML> 
    <BODY> 
    <%! 
        int number=0; 
        synchronized void countPeople() 
      { 
        number++; 
        System.out.print("number1="+number); 
      } 
    %> 
    <% 
        
        countPeople(); 
       System.out.print("number2="+number); 
    %> 
    结果输出:number1=1 number2=1就是上面只是声明 每人调用它是不会主动执行的!!!
      

  5.   

    没有调用...只是定义.
    查看下该JSP源码就清楚了.
    <%!  在此标签定义的变量为Servlet的属性
         在此标签定义的方法为Servlet的自定义方法
     %>
    <%  该标签内的代码在Servlet的XXXservice方法内执行 %>
      

  6.   

    定义代码为什么会写再上面,按照正常思维应该是再底下啊<% countPeople();
    %> <%!
    synchronized void countPeople() 

    number++; 

    %>这样的思路是不是也可以? 
      

  7.   

    看一下编译后的servlet估计会一目了然
    个人觉得应该是声明 先执行<%!%>
      

  8.   

    100%先执行<%!     %>,后执行<%    %>
    放到哪里到一样..
    主要是标签的执行顺序.不管它在页面的位置.