JSP脚本元素
JSP脚本元素是JSP代码中使用最频繁的元素,特别是Scriptlets,在早期的JSP代码中它占有主导地位。脚本元素把JSP的所有一切都集中在一起,它通常是用Java写的脚本代码。它允许变量声明和函数声明(编译成Servlet时,它是Servlet的属性和操作),可以包含任意的Java脚本代码和对表达式求值。
1) 声明(Declaration)
在JSP里,声明是一段Java代码,它用来定义在产生的类文件中的类的属性和方法。声明后的变量和方法可以在JSP的任意地方使用。可以声明方法,也可以声明变量。声明格式如下:
<%! Vaiable declaration
method declaration(paramType param,....)%>
声明中一般把类中要使用的方法或者常数封装起来。通过声明,可以使代码变得整洁。例如:
<%@ page language="java" contentType="text/html;charset=gb2312" %>
<%!
String trans(String chi){
String result=null;
byte temp[];
try{
temp=chi.getBytes("gb2312");
result=new String(temp);
}
catch(java.io.UnsupportedEncodingException e){
System.out.println(e.toString());
}
return result;
}
%>
<%!
int count=10;
%>
<%
String source="你好!";
for(int i=0;i<count;i++){
out.println(source);
}
%>
在上面的例子中,声明了一个trans方法,这个方法把字符集重新编码成GB2312。在中文的JSP开发中,经常遇到中文显示的问题,可以通过这种方式来解决。也可以把这个声明做成一个专门的小JSP,如include.inc。当其他页面需要使用时,include指令就把它包含进来,例如:
<%@ include file="include.inc"%>
表达式(Expression)
表达式在JSP请求处理阶段计算它的值,所得的结果转换字符串并与模板数据组合在一起。表达式在页面的位置,也就是该表达式计算结果所处的位置。表达式的语法是:
<%="Hello World"%>
在编译成Servlet后,变成
out.write(String.valueOf("hello World"));
相当于JSP页面中的:
out.println("hello World");
通过使用表达式,使得程序变得简洁。
例如:
<%@ page contentType="text/html;charset=gb2312"%>
<%! private int demoValue=56;
public int getValue()
.........
%>
Scriptlets
Scriptlets是JSP中页面处理请求时执行的Java代码,Scriptlets包含在“<%“ 和”%>”之间。它可以产生输出,并将输出发到客户的输出流里,也可以使一些流程控制语句。当然它中间还可以包含一些合法的Java注释。
在被编译的类里,多个Scriptlets可以按住JSP中出现的顺序合并成一个Scriptlets。Scriptlets像其他的Java代码或方法一样,可以修改在它内部的对象作为防腐引用的结果。在一段Scriptlets中创建的对象,可以再另一个Scriptlets中使用。在编译后的Servlet中,Scriptlets被包含在Servlet的Service方法中。Scriptlets语法:
<%java code statements%>
例如:
<%@ page contentType="text/html;charset=gb2312"%>
<html>
<body>Scriptlets实例<br>
<%
int times=10;
%>
<hr>使用Scriptlets定义参数和不定义参数<br>
<%
for(int i=0;i<times;i++){
out.println("<font color=ee"+i+i+i+i">");
out.println(times+"<br></font>");
}
%>
</body>
</html>