目录
1. JSP 页面结构概述
JSP(JavaServer Pages)是基于 Java 的服务器端技术,允许在 HTML 中嵌入 Java 代码,实现动态网页内容。JSP 页面主要由 静态内容(HTML、CSS、JavaScript) 和 动态内容(Java 代码) 组成。
JSP 文件通常以 .jsp
作为扩展名,并由 Web 服务器(如 Tomcat)解析并转换为 Servlet 进行执行。
JSP 页面结构示例
<%@ page language="java" contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title>JSP 结构示例</title>
</head>
<body>
<h1>欢迎访问 JSP 页面</h1>
<%-- 脚本片段 --%>
<% int count = 10; %>
<%-- 表达式 --%>
<p>访问次数: <%= count %></p>
<%-- 动作标签 --%>
<jsp:include page="footer.jsp"/>
</body>
</html>
2. JSP 主要组件
指令(Directives)
指令用于定义 JSP 页面属性,例如编码、导入类、错误处理等。
常见指令
指令类型 | 语法 | 说明 |
---|---|---|
页面指令 (<%@ page %> ) | <%@ page contentType="text/html;charset=UTF-8" %> | 定义 JSP 页面属性 |
导入指令 (<%@ page import %> ) | <%@ page import="java.util.*" %> | 导入 Java 包 |
包含指令 (<%@ include %> ) | <%@ include file="header.jsp" %> | 静态包含另一个 JSP 文件 |
示例
<%@ page language="java" contentType="text/html;charset=UTF-8" import="java.util.Date" %>
<p>当前时间: <%= new Date() %></p>
脚本元素(Scripting Elements)
JSP 支持 Java 代码嵌入,提供 三种脚本元素:
1. 脚本片段 (<% %>
)
用于在 JSP 页面内嵌入 Java 代码。
<%
int count = 10;
System.out.println("JSP 脚本片段执行");
%>
2. 表达式 (<%= %>
)
用于在页面输出 Java 变量或方法返回值。
<p>访问次数: <%= count %></p>
3. 声明 (<%! %>
)
用于定义类级别的变量和方法。
<%! int globalCount = 0; %>
<%! public int getCount() { return globalCount++; } %>
<p>全局访问次数: <%= getCount() %></p>
动作标签(Action Tags)
动作标签用于在 JSP 页面中执行某些操作,例如页面跳转、包含、参数传递等。
常见动作标签
动作标签 | 语法 | 说明 |
---|---|---|
<jsp:include> | <jsp:include page="header.jsp"/> | 动态包含 JSP 页面 |
<jsp:forward> | <jsp:forward page="next.jsp"/> | 页面跳转 |
<jsp:param> | <jsp:forward page="next.jsp"><jsp:param name="user" value="Tom"/></jsp:forward> | 传递参数 |
<jsp:useBean> | <jsp:useBean id="user" class="com.example.User"/> | 创建 JavaBean |
示例
<jsp:include page="header.jsp"/>
<p>欢迎访问我的 JSP 页面</p>
<jsp:forward page="next.jsp"/>
注释(Comments)
JSP 支持 HTML 和 JSP 两种注释方式。
1. HTML 注释(会被客户端浏览器解析)
<!-- 这是 HTML 注释,客户端可以看到 -->
2. JSP 注释(仅在服务器端可见,客户端不可见)
<%-- 这是 JSP 注释,浏览器无法看到 --%>
隐式对象(Implicit Objects)
JSP 提供 9 个隐式对象,可直接在页面中使用。
隐式对象 | 类型 | 说明 |
---|---|---|
request | HttpServletRequest | 获取请求信息 |
response | HttpServletResponse | 生成响应 |
session | HttpSession | 维护会话状态 |
application | ServletContext | 访问应用范围信息 |
out | JspWriter | 输出内容到页面 |
config | ServletConfig | 访问 Servlet 配置信息 |
pageContext | PageContext | 获取 JSP 相关信息 |
page | Object | 当前 JSP 页面对象 |
exception | Throwable | 处理异常(仅适用于错误页面) |
示例
<p>客户端 IP: <%= request.getRemoteAddr() %></p>
3. JSP 页面执行流程
JSP 页面在服务器端执行的基本流程如下:
- JSP 解析:Web 服务器解析
.jsp
文件并转换为 Java 代码(Servlet)。 - 编译:Java 代码编译为
.class
字节码文件。 - 加载与初始化:容器加载 JSP 并执行
jspInit()
方法。 - 请求处理:对每个 HTTP 请求执行
_jspService()
方法。 - 销毁:JSP 页面生命周期结束,调用
jspDestroy()
释放资源。
4. 完整 JSP 示例
<%@ page language="java" contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title>JSP 结构示例</title>
</head>
<body>
<h1>JSP 结构示例</h1>
<%-- 使用 Java 代码 --%>
<% int visits = 5; %>
<%-- 输出变量值 --%>
<p>访问次数: <%= visits %></p>
<%-- 包含文件 --%>
<jsp:include page="footer.jsp"/>
</body>
</html>
5. 参考资料
出站链接
其他资源
- 《Head First Servlets and JSP》——JSP/Servlet 经典书籍
- JSP 教程合集
这篇文章详细介绍了 JSP 结构,如果你需要深入学习 JSTL、EL 表达式,欢迎继续探索!🚀
发表回复