JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码
JSP原理
Web服务器使用JSP来创建网页的步骤如下:
- 就像其他普通的网页一样,您的浏览器发送一个HTTP请求给服务器。
- Web服务器识别出这是一个对JSP网页的请求,并且将该请求传递给JSP引擎。通过使用URL或者.jsp文件来完成。
- JSP引擎从磁盘中载入JSP文件,然后将它们转化为servlet。这种转化只是简单地将所有模板文本改用println()语句,并且将所有的JSP元素转化成Java代码。
- JSP引擎将servlet编译成可执行类,并且将原始请求传递给servlet引擎。
- Web服务器的某组件将会调用servlet引擎,然后载入并执行servlet类。在执行过程中,servlet产生HTML格式的输出并将其内嵌于HTTP response中上交给Web服务器。
- Web服务器以静态HTML网页的形式将HTTP response返回到您的浏览器中。
- 最终,Web浏览器处理HTTP response中动态产生的HTML网页,就好像在处理静态网页一样。
JSP语法
注释
JSP中支持HTML注释和JSP注释。
- HTML注释的格式为````,可以在客户端显示。
- JSP注释的格式为
<%--这是个JSP注释--%>
,不可以在客户端显示。
JSP脚本元素
jsp脚本元素分为三类:JSP声明,JSP表达式,JSP Scriptlets。
- JSP声明:格式为
<%! java程序%>
,用来定义变量和方法,将来方法和变量会直接添加到servlet之中,相当于java的方法和变量。其中变量为全局变量。 - JSP表达式: 格式为
<%=java表达式%>
,用来将数据或者数据操作后的结果转换为字符串,插入到Servlet的输出流之中。 - JSP Scriptlets,格式为
<%java程序%>
,一般使用定义变量和编写语句,可以将java代码插入到jspService之中。
看一个简单的例子:
<%@ page language = "java" pageEncoding = "utf-8" %>
<html>
<head>
<title>
JSP Scriptlets
</title>
</head>
<body>
<!-- 实现页面访问计数 -->
<%-- 实现页面访问计数 --%>
<%!
int visit1 = 1; //声明变量visit1,初始值为1
int visit2 = 1; //声明变量visit2,初始值为1
%>
你是本页面第<%= visit1++ %>个访客(JSP表达式实现)<br>
你是本页面第<% out.println(visit2++); %>个访客(JSP Scriptlets实现)
</body>
</html>
需要注意,JSP声明和JSP Scriptlets中可以有多个语句,每个语句后面使用 分号“;” 结束。而JSP表达式中只能有一个表达式。
JSP指令
JSP指令用来设置整个JSP页面相关的属性,如网页的编码方式和脚本语言。包括page指令,include指令,taglib指令。
Page指令
Page指令为容器提供当前页面的使用说明。一个JSP页面可以包含多个page指令。
Page指令的语法格式:
<%@ page attribute="value" %>
Page指令常用属性如下:
属性 | 描述 |
---|---|
buffer | 指定out对象使用缓冲区的大小 |
autoFlush | 控制out对象的缓存区 |
contentType | 指定当前JSP页面的MIME类型和字符编码 |
errorPage | 指定当JSP页面发生异常时需要转向的错误处理页面 |
isErrorPage | 指定当前页面是否可以作为另一个JSP页面的错误处理页面 |
extends | 指定servlet从哪一个类继承 |
import | 导入要使用的Java类 |
info | 定义JSP页面的描述信息 |
isThreadSafe | 指定对JSP页面的访问是否为线程安全 |
language | 定义JSP页面所用的脚本语言,默认是Java |
session | 指定JSP页面是否使用session |
isELIgnored | 指定是否执行EL表达式 |
isScriptingEnabled | 确定脚本元素能否被使用 |
Include指令
JSP可以通过include指令来包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是该JSP文件的一部分,会被同时编译执行。
Include指令的语法格式如下:
<%@ include file="relative url" %>
Taglib指令
JSP API允许用户自定义标签,一个自定义标签库就是自定义标签的集合。
Taglib指令引入一个自定义标签集合的定义,包括库路径、自定义标签。
Taglib指令的语法:
<%@ taglib uri="uri" prefix="prefixOfTag" %>
网友评论