JavaServer Pages (JSP) 是一种基于Servlet的服务器端技术,用于动态生成Web页面。本教程将介绍JSP的基础知识、语法和使用方法,帮助你快速上手。


目录

  1. JSP 概述
  2. JSP 生命周期
  3. JSP 基本语法
  4. JSP 与 Servlet 集成
  5. 完整示例
  6. 部署与测试
  7. 参考资料

1. JSP 概述

  • 定义:JSP 是嵌入Java代码的HTML页面,由Servlet容器编译为Servlet执行。
  • 优点
  • 简化动态内容生成。
  • 与HTML紧密集成。
  • 用途:展示数据、表单处理、用户界面。

2. JSP 生命周期

  1. 翻译:JSP文件转为Java代码(Servlet)。
  2. 编译:Java代码编译为字节码。
  3. 加载与实例化:容器加载Servlet类。
  4. 初始化:调用 jspInit()
  5. 服务:处理请求,调用 _jspService()
  6. 销毁:调用 jspDestroy()

3. JSP 基本语法

脚本元素

  • 脚本片段 (<% %>):嵌入Java代码。
1
<% int count = 5; %>
  • 表达式 (<%= %>):输出值到页面。
1
<%= "Hello, " + count %>
  • 声明 (<%! %>):定义字段或方法。
1
<%! int globalCount = 0; %>

指令

  • 页面指令 (<%@ page %>):设置页面属性。
1
<%@ page contentType="text/html;charset=UTF-8" %>
  • 包含指令 (<%@ include %>):静态包含文件。
1
<%@ include file="header.jsp" %>

动作标签

  • <jsp:include>:动态包含。
1
<jsp:include page="footer.jsp"/>
  • <jsp:forward>:页面转发。
1
<jsp:forward page="error.jsp"/>

隐式对象

  • requestHttpServletRequest
  • responseHttpServletResponse
  • outJspWriter,输出流。
  • sessionHttpSession
  • applicationServletContext

4. JSP 与 Servlet 集成

  • Servlet 调用 JSP:通过转发。
1
request.getRequestDispatcher("/result.jsp").forward(request, response);
  • JSP 调用 Servlet:通过表单提交。
1
2
3
4
<form action="/myServlet" method="post">
    <input type="text" name="data">
    <input type="submit" value="提交">
</form>

5. 完整示例

以下是一个简单的JSP示例。

JSP 文件:index.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>JSP 示例</title>
</head>
<body>
    <h1>欢迎使用 JSP</h1>
    <%! int visitCount = 0; %>
    <% visitCount++; %>
    <p>您是第 <%= visitCount %> 次访问。</p>
 
    <form method="post" action="process.jsp">
        姓名: <input type="text" name="name"><br>
        <input type="submit" value="提交">
    </form>
</body>
</html>

JSP 文件:process.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>处理结果</title>
</head>
<body>
    <h1>处理结果</h1>
    <%
        String name = request.getParameter("name");
        if (name != null && !name.trim().isEmpty()) {
            out.println("<p>欢迎, " + name + "!</p>");
        } else {
            out.println("<p>请输入姓名</p>");
        }
    %>
    <a href="index.jsp">返回</a>
</body>
</html>

配置:web.xml(可选)

1
2
3
4
5
6
7
8
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         version="5.0">
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

6. 部署与测试

部署

  1. index.jspprocess.jsp 放入 myapp/
  2. 更新 web.xml(可选,默认支持JSP)。
  3. 部署 myapp 到Tomcat的 webapps 目录。
  4. 启动Tomcat。

测试

  • 访问:http://localhost:8080/myapp/
  • 显示访问计数。
  • 输入姓名并提交:跳转到 process.jsp 显示欢迎信息。
  • 留空提交:提示输入姓名。

7. 参考资料

出站链接

其他资源

  • 《Head First Servlets and JSP》 – JSP基础。
  • X社区:搜索 #JSPTutorial 获取示例。

这篇教程介绍了JSP的基础知识和实现。如果需要更深入内容(如EL表达式、JSTL或与数据库结合),请告诉我!