运行在服务器端的动态网页技术–JSP
JSP简介
JSP
全称为Java Server Pages
,是基于Servlet
建立的一种动态网页技术标准,相比传统的HTML
页面,使用JSP
技术可以在HTML页面中嵌入Java
代码。点击此处了解更多关于JSP技术的信息。
JSP脚本
想要使用JSP脚本,有三种方式,其语法如下:
- <% java代码 %>
- <%= java表达式 %>
- <%! java代码 %>
关于三种语法形式的区别如下表,
语法形式 | 区别 |
---|---|
<% java代码 %> | 代码在服务器端执行时会被放到service()方法内部执行 |
<%= java表达式 %> | 代码会被放到service()方法内部的out.print(java表达式)中执行 |
<%! java代码 %> | 代码会被放到service()方法的外部,类的内部,作为成员内容执行 |
JSP注释
JSP文件中有三种注释方式
- HTML注释:
- Java注释:由于使用Java作为脚本语言,所以JSP文件支持Java的注释方式,包括单行(
//
)、多行(/**/
)与文档注释(/** */
)- JSP注释:<%– JSP注释 –%>
在JSP文件中,不同的注释其可见范围是不一样的
JSP支持的注释 | 可见范围 |
---|---|
HTML注释 | JSP源码、翻译后的Servlet、HTML源码 |
Java注释 | 翻译后的Servlet、HTML源码 |
JSP注释 | JSP源码 |
JSP运行原理
jsp文件在第一次被访问时会Web容器翻译成Servlet程序并编译运行。编译运行后的文件存放在Tomcat安装目录/work/Catalina/localhost/项目名称/org/apache/jsp
路径下。
JSP指令
JSP指令用来设置整个页面的相关属性,比如页面编码、引入标签库等。JSP文件中可以设置三个指令,每个指令有不同的属性。
指令:
JSP指令 | 描述 |
---|---|
<%@page …%> | 定义网页的一些基本属性,例如:编码、错误页面、是否使用session等 |
<%@include …%> | 页面包含 |
<%@taglib …%> | 引入标签库 |
Page指令常用属性:
Page指令属性 | 描述 |
---|---|
pageEncoding | 当前jsp文件的编码 |
import | 导入java包 |
language | jsp文件中嵌入的语言类型 |
contextType | 指定当前JSP页面的MIME类型和字符编码 |
session | 指定JSP页面是否使用session |
errorPage | 指定当前JSP页面发生异常时需要跳转到的错误处理页面 |
isErrorPage | 指定当前页面是否可以作为另一个JPS页面的错误页面 |
extends | 指定JSP页面翻译后的Servlet要继承的类 |
include指令:文件包含指令或者说页面包含指令(静态页面),即可以将一个JSP页面包含到另一个JSP页面中,其语法如下:<%@include file=”文件地址” %>,此处的地址是一个相对的地址。
taglib指令:此指令用于引入自定义的标签库,其语法如下:<%@taglib uri="标签库地址" prefix="标签前缀">
,标签前缀
可以自由定义。
JSP隐式对象
JSP中的隐式对象由容器负责创建,因此可以直接使用。
对象 | 类型 | 描述 |
---|---|---|
request | ServletRequest | 获取用户请求信息 |
response | ServletResponse | 服务器响应信息 |
config | ServletConfig | 服务器配置,获取初始化参数 |
page | Object | 指定当前页面转换后的Servlet类实例 |
session | HttpSession | 保存用户信息 |
pageContext | PageContext | JSP页面容器 |
application | ServletContext | 所有用户的共享信息 |
out | JspWriter | 页面输出 |
exception | Exception | JSP页面所发生的异常,只在错误页面起作用 |
四个作用域的范围
page域:当前JSP页面
session域:一次会话
application域:整个web应用
request域:一次请求
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" session="true" |
EL表达式
EL表达式的作用主要就是简化JSP代码的编写,提高代码的可维护性。
内置对象
对象 | 描述 |
---|---|
pageScope | 用于获取JSP域中的数据 |
requestScope | 用于获取JSP域中的数据 |
sessionScope | 用于获取JSP域中的数据 |
applicationScope | 用于获取JSP域中的数据 |
parma | 接收参数 |
parmaValues | 接收参数 |
header | 获取请求头部信息 |
headerValues | 获取请求头部信息 |
initParma | 获取全局初始化参数 |
cookie | 获取Cookie数据 |
pageContext | 获取其他8个隐式对象 |
JSTL
所谓JSTL即JSP标准标签库,是一个JSP标签集合,在JSP页面中使用JSTL可以完成一些业务逻辑代码的编写。根据JSTL标签的功能可以分五部分,核心标签(core)
、格式化标签(I18N)
、SQL标签
、XML标签
、JSTL函数标签(functions)
。目前最新的是2015
年发布的Standard 1.2.3
,下载地址。
下面是一些代码示例:
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" |