3.2、declaration(声明)
在jsp文件中使用<%! %>,出现在该符号内的java程序翻译之后会被存放在和Servlet的service方法并列的位置上。
所以可以在该符号内声明静态变量、静态方法、静态代码块、实例代码块、实例变量、实例方法,大家就当做在类体中直接编码就可以,所以声明的变量、方法都是可以使用访问控制权限修饰符修饰的。
3.2.1、声明的语法格式:
<%!
常量
静态变量
实例变量
静态代码块
实例代码块
构造函数
实例方法
静态方法
%>
3.2.2、声明语法中的java代码会自动被翻译到service方法之外
3.2.3、service方法之外,类体之内可以编写的代码全部都可以编写到声明语法当中。
3.2.4、声明的语法中的java代码没有先后顺序
3.2.5、在JSP中的声明语法当中一般情况下编写代码较少,因为我们很少在service方法之外编写代码,90%以上的代码都是编写在service方法内部的。另外需要注意,在声明语法格式当中我们是不建议使用实例变量的,因为实例变量存在线程安全问题。
————————————————
JSP演示文件:
<%
m1();
%>
<%!
static{
System.out.println("class loader!");
}
public static void m1(){
System.out.println("static m1 method invoke!");
}
%>
<html>
<head>
<%
m1();
%>
<title>declaration</title>
<%
m1();
%>
</head>
<%
m2();
%>
<body>
<%!
public void m2(){
System.out.println("m2 method invoke!");
}
%>
</body>
<%
System.out.println("username = " + username);
%>
</html>
<%!
private String username = "lili";
%>