日期:2014-05-18  浏览次数:20696 次

jsp <% %>与<%! %>的区别
如题,不知这连个符号有什么区别,请大家指点一下!

------解决方案--------------------
<%这个里面写java代码%>
<%!--这个里面是JSP的注释--%>
<%! var可设置该页面的全局变量%>

按照印象写的^^自己考证下哦~
------解决方案--------------------
一般 <%! %> 里放函数
------解决方案--------------------
<%%> 叫代码片段,用户装java代码的. <%!%> 叫声明,用于声明函数或变量的。相当于声明类的成员。
------解决方案--------------------
jsp写的代码,经过Tomcat或别的什么容器编译后,最终是以_youjspname_jsp.java形式出现的,代码基本样式如下:
public final class _youjspname_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent {

int n = 0;
private static java.util.Vector _jspx_dependants;

public java.util.List getDependants() {
return _jspx_dependants;
}

public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, ServletException {
int m = 0;
...
}
}
其中_jspService()是jsp的主体~~

在上面的代码中,有两个变量,全局变量n和局部变量m,其中n就是用 <%!int n = 0;%> 定义的,m是用 <%int m = 0;%> 定义的,如果你在 <%!%> 里面定义一个方法,那么这个方法将是class _youjspname_jsp的一个方法; <%%> 是不允许定义方法的,原因很明显:方法里面不允许定义方法!


------解决方案--------------------
<%%> 是jspscript代码段,在由jsp转换成Servlet后 <%%> 中的代码是放在serive方法中,相当与
doGet()和doPost()方法
<%!%> 是jsp声明,用来定义属性和方法的,在由jsp转换成Servlet后 <%!%> 中的代码是放serive
方法之外的
<%=%> 是jsp表达式,在由jsp转换成Servlet后 <%=%> 中的代码是放在,service方法中的
out.println( "这里 ")中的其中的内容将直接输出到浏览器的页面中