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应用范围内有效,由于其作用范围较大,因此推荐谨慎使用,通常用于存储全局共享的配置信息。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?