文章大纲
加载中...

JavaWeb教程2:JSP编程基础

3/21/2025 188 阅读
JavaWeb教程2:JSP编程基础

一、JSP简介

JSP(JavaServer Pages)是一种基于Java技术的动态网页开发技术,它允许开发者在HTML页面中嵌入Java代码,从而创建动态生成的Web内容。

二、JSP页面结构

一个典型的JSP页面包含以下几个部分:

  1. 页面指令:设置页面属性
  2. HTML内容:静态内容
  3. 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支持两种注释方式:

  1. JSP注释:不会发送到客户端
<%-- 这是一个 JSP 注释,不会被发送到客户端 --%>
  1. HTML注释:会发送到客户端,但在浏览器中不显示
<!-- 这是 HTML 注释,会被发送到客户端 -->

四、JSP内置对象

JSP提供了9个内置对象,可以在代码段和表达式中直接使用:

  1. request:HTTP请求对象,包含客户端请求信息

    String username = request.getParameter("username");
    
  2. response:HTTP响应对象

  3. out:用于向客户端发送内容

  4. session:表示客户端会话

  5. application:表示ServletContext对象

  6. config:表示ServletConfig对象

  7. pageContext:提供对所有JSP内置对象的访问

  8. page:表示当前JSP页面的实例

  9. exception:表示发生异常的对象(仅在错误页面中可用)

五、JSP生命周期

JSP页面的生命周期包括以下阶段:

  1. 转译阶段:JSP页面被转换为Servlet源代码
  2. 编译阶段:Servlet源代码被编译为字节码
  3. 加载阶段:Servlet类被加载到内存
  4. 实例化阶段:创建Servlet实例
  5. 初始化阶段:调用Servlet的init()方法
  6. 服务阶段:调用Servlet的service()方法处理请求
  7. 销毁阶段:调用Servlet的destroy()方法

六、实践应用

示例JSP页面展示了如何:

  • 记录访问次数
  • 获取并显示当前时间
  • 处理URL参数
  • 使用条件语句显示不同内容
  • 使用循环生成动态列表

七、总结

JSP是一种强大的服务器端技术,它结合了Java的强大功能和HTML的简单性,使开发动态Web应用变得更加简单。通过掌握JSP的基本元素(指令、声明、表达式、代码段和注释),开发者可以创建功能丰富的动态网页。


评论 (0)

暂无评论,来发表第一条评论吧!