JSP 是使用Java 开发基于 Web 的应用程序不可或缺的部分
JSP 可结合其他Java 组件一起使用
“编写一次,随处运行”
高品质工具支持
组件和标记库的重用
动态内容与静态内容的分离
对脚本和动作的支持
多层企业应用程序体系结构的 Web 访问层
表示与实现的分离
将文档字符串添加到 JSP 页面
类型:
HTML 注释
隐藏注释
HTML 注释
类似于在 HTML 中使用的那些注释
<!-- 注释 -->
可在其中包括动态内容
只能通过查看原始 JSP 文件查看
<%-- 注释 --%>
JSP 容器忽略此注释的主体
JSP指令
attribute-name=attribute-value
attribute-name=attribute-value …
%>
include 指令
page 指令
taglib 指令
include 指令
语法:
<%@ include file="localURL" %>
出现在一个 JSP 页面中的 include 指令的数量不受限制
page 指令将页面特定的信息传递给 JSP 引擎
语法:
<@ page attribute = "value1"
attribute2 = "value2" attribute3 =… %>
info
language
contentType
extends
import
session
buffer
autoFlush
isThreadSafe
errorPage
isErrorPage
通知 JSP 容器,页面依赖于自定义标记库
标记库是扩展 JSP 的功能的自定义标记的集合
语法:
<%@ taglib uri =
"tagLibraryURI" prefix = "tagPrefix" %>
JSP脚本元素
声明
代码段
表达式
用于定义特定于 JSP 页面的变量和方法
语法:<%! declaration %>
声明的类型:
变量声明
方法声明
定义为声明的变量成了 JSP 页面被转换和编译到的 servlet 类的实例变量
语法:
<%!private int x=0, y=0; private String
units = "ft"; %>
定义的方法将编译成的 Servlet 类的方法
可以由页面上所有脚本元素访问
if (x == 0 )
return 1 ;
else
return x * fact (x-1) ;
} %>
包含任何语言表达式
语法: <%= expression %>
不以分号结束
用于输出单个变量或某个计算的结果
<%= Math.PI %>
<% 字符串名称 = null;
if(request.getParameter(“name”)==null) { %>
表达式可以包含任何语言表达式,并不以分号结束
代码段中,如果语言要求语句以分号结束,则必须提供分号
输入/输出对象
作用域通信和控制对象
Servlet 相关对象
错误处理
JSP 机制自动创建的 Java 类实例
与 Servlet 环境交互
功能:
从客户端获得数据
向客户端发回数据
控制传输数据的缓冲
输入/输出对象
作用域通信和控制对象
Servlet 相关对象
错误处理
输入/输出对象 :
request 对象
response 对象
out 对象
request 对象
表示 HTTP 请求
是实现 javax.servlet.HttpServletRequest 接口的类的一个实例
重要方法:
String getParameter (name)
String getHeader (name)
response 对象
是实现 javax.servlet.HttpServletResponse 接口的类的一个实例
重要方法:
void setContentType (type)
void sendRedirect (url)
out 对象
javax.servlet.jsp.JspWriter 类的一个实例
重要方法:
print()
println()
session 对象
application 对象
pageContext 对象
session 对象
在访问Web 站点时在多个页面间共享信息
是 javax.servlet.http.HttpSession 类的一个实例
存储有关会话的属性
重要方法:
String getId ()
void invalidate ()
application 对象
存储有关文档运行环境的信息
是 javax.servlet.ServletContext 类的一个实例
重要方法:
String GetServerInfo ()
String getRealPath (path)
pageContext 对象
描述 JSP 文档的运行环境
提供对所有其他隐式对象及其属性的访问
是 javax.servlet.jsp.PageContext 类的一个实例
重要方法:
HttpSession getSession ()
void forward (path)
Servlet相关对象
基于 JSP 页面作为 Servlet 的实现
page 对象-表示 Servlet 本身
config 对象-存储 Servlet 的初始化参数
page 对象
表示 JSP 页面本身
是 Servlet 类的一个实例,就是转换后的类
存储 Servlet 配置对象
是 javax.servlet.servletConfig 接口的一个实例
重要方法:
Enumeration getInitParameterNames()
String getInitParameter(name)
错误处理
只有一个对象,exception 对象
在某个 JSP 页面抛出异常时,处理将被转发的页面
exception 对象
只适用于 JSP 错误页面
目的是在 JSP 内处理错误
是 java.lang.Throwable 类的一个实例
重要方法:
String getMessage ()
void printStackTrace (out)
JSP标准动作
JSP 标准动作
<jsp: useBean> 标记
<jsp: getProperty> 标记
<jsp: setProperty> 标记
<jsp: forward> 标记
<jsp: include> 标记
向其他服务器对象传输控制权或执行操作
包括:
<jsp:include>
<jsp:param>
<jsp:forward>
<jsp:plugin>
<jsp:useBean>
<jsp:setProperty>
<jsp:getProperty>
实例化对象
与服务器端资源进行通信
提高组件的可重用性,增强应用的可维护性
使 JSP 页面可与 JavaBean 对象进行交互
通过标记库定义自定义标记
JSP 动作的语法
JSP 动作标记遵循 XML 语言的语法
起始标记
结束标记
空标记
具有前缀 jsp:
用一对尖括号(< 和 >)括起来
在尖括号内定义标记:
起始标记 - 以元素的名称开头
结束标记 - 以正斜线开头,后面紧跟元素名称
空标记 - 以元素名称开头,以正斜线结束
JSP 代码是 HTML 和 Java 代码的混合
要使 JSP 代码易于读取,要将 HTML 代码与 Java 代码分开
JSP Bean 标记将 JavaBean 加载至页面
JavaBean 组件是遵循定义明确的设计/命名模式的Java 对象,
<jsp:useBean>
<jsp:getProperty>
<jsp:setProperty>
创建Bean或从服务器获得现有Bean
语法:
<jsp:useBean id="bean name" class="class name" />
或者
<jsp:useBean id="bean name" class="class name ">
初始化代码
</jsp:useBean>
Bean名称的规则:唯一
区分大小写
第一个字符必须为字母
不允许有空格
可为同一 Bean 类指定不同的 id 值
Count Bean不属于包
<jsp:useBean id="count" class="Count" />
Count Bean属于test包
<jsp:useBean id="count" class="test.Count" />
type属性-将引用此对象的变量的类型
beanName 属性-指定串行化Bean的名称
scope 属性-表明Bean应可用的环境
page
session
request
application
将 JavaBean 对象存储在当前页面的 javax.servlet.jsp.PageContext 中
JavaBean 对象仅可用于当前页面
将 JavaBean 对象存储在 HTTP 会话中
JavaBean 对象在当前 HttpSession 的生命周期内可用于所有页面
request 作用域
将 JavaBean 对象存储在当前 ServletRequest 中
JavaBean 对象可用于被包括的 JSP 页面
将 JavaBean 对象存储在 ServletContext 中
JavaBean 对象可用于共享同一 ServletContext 的所有页面
Hello,new user!!!
</jsp:useBean>
name 属性-指定 Bean 的名称
property 属性-指定 Bean 的属性
<jsp:getProperty name="bean name" property="property name"/>
设置 Bean 类的属性
name 属性-指定 Bean 的名称
property 属性-指定 Bean 的属性
value 属性-指定要设置的值
page 属性-指定替代地址
可为静态值,也可在请求时计算
语法:<jsp: forward page = "localURL" />
可与 <jsp:include> 和 <jsp:forward> 标记一起使用
name 属性-指定参数的名称
value 属性-指定参数的值
<jsp:param name="parameterName1" value="parameterValue1" />
<jsp:param name="parameterNameN" value="parameterValueN" />
</jsp:forward>
可将另一个页面生成的内容包括在当前页面的输出结果中
也可包括Servlet
page 属性-要插入当前页面的文档
flush 属性-是否刷新当前页面的缓冲器
<jsp:param> 标记指定附加的 request 参数
动重新编译和类大小
静态或动态内容的包括
合并主页和包括的页面的时间
共享局部变量
修改的生效
变量的作用域
参考资料:
《JSP2_0技术手册》