jsp中的盲区-面试可能会问到的东西

Posted 晴空万里

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jsp中的盲区-面试可能会问到的东西相关的知识,希望对你有一定的参考价值。

1、今天看到一个有趣的JSP题目。

<body>
    This is my JSP page. <br>
    <%
        int a = 10;
    %>
    
    <%
        out.print(a++);
    %>
    <%=a %>
    <%!
        int a = 100;
    %>

    <%
        out.print(a++);
     
    %>
  </body>

输出结果:10  11  11

有人可能会问最后一个输出为什么不是100

个人解释:  <%!
        int a = 100;
    %>     内的代码相当于全局变量。

   <%
        out.print(a++);
     
    %>

执行的是方法内部的代码。也就是执行局部变量的代码。所以输出 11

2、如果代码是这样的:

 

<body>
    This is my JSP page. <br>
    <%
    	int a = 10;
    %>
    
    <%
    	out.print(a++);
    %>
    <br/>
    <%=a %>
    <%!
    	int a = 100;
    
    %>

    <%
    	out.print(this.a++);
    %>
  </body>

 

 输出结果是这样的:10   11  100  最后一行会执行输出成员变量的参数。

 

3、请问方法fun1会执行么?代码如下

  <body>
    This is my JSP page. <br>
    <%
    	int a = 10;
    %>
    
    <%
    	out.print(a++);
    %>
    <br/>
    <%=a %>
    <%!
    	int a = 100;
    	public void fun1() {
    		System.out.println(a);
    	}
    %>

    <%
    	out.print(this.a++);
    %>
  </body>

 答案是不会执行。<%!  代码..... %> 内的方法类似于在类内的方法。需要调用才会执行。正确执行代码如下。

 

 

<body>
    This is my JSP page. <br>
    <%
    	int a = 10;
    %>
    
    <%
    	out.print(a++);
    %>
    <br/>
    <%=a %>
    <%!
    	int a = 100;
    	public void fun1() {
    		System.out.println(a);
    	}
    %>

    <%
    	out.print(this.a++);
    	fun1();
    %>
  </body>

 

























以上是关于jsp中的盲区-面试可能会问到的东西的主要内容,如果未能解决你的问题,请参考以下文章

Python中一些可能会问到的面试题

讲讲接口测试有可能会问到的面试题汇总

带你整理面试可能会问到的 聚簇索引和非聚簇索引

LightGBM,面试会问到的都在这了(附代码)!

面试会问到的基本算法

应聘阿里,字节跳动美团90%会问到的JVM面试题! 史上最全系列!