JavaWeb教程2:JSP编程基础
3/21/2025
188 阅读
一、JSP简介
JSP(JavaServer Pages)是一种基于Java技术的动态网页开发技术,它允许开发者在HTML页面中嵌入Java代码,从而创建动态生成的Web内容。
二、JSP页面结构
一个典型的JSP页面包含以下几个部分:
- 页面指令:设置页面属性
- HTML内容:静态内容
- JSP元素:动态内容(声明、代码段、表达式、注释等)
三、JSP实例详解
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP 基本元素示例</title>
</head>
<body>
<%-- 这是一个 JSP 注释,不会被发送到客户端 --%>
<%!
// 声明变量和方法
int visitCount = 0;
public String getCurrentTime() {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(new java.util.Date());
}
%>
<h1>欢迎访问我的 JSP 页面</h1>
<p>当前时间: <%= getCurrentTime() %></p>
<%
// JSP 代码段
visitCount++;
String username = request.getParameter("username");
if (username != null && !username.isEmpty()) {
%>
<p>欢迎回来,<%= username %>!</p>
<%
} else {
%>
<p>您是匿名访问者</p>
<%
}
%>
<p>这是您第 <%= visitCount %> 次访问本页面</p>
<h2>数字列表:</h2>
<ul>
<%
// 使用循环生成列表
for (int i = 1; i <= 5; i++) {
%>
<li>数字 <%= i %> 的平方是 <%= i*i %></li>
<%
}
%>
</ul>
<!-- 这是 HTML 注释,会被发送到客户端 -->
</body>
</html>
1. 页面指令(Page Directive)
页面指令用于设置JSP页面的属性,如字符编码、内容类型等。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
这行代码指定了:
- 使用Java作为脚本语言
- 内容类型为text/html
- 字符编码为UTF-8
2. JSP声明(Declaration)
JSP声明使用<%! ... %>
语法,用于声明变量和方法,这些声明会成为Servlet类的成员。
<%!
// 声明变量和方法
int visitCount = 0;
public String getCurrentTime() {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(new java.util.Date());
}
%>
这段代码:
- 声明了一个整型变量
visitCount
,用于记录访问次数 - 声明了一个方法
getCurrentTime()
,用于获取当前时间的格式化字符串
特点: - 声明的变量和方法是Servlet类的成员
- 变量在所有客户端请求之间共享
- 方法可以在页面的任何地方调用
3. JSP表达式(Expression)
JSP表达式使用<%= ... %>
语法,用于将表达式的值输出到页面。
<p>当前时间: <%= getCurrentTime() %></p>
<p>这是您第 <%= visitCount %> 次访问本页面</p>
这段代码:
- 调用
getCurrentTime()
方法并输出结果 - 输出
visitCount
变量的值
特点: - 表达式的值会被转换为字符串
- 表达式后不需要加分号
- 可以包含变量、方法调用、算术运算等
4. JSP代码段(Scriptlet)
JSP代码段使用<% ... %>
语法,用于在页面中嵌入Java代码。
<%
// JSP 代码段
visitCount++;
String username = request.getParameter("username");
if (username != null && !username.isEmpty()) {
%>
<p>欢迎回来,<%= username %>!</p>
<%
} else {
%>
<p>您是匿名访问者</p>
<%
}
%>
这段代码:
- 增加访问计数器
- 获取URL参数
username
- 根据参数是否存在显示不同的欢迎信息
特点: - 代码段中的代码会被直接插入到Servlet的service方法中
- 可以与HTML代码交替使用
- 可以包含任何有效的Java代码
另一个代码段示例(循环):
<ul>
<%
// 使用循环生成列表
for (int i = 1; i <= 5; i++) {
%>
<li>数字 <%= i %> 的平方是 <%= i*i %></li>
<%
}
%>
</ul>
这段代码使用循环生成一个包含5个列表项的无序列表,每个列表项显示一个数字及其平方值。
5. JSP注释
JSP支持两种注释方式:
- JSP注释:不会发送到客户端
<%-- 这是一个 JSP 注释,不会被发送到客户端 --%>
- HTML注释:会发送到客户端,但在浏览器中不显示
<!-- 这是 HTML 注释,会被发送到客户端 -->
四、JSP内置对象
JSP提供了9个内置对象,可以在代码段和表达式中直接使用:
-
request:HTTP请求对象,包含客户端请求信息
String username = request.getParameter("username");
-
response:HTTP响应对象
-
out:用于向客户端发送内容
-
session:表示客户端会话
-
application:表示ServletContext对象
-
config:表示ServletConfig对象
-
pageContext:提供对所有JSP内置对象的访问
-
page:表示当前JSP页面的实例
-
exception:表示发生异常的对象(仅在错误页面中可用)
五、JSP生命周期
JSP页面的生命周期包括以下阶段:
- 转译阶段:JSP页面被转换为Servlet源代码
- 编译阶段:Servlet源代码被编译为字节码
- 加载阶段:Servlet类被加载到内存
- 实例化阶段:创建Servlet实例
- 初始化阶段:调用Servlet的init()方法
- 服务阶段:调用Servlet的service()方法处理请求
- 销毁阶段:调用Servlet的destroy()方法
六、实践应用
示例JSP页面展示了如何:
- 记录访问次数
- 获取并显示当前时间
- 处理URL参数
- 使用条件语句显示不同内容
- 使用循环生成动态列表
七、总结
JSP是一种强大的服务器端技术,它结合了Java的强大功能和HTML的简单性,使开发动态Web应用变得更加简单。通过掌握JSP的基本元素(指令、声明、表达式、代码段和注释),开发者可以创建功能丰富的动态网页。
评论 (0)
暂无评论,来发表第一条评论吧!