为了更好的理解JSP,我从网上收集了有关JSP脚本元素的相关资料如下:
脚本元素:将Java代码插入到与jsp页面对应的servlet(n.小服务程序)中
JSP脚本元素的3种形式:1.表达式,2.Scriptlet(n.小脚本),3.声明。
------------------------------------------------------------------------------------------
1.JSP表达式标准语法:
<%=JAVA表达式 %> 如: <%=a+b%> <%-- 输出a+b的值 --%>
JSP表达式xml语法:
<jsp:expression>JAVA表达式</jsp:expression> 如: <jsp:expression>a+b</jsp:expression>
2.JSP表达式后面不加分号;
3.操作后的结果将转换为字符串,插入到当前servlet(n.小脚本)的输入流中
4.JSP表达式将生成Servlet(n.小脚本)的print语句,HTML转换为print语句时,使用双引号将文本引起来。
JSP表达式转换为没有双引号的print语句。
5.这些语句都会放入_jspService方法中,无论doGet还是doPost都调用该_jspService方法。
------------------------------------------------------------------------------------------
Scriptlet(脚本段): 将Java代码插入到servlet(n.小脚本)的_jspService方法中。
1,Scriptlet标准语法:
<%java代码 %>
Scriptlet的xml语法格式:
<jsp:scriptlet> scriptlet </jsp:scriptlet>
2,scriptlet语句后面要加分号。
3,Scriptlet可以访问到表达式能够访问的所有自动定义变量。
4,Scriptlet代码会按出现的次序插入到_jspService方法中。
5,在Scriptlet中声明的变量都转译为_jspService方法中的本地变量。所以变量是线程安全的。
------------------------------------------------------------------------------------------
声明(declaration):将方法或字段定义插入到servlet类的主定义体中(_jspService方法除外)。
1,声明的语法:
<%!可在此处进行变量、类、方法的声明%>
声明的xml语法格式:
<jsp:declaration>可在此处进行变量、类、方法的声明</jsp:declaration>
2,声明只在当前JSP页面中有效。
3,声明不产生输出。
4,不要使用JSP声明覆盖Servlet的(service方法)。
5,可以使用JSP声明覆盖jspInit或jspDestroy方法来初始化和销毁JSP页面,而不要直接使用init和destroy方法。
注意:这里是jspInit和jspDestroy而不是_jspInit和_jspDestroy方法。
JSP容器会在调用_jspInit和_jspDestroy方法后调用自定义的jspInit和jspDestroy方法。
------------------------------------------------------------------------------------------
表达式,Scriptlet,声明的比较
语法:
Scriptlet 和 声明都是java语句,而JSP表达式只是表达式。一个完整的语句需要分号表示结束,而表达式不需要。
Java代码插入位置:
表达式: _jspService方法的输出流的print方法中;
Scriptlet : _jspService方法体中对应的位置。
声明: servlet类的主定义体中(_jspService方法除外);
变量访问范围:
表达式: 可以访问serlvet类中的类的域和_jspService方法中的局部变量。
Scriptlet: 同表达式。
声明: 不能访问声明外的局部变量,比如_jspService方法中的局部变量(隐含对象)。
线程安全性:
表达式和Scriptlet是线程安全的。
声明是线程不安全的。
------------------------------------------------------------------------------------------
JSP脚本元素...
本文转载:CSDN博客