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