JSP概述
JSP 概述
JSP(Java Server Pages)全称为Java服务器页面,与Servlet技术同为SUN公司制定的用于开发动态Web资源的标准技术。实质上,JSP是Servlet的一种表现形式,通过将Java代码嵌入HTML中实现动态内容的生成。
JSP = HTML + Java
- HTML:负责静态内容展示。
- Servlet:适用于编写服务器端Java逻辑代码,若直接编写网页内容较为繁琐。
- JSP:侧重于输出动态内容,不适宜编写复杂的Java业务逻辑。
JSP 原理
JSP页面在被Web容器解析后,会被转化为一个Servlet源码,随后编译为Servlet类并运行。用户请求到达时,该Servlet负责处理请求并生成动态内容响应。



JSP 最佳实践
- Servlet:充当控制器角色,主要负责编写Java代码逻辑,例如获取表单数据、处理业务逻辑及页面转向。
- JSP:作为视图层,主要用于显示经过处理后的数据。
JSP 基本语法
1. JSP 模板元素
JSP模板元素包括HTML标签和纯文本等静态内容。
2. JSP 脚本
2.1 小脚本
<% java代码 %>
2.2 表达式
<%= 2+3 %>
等同于 out.println(2+3);
2.3 声明
<%! %>
用于在JSP转换成的Servlet类中定义全局成员变量或静态块。
3. JSP 注释
- JSP注释:
<%-- 被注释的内容 --%>,安全且节省流量。 - HTML注释:
<!-- 网页注释 -->,不安全且消耗流量。
4. JSP 指令 & 动作
- 3种指令:包括
page指令、include指令和taglib指令。 - 6种动作:如
jsp:include用于动态包含,jsp:forward用于请求转发等。
5. JSP 的3个指令详解
JSP指令用于指导JSP引擎处理页面的特定行为,不直接生成输出内容。
- page指令:定义JSP页面的多种属性,如
import导入包、session自动创建session对象、buffer设置输出缓存大小、errorPage设置错误页面跳转、isErrorPage标识是否为错误处理页面、contentType设置响应内容类型、pageEncoding指定JSP页面编码,以及isELIgnored决定是否忽略EL表达式等。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
- include指令:静态包含其他资源,静态包含
<%@ include file="..."%>;动态包含使用<jsp:include page="..."/>。
6. JSP 的9个内置对象
JSP提供了9个内置对象,可在脚本元素中直接使用,如request、response、session、application、exception、page、config、out以及pageContext。
| 对象名 | 类型 | 说明 |
|---|---|---|
| request | javax.servlet.http.HttpServletRequest | |
| response | javax.servlet.http.HttpServletResponse | |
| session | javax.servlet.http.HttpSession | 由session="true"开关 |
| application | javax.servlet.ServletContext | |
| exception | java.lang.Throwable | 由isErrorPage="false"开关 |
| page | java.lang.Object当前对象this | 当前servlet实例 |
| config | javax.servlet.ServletConfig | |
| out | javax.servlet.jsp.JspWriter | 字符输出流,相当于 printWriter对象 |
| pageContext | javax.servlet.jsp.PageContext |
pageContext(重要)
-
作为域对象:能够操作其他三个域对象(request、session、application)的数据,并提供了设置、获取和移除属性的方法,以及按作用域查找属性的
findAttribute方法。 -
创建其他隐式对象:在非JSP环境(如自定义标签中)可通过
PageContext对象获取其他JSP隐式对象。 -
简易方法:提供了一些便捷方法,如
pageContext.forward("2.jsp")和pageContext.include("2.jsp")分别用于转发和包含页面。
四大域对象的实际应用
- PageContext:仅在当前页面有效,开发中较少使用。
- ServletRequest:在一次请求(包括转发)范围内有效,广泛用于处理请求相关的数据。
- HttpSession:在一次会话内有效,常用于存储用户的登录状态、购物车信息等。
- ServletContext:在整个Web应用范围内有效,由于其作用范围较大,因此推荐谨慎使用,通常用于存储全局共享的配置信息。

浙公网安备 33010602011771号