一、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"%>
<%-- 这是一个 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());
}
%>
欢迎访问我的 JSP 页面
当前时间: <%= getCurrentTime() %>
<%
// JSP 代码段
visitCount++;
String username = request.getParameter("username");
if (username != null && !username.isEmpty()) {
%>
欢迎回来,<%= username %>!
<%
} else {
%>
您是匿名访问者
<%
}
%>
这是您第 <%= visitCount %> 次访问本页面
数字列表:
- 数字 <%= i %> 的平方是 <%= i*i %>
<%
// 使用循环生成列表
for (int i = 1; i <= 5; i++) {
%>
<%
}
%>
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表达式使用<%= ... %>语法,用于将表达式的值输出到页面。
当前时间: <%= getCurrentTime() %>
这是您第 <%= visitCount %> 次访问本页面
这段代码:
调用getCurrentTime()方法并输出结果
输出visitCount变量的值
特点:
表达式的值会被转换为字符串
表达式后不需要加分号
可以包含变量、方法调用、算术运算等
4. JSP代码段(Scriptlet)
JSP代码段使用<% ... %>语法,用于在页面中嵌入Java代码。
<%
// JSP 代码段
visitCount++;
String username = request.getParameter("username");
if (username != null && !username.isEmpty()) {
%>
欢迎回来,<%= username %>!
<%
} else {
%>
您是匿名访问者
<%
}
%>
这段代码:
增加访问计数器
获取URL参数username
根据参数是否存在显示不同的欢迎信息
特点:
代码段中的代码会被直接插入到Servlet的service方法中
可以与HTML代码交替使用
可以包含任何有效的Java代码
另一个代码段示例(循环):
- 数字 <%= i %> 的平方是 <%= i*i %>
<%
// 使用循环生成列表
for (int i = 1; i <= 5; i++) {
%>
<%
}
%>
这段代码使用循环生成一个包含5个列表项的无序列表,每个列表项显示一个数字及其平方值。
5. JSP注释
JSP支持两种注释方式:
JSP注释:不会发送到客户端
<%-- 这是一个 JSP 注释,不会被发送到客户端 --%>
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的基本元素(指令、声明、表达式、代码段和注释),开发者可以创建功能丰富的动态网页。