运行在服务器端的动态网页技术–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" |