中的!是什么意思

时间:2022-06-26 16:39:18
当浏览器第二次访问以下jsp网页时的输出结果是  a=2 b=1

<%!int a = 0;%>
<%
int b = 0;
a++;
b++;
%>
a:<%=a%><br>
b:<%=b%>



 

11 个解决方案

#1


<%!    %> 声明语句 <%! Date myD = new Date(); %>
<%     %> 代码语句 <% for(int i=0;i<10;i++) %>
<%@    %> 指令语句 <%@ page import="java.util.*" %>

#2


声明变量

#3


相当一个全局常量

#4


<%!int a = 0;%> //声明的变量a在是成员变量,在此处生命的方法或变量不属于service()方法体
<%int b =0 %>//此处声明的变量在service方法中

//具体区别可以写一个测试的jsp,运行tomcat,到work子目录下查看对应生成的java文件就知道了

#5


引用 1 楼  的回复:
<%! %> 声明语句 <%! Date myD = new Date(); %>
<% %> 代码语句 <% for(int i=0;i<10;i++) %>
<%@ %> 指令语句 <%@ page import="java.util.*" %>


高见

#6


引用 1 楼  的回复:
<%!    %> 声明语句 <%! Date myD = new Date(); %>
<%     %> 代码语句 <% for(int i=0;i<10;i++) %>
<%@    %> 指令语句 <%@ page import="java.util.*" %>


  看看这个

#7


<%!%>
这是一个整体符号,表示里面的内容是声名语句

#8


jsp请求会被翻译成servlet,编后执行,比如tomcat可以在work文件下找到翻译后的源码
一个servlet在服务器中只有一个对应实例
而servlet的service方法(doGet,doPost)是线程安全的,应用服务器给每一个客户端(线程)分配不同的内存区域(你可以理解为service方法里的局部变量)实现请求处理,而jsp中<%!int a = 0;%>
相当于是在servlet里声明了实例变量,每个客户端都会访问这个变量,所以你每次访问的都是同一个a,它是线程不安全的。

#9


引用 4 楼  的回复:
<%!int a = 0;%> //声明的变量a在是成员变量,在此处生命的方法或变量不属于service()方法体
<%int b =0 %>//此处声明的变量在service方法中

//具体区别可以写一个测试的jsp,运行tomcat,到work子目录下查看对应生成的java文件就知道了

+1

#10


该回复于2012-10-29 11:03:24被版主删除

#11


楼上都正解

#1


<%!    %> 声明语句 <%! Date myD = new Date(); %>
<%     %> 代码语句 <% for(int i=0;i<10;i++) %>
<%@    %> 指令语句 <%@ page import="java.util.*" %>

#2


声明变量

#3


相当一个全局常量

#4


<%!int a = 0;%> //声明的变量a在是成员变量,在此处生命的方法或变量不属于service()方法体
<%int b =0 %>//此处声明的变量在service方法中

//具体区别可以写一个测试的jsp,运行tomcat,到work子目录下查看对应生成的java文件就知道了

#5


引用 1 楼  的回复:
<%! %> 声明语句 <%! Date myD = new Date(); %>
<% %> 代码语句 <% for(int i=0;i<10;i++) %>
<%@ %> 指令语句 <%@ page import="java.util.*" %>


高见

#6


引用 1 楼  的回复:
<%!    %> 声明语句 <%! Date myD = new Date(); %>
<%     %> 代码语句 <% for(int i=0;i<10;i++) %>
<%@    %> 指令语句 <%@ page import="java.util.*" %>


  看看这个

#7


<%!%>
这是一个整体符号,表示里面的内容是声名语句

#8


jsp请求会被翻译成servlet,编后执行,比如tomcat可以在work文件下找到翻译后的源码
一个servlet在服务器中只有一个对应实例
而servlet的service方法(doGet,doPost)是线程安全的,应用服务器给每一个客户端(线程)分配不同的内存区域(你可以理解为service方法里的局部变量)实现请求处理,而jsp中<%!int a = 0;%>
相当于是在servlet里声明了实例变量,每个客户端都会访问这个变量,所以你每次访问的都是同一个a,它是线程不安全的。

#9


引用 4 楼  的回复:
<%!int a = 0;%> //声明的变量a在是成员变量,在此处生命的方法或变量不属于service()方法体
<%int b =0 %>//此处声明的变量在service方法中

//具体区别可以写一个测试的jsp,运行tomcat,到work子目录下查看对应生成的java文件就知道了

+1

#10


该回复于2012-10-29 11:03:24被版主删除

#11


楼上都正解