2.2变量和方法的声明
将<%! %>之间声明的变量称为JSP页面的成员变量。这些变量的内存空间知道服务器关闭才被释放、
<% ! %>之间声明的变量在整个JSP页面内都有效,与标记符号<%! %>所在的位置无关,但习惯将标记符号<%! %>写在Java程序片的前面。
在<!% %> 之间声明方法,该方法在整个JSP页面有效,但在该方法内定义的变量只在该方法内有效。
2.3java程序片
1,<% %>之间插入java程序片,一个JSP页面可以有多个Java程序片,这些程序片被JSP引擎按顺序执行。
2,在java程序片中声明的变量称为JSP页面的局部变量。
3,局部变量的作用范围与其声明的位置有关,java局部变量在JSP页面后继的所有Java程序片以及表达式中有效。
java程序片中操作的成员变量是各个线程共享的变量,任何一个线程对JSP页面成员变量操作的结果,都会影响到其他线程。
java程序片中可以出现方法调用语句,该方法必须是JSP页面的方法(<%! %>)
运行在不同线程中的java程序片的局部变量互不干扰,即一个用户改变java程序片的局部变量不会影响到另一个用户使用java程序片的局部变量。
2.4表达式
可以在<% = %> 之间插入一个表达式。
特别注意:<%= %> %和= 之间没有空格,表达式的值由服务器负责计算,并将计算结果以字符串形式发送到用户端显示。如果表达式无法求值,Tomcat引擎将给出编译错误。
2.5JSP中的注释
1.HTML注释:<!-- -->之间插入注释;
2.JSP注释:<%-- --%>:之间插入注释内容;
2.6JSP指令标记
page指令:用来定义整个jsp页面的一些属性和这些属性的值。
page指令对整个页面有效,与其书写的位置无关,但习惯上把page指令写在jsp页面的最前面。
page指令的格式:<% @page 属性1=“属性1的值” 属性2=“属性2的值” ......%>
属性值需要用单引号或双引号括起来,如果为一个属性指定多个属性值,属性值之间用逗号分隔。
可以用page指定多个属性的值:<% @page 属性1=“属性1的值” 属性2=“属性2的值” ......%>
也可以用多个page指令指定多个属性值:<% @page 属性1=“属性1的值” %>
<% @page 属性2=“属性2的值” %>
在一个JSP页面中,可以使用多个page指令来指定属性及其值,可以使用多个page指令import属性几个值,但其他属性只能使用page指令指定一个值。
1,language属性:定义jsp页面使用的脚本语言,该属性的值目前只能取java
2.import属性:为jsp页面引入java核心包中的类,jsp页面默认import属性有以下值:"java.lang.*","java.servlet.*","javax.servlet.jsp.*","javax.servlet.http.*"
3.contentTyep属性:确定JSP页面响应的MIME类和JSP页面字符编码。如:<% @page contentType="text/html" ;charset="GB2312"%>
JSP页面使用page指令只能为contentType指定一个值,不允许两次使用page指令给contentType属性指定不同的属性值。
如果用户浏览器不支持某种MIME类型,那么用户的浏览器就无法用相应的手段处理所接受到的信息。
4.session属性:是否需要设置内置的seccion对象。
session属性的属性值可以是true或false;
5.buffer属性:用来指定out设置的缓冲区的大小或不使用缓冲区。
<%@ buffer="24kb" %>
6.autoFlush属性:指定out的缓冲区被填满时,缓冲区是否自动刷新。autoFlush可以取值true或false.
7,isThreadSafe属性:
用来设置JSP页面是否可多线程访问。当值为true时,JSP页面能同时响应多个用户的请求;当值为false时,同一时刻只能响应一个用户的请求其他用户需要排队等待。
2.6.2include指令标记
如果需要在JSP页面的某处整体插入一个文件,就可以考虑使用这个指令标记。该指令标记语法:<%@ include file ="文件的URL"%>
作用:在JSP页面出现该指令的位置处,静态插入一个文件。被该指令插入的文件必须是可访问和可使用的,
2.7JSP动作标记
动作标记是一种特殊的标记,它影响JSP运行时的功能。
include动作标记语法格式为:
<jsp :include page="文件的URL"/>
或者<jsp :include page="文件的URL">
param子标记
</jsp :include>
注意:当include动作标记不需要param子标记时,必须使用上诉第一种形式。
书写include动作标记<jsp:include....../>注意jsp,:,include三者之间不要有空格。
2.7.2param动作标记
param标记以“名字——值”对的形式为其他标记提供附加信息,这个标记与jsp:include,jsp:forward,jsp:plugin标记一起使用。
param动作标记:<jsp:param name="属性的名字" vlaue="属性的值"/>
param标记不能独立使用,需要jsp:include,jsp:forward,jsp:plugin
当该标记与jsp:inclue标记一起使用时,可以使用param标记中的值传递到include指令要加载到文件中去。
也就是说,JSP页面在使用include动作标记加载文件是,可以动态地向所加载文件传递数据。
2.7.3 forward动作标记
forward动作标记的格式:
<jsp:forward page="要转向的页面"/>
或者<jsp:forward page="要转向的页面">
param子标记
<jsp : forward>
作用:从该指令处停止当前页面的继续执行,转向执行该指令中page属性指定的URL页面,但是在浏览器的地址栏中并不显示forward指令所转向的JSP页面的地址表示,浏览器的地址栏仍然显示forward转向前的JSP页面的URL表示。
不需要子标签时,使用上面的第一种格式表示。
forward动作标记指定的所转向的JSP文件可以使用Tomcat服务器提供的request内置对象获取param子标记中的name属性的值。
2.7.4plugin动作标记
在页面中使用普通的HTML标记<applet......></applet>可以让用户下载运行一个java applet小程序,但并不是所有用户的浏览器都支持java applet小程序。
如果java applet小程序使用了JDK1.2以后的类,那么有些浏览器不支持这个java小应用程序,而使用plugin动作标记可以保证用户能执行小应用程序。
2.7.5useBean动作标记
用HTML完成jsp页面的静态部分,用javaBeam完成动态部分
总结:
1.jsp页面的构成:html标记,jsp标记,变量,方法的声明,java程序片 和java表达式。
2.JSP引擎把jsp页面中的HTML标记给用户的浏览器执行,而jsp引擎负责处理jsp标记,变量和方法声明;
3.jsp引擎负责运行java程序片,计算java表达式,并将需要显示的结果发送给用户的浏览器。