📜  学习JSP教程(1)

📅  最后修改于: 2023-12-03 15:25:04.217000             🧑  作者: Mango

学习 JSP 教程

如果你是一名 Java 程序员,那么学习 JSP(JavaServer Pages)将会很有帮助。JSP 是一种用于动态生成网页的技术,它允许嵌入 Java 代码,因此可以在网页中实现更复杂的功能。

JSP 基础

JSP 基于 Servlet 技术,因此需要先学习 Servlet。如果你还没有学习 Servlet,可以先去学习一下 Servlet 教程

JSP 的工作原理

JSP 的工作原理非常简单:

  1. 当用户请求访问一个 JSP 网页时,Web 服务器将该请求发送给 JSP 引擎;
  2. JSP 引擎将 JSP 文件编译为 Servlet,并把该 Servlet 加载到内存中;
  3. Servlet 生成 HTML 代码,并将其发送回给客户端。
JSP 的语法

JSP 的语法类似于 HTML,并且可以嵌入 Java 代码。以下是一些 JSP 的语法示例:

<%-- 这是 JSP 注释 --%>

<% if (user.isAdmin()) { %>
    <p>欢迎管理员登录!</p>
<% } else { %>
    <p>欢迎普通用户登录!</p>
<% } %>

<p>当前时间: <%= new Date() %> </p>

<jsp:include page="header.jsp" />
在 JSP 中嵌入 Java 代码

在 JSP 中嵌入 Java 代码,可以使用以下方式:

  1. 使用 <% %> 标签包裹 Java 代码;
  2. 使用 <%= %> 标签输出 Java 表达式的值。

以下是一个简单的例子:

<%
    String message = "Hello, JSP!";
%>

<p><%= message %></p>
JSP 的指令

JSP 的指令是一种特殊的语法,用于控制 JSP 引擎的行为。以下是一些常用的指令:

  1. <%@ page %>:设置页面的属性;
  2. <%@ include %>:包含一个 JSP 文件;
  3. <%@ taglib %>:引用一个标签库。

以下是一个例子:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" %>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<html>
<body>
    <%-- 包含 header.jsp 文件 --%>
    <%@ include file="header.jsp" %>

    <c:forEach var="i" begin="1" end="10">
        <p>当前数字:<%= i %></p>
    </c:forEach>

    <%-- 包含 footer.jsp 文件 --%>
    <%@ include file="footer.jsp" %>
</body>
</html>
JSP 高级

了解了 JSP 的基础知识之后,还需要学习一些高级技术,例如:

JSP 的 EL 表达式

EL(Expression Language)表达式是 JSP 中的一个特殊语法,用于访问 Java 对象的属性、调用 Java 方法等。以下是一些 EL 表达式的示例:

<p>用户姓名: ${user.name} </p>
<p>用户年龄: ${user.age} </p>
<p>当前时间: ${new java.util.Date()} </p>
JSP 的 JSTL 标签库

JSTL(JSP Standard Tag Library)是 JSP 中的一个标签库,它提供了大量的标签,可以简化 JSP 的书写。以下是一些常用的 JSTL 标签:

  1. <c:forEach>:循环输出一个集合;
  2. <c:choose>:类似于 Java 中的 switch 语句,用于判断条件;
  3. <c:if>:类似于 Java 中的 if 语句,用于判断条件;
  4. <c:set>:设置一个变量的值;
  5. <c:url>:生成一个 URL。

以下是一个简单的例子:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<c:forEach var="i" begin="1" end="10">
    <p>当前数字:${i}</p>
</c:forEach>

<c:choose>
    <c:when test="${user.isAdmin()}">
        <p>欢迎管理员登录!</p>
    </c:when>
    <c:otherwise>
        <p>欢迎普通用户登录!</p>
    </c:otherwise>
</c:choose>

<c:set var="message" value="Hello, JSTL!" />

<c:url value="/hello.jsp" var="url">
    <c:param name="message" value="${message}" />
</c:url>

<a href="${url}">点击这里</a>
JSP 的 MVC 模式

MVC(Model-View-Controller)模式是一种常用的设计模式,用于将应用程序的不同部分分离开来。在 JSP 中,也可以使用 MVC 模式,将代码分解成以下三部分:

  1. 数据模型(Model):负责存储数据,并提供访问数据的方法;
  2. 视图(View):负责呈现网页,并接收用户输入;
  3. 控制器(Controller):负责将用户输入转换为对数据模型的操作,并将结果呈现到视图中。

以下是一个简单的例子:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%
    String action = request.getParameter("action");

    if (action == null) {
        action = "index";
    }

    switch (action) {
        case "index":
            // 显示用户列表
            List<User> userList = userService.getAllUser();
            request.setAttribute("userList", userList);
            request.getRequestDispatcher("/WEB-INF/view/user/list.jsp").forward(request, response);
            break;
        case "add":
            // 显示添加用户界面
            request.getRequestDispatcher("/WEB-INF/view/user/add.jsp").forward(request, response);
            break;
        case "doAdd":
            // 处理添加用户请求
            String name = request.getParameter("name");
            int age = Integer.parseInt(request.getParameter("age"));
            User user = new User(name, age);
            userService.addUser(user);
            response.sendRedirect(request.getContextPath() + "/user?action=index");
            break;
        default:
            // 处理未知请求
            response.setStatus(404);
            break;
    }
%>
参考文献

如果你想更深入地学习 JSP,可以参考以下资料: