JSP技术类似于ASP和PHP技术,其实就是在HTML文档中嵌入脚本小程序和JSP标记等元素,从而形成JSP文档。JSP本质上就是Servlet,当JSP第一次被请求的时候,Web服务器上的JSP容器会将其转化为相应的Servlet文件,然后再编译成为Servlet类文件,并且被装载和实例化。此后,每次对jsp的请求都将通过调用已实例化的Servlet对象中的方法来产生相应,所以第一次访问JSP页面会非常慢,而以后就很快。
JSP基本语法
声明
JSP声明用于定义JSP程序所要用到的变量、方法、和类,声明方式与java相同,格式为:
<%! 变量,方法或类的声明 %>
在JSP声明中声明的变量、方法、类在整个JSP页面中都有效。
表达式
JSP表达式的值由服务器负责计算,并将计算结果自动转换为字符串并发送到客户端显示
语法格式为:
<%= 表达式 %>
表达式必须有返回值,且末尾不能加分号。
程序块(脚本小程序)
脚本小程序是在 “<%” 和 “%>” 之间插入的 java 程序段,语法格式为:
<% java代码块 %>
指令标记
JSP指令标记是专门为JSP引擎设计的,仅用于告知JSP引擎如何处理JSP页面,而不会产生任何可见的输出,其语法格式如下:
<%@ 指令名 属性=“值” 属性=“值” ... %>
JSP指令有三种,即为page指令、include指令、taglib指令。
page指令
page指令用于设置整个页面的相关属性和功能,其语法格式如下:
<%@ page 属性=“值” 属性=“值” ...>
属性 说明 language 声明脚本语言的种类,目前只能用“java” import 指明需要导入的java包,格式为import=”{package.class|package.*},……” contentType 设置MIME类型和字符编码方式,格式为contentType=”text/html;charset=UTF-8” pageEncoding 设置字符集 extends 指明JSP编译时需要加入的java class的全名 session 设定客户是否需要HTTP Session,若为false,则不能使用定义了scope=session的jsp:usebean标签 buffer 指定buffer的大小 autoFlush 指定buffer溢出时是否需要强制输出 isTreadSafe 设置JSP页面是否能够多线程使用 info 指定执行JSP时会加入其中的文本 errorPage 设置用于处理异常事件的JSP文件 isErrorPage 设置当前页面是否为出错页面 include指令
用于设置JSP页面中静态包含一个文件,语法格式为:
<%@ include file="被包含文件的路径" %>
静态包含:指JSP页面和被包含的文件先合并成为一个新的JSP页面,然后JSP引擎将这个新的JSP页面转译成为Java类文件,但必须保证合并而成的页面要符合JSP的语法规范。
taglib指令
用于引用标签库并指定相应的标记前缀,其语法格式为:
<@ taglib uri="标记库的路径" prefix="相应的标记前缀">
该taglib指令用于引用Struts2的标记库。
动作标记
共有7个动作标记。
param动作
param动作标签用于标记用于以键值对的形式为其他标记提供附加信息,必须与include、forward或plugin等动作标记一起使用,其语法格式如下:
< jsp:param name="parameterName" value="{ parameterValue | <%= 表达式 %>} " />
includ动作
includ动作标签用于告知JSP页面动态加载一个文件,即在运行JSP页面时才将文件引入,具体语法如下:
1
2
3
4
5
6
7<!-- 不带param子标记: -->
< jsp:include page="指定动态加载的文件" flush="true" />
<!-- 带param子标记 -->
< jsp:include page="指定动态加载的文件" flush="true" >
< jsp:param name="parameterName" value="parameterValue" />
</jsp:include>include动作与include指令
includ动作是在JSP页面运行时动态地生成总页面,而includ指令则是先将JSP页面与它所包含的页面编译成一个静态总页面。
forward动作
forward动作标签用于跳转至指定界面
<!-- 不带param子标签 -->
< jsp:forward page=" 指定页面路径 | <% 表达式 %> " />
<!-- 不带param子标签 -->
< jsp:forward page="指定页面路径 | <% 表达式 %>" >
< jsp:param name="parameterName" value="parameterValue" />
</jsp:forward>plugin动作
jsp:plugin动作元素用来在JSP中嵌入Java插件,比如Applet。jsp:plugin将会根据浏览器的版本替换成标签或者标签。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15<jsp:plugin
type="bean | applet"
name="Applet名称"
code="java类名"
codebase="Java类所在目录"
align="对齐方式"
height="高度"
width="宽度"
hspace="水平间距"
vspace="垂直间距"
archive="预先加载的类列表"
jreversion="JRE版本"
iepluginurl="URL"
nspluginurl="URL">
</jsp:plugin>useBean、getProperty与setProperty动作
注释
JSP对象
JSP内置对象是在JSP运行环境中已预定义好的对象,可在JSP脚本部分直接使用。内置对象共有9个。
out对象
out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。
对输出缓存区和输出流进行操做。
request对象
request对象封装了客户端请求的所有信息,主要用于接受通过HTTP协议传送到服务器的数据。request对象的作用域为一次请求。
request对象是javax.servlet.http.HttpServletRequest的实例 ,具有request作用域。
response对象
response对象 是javax.servlet.http.HttpServletResponse类的实例具有page作用域。response对象为响应对象,用于对客户端请求进行动态响应,可向客户端发送数据,在实际应用中,response对象主要用于将JSP数据处理后的结果返回到客户端。
session对象
session对象为会话对象,该对象封装了当前用户会话的有关信息。借助于session对象,可对各个客户端请求期间的会话进行跟踪。
session从客户端打开第一个JSP页面时就被创建,直至客户端关闭浏览器,session才会被摧毁。而从客户端打开第一个JSP页面到客户端关闭浏览器这个过程称为一次会话。
application对象
application对象为应用对象,负责提供Web应用程序在服务器运行期间的某些全局性信息,与session不同的是,application对象针对Web应用程序的所有用户,并由所有用户共享。
该对象代表web应用本身,整个web应用共享一个application对象,该对象主要用于在多个JSP页面或者Servlet之间共享变量。application通过setAttribute()方法将一个值放入某个属性,该属性的值对整个Web 应用有效,因此Web 应用的每个JSP 页面或Servlet都可以访问该属性,访问属性的方法为getAttribute 。
exception对象
exception对象为异常对象,其中封装了从某个JSP页面中所抛出的异常信息,常用于处理JSP页面在执行时所发生的错误和异常。exception对象是javax.lang.Throwable类的实例,具有page作用域。如果一个页面要使用exception对象,就必须将该页面page指令的isErrorPage属性值设置为true。
page对象
page对象为页面对象,是页面实例的引用,代表JSP页面本身,即JSP页面被转译后的Servlet。
page对象是java.lang.Object类的实例,具有page作用域.
config对象
config对象是配置对象,主要用于获取Servlet或者JSP引擎的初始化参数。config对象是javax.servlet.ServletConfig类的实例,具有page作用域,config对象包含了初始化参数以及一些实用方法,可为使用web.xml文件的服务器程序与JSP页面在其环境中设置初始化参数。
pageContext对象
pageContext对象是JSP中很重要的一个内置对象,不过在一般的JSP程序中,很少用到它。它是javax.servlet.jsp.PageContext类的实例对象,可以使用PageContext类的方法。实际上,pageContext对象提供了对JSP页面所有的对象及命名空间的访问。可实现对页面内所有对象的访问。