马上期末了,打开书一看,天塌了,咋还要考jsp (2)

前言

期末复习的节奏本有条不紊,可当翻开书本看到 JSP(JavaServer Pages)相关内容时,心瞬间凉了半截。基本没用过。如今要直面考试,着实有些慌神。

二、JSP 基础大揭秘

1. JSP 页面结构与本质

JSP 页面看似是普通的 HTML 页面,实则暗藏玄机。它可以包含 HTML、CSS、JavaScript 等前端内容,还能嵌入 Java 代码。其实质是一个 Servlet,当客户端请求一个 JSP 页面时,服务器会先将 JSP 页面翻译成 Servlet 源文件,再编译成字节码文件执行。例如下面这个简单的 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 中的 Java 代码片段
        String message = "欢迎学习 JSP";
    %>
    <h1><%= message %></h1>
</body>
</html>

在这个例子中,<%@ page %> 是指令标签,用于设置页面的属性,如语言、字符编码等。<% %> 里是 Java 代码片段,<%= %> 则用于输出变量或表达式的值。

2. JSP 指令标签

JSP 指令标签主要有三种:pageincludetaglib

  • page 指令:用于定义 JSP 页面的各种属性,像前面提到的 languagecontentType 等。还可以设置 import 属性来导入 Java 包,例如 <%@ page import="java.util.Date"%>
  • include 指令:用于在 JSP 页面中静态包含另一个文件,在翻译阶段就将被包含文件的内容插入到当前页面。示例如下:
jsp 复制代码
<%@ include file="header.jsp" %>
  • taglib 指令:用于引入自定义标签库,方便在 JSP 页面中使用自定义标签。

3. JSP 隐式对象

JSP 提供了一些隐式对象,这些对象无需显式声明就可以在 JSP 页面中直接使用,大大提高了开发效率。常见的隐式对象有:

  • request:代表客户端的请求,可用于获取请求参数、请求头信息等。例如:
jsp 复制代码
<%
    String username = request.getParameter("username");
%>
  • response:代表服务器对客户端的响应,可用于设置响应头、重定向等操作。
  • session:用于管理用户会话,可在不同页面间共享用户信息。比如存储用户登录信息:
jsp 复制代码
<%
    session.setAttribute("user", "admin");
%>
  • application:代表整个 Web 应用,可在所有用户间共享信息。

三、JSP 与 Servlet 的协同作战

JSP 和 Servlet 就像一对黄金搭档。Servlet 更擅长处理业务逻辑,将处理结果存储在 requestsession 中,然后转发到 JSP 页面进行展示。例如,一个用户登录的 Servlet 处理登录逻辑:

java 复制代码
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        // 模拟登录验证
        if ("admin".equals(username) && "123456".equals(password)) {
            request.setAttribute("message", "登录成功");
            request.getRequestDispatcher("welcome.jsp").forward(request, response);
        } else {
            request.setAttribute("message", "登录失败");
            request.getRequestDispatcher("login.jsp").forward(request, response);
        }
    }
}

四、JSP 动作标签

JSP 动作标签以 <jsp:xxx> 形式存在,用于在运行时执行特定的操作。常见的动作标签有:

  • <jsp:include>:动态包含另一个页面,在请求处理阶段才将被包含页面的内容插入到当前页面。与 include 指令不同,它是动态包含,被包含页面的内容可以动态变化。
jsp 复制代码
<jsp:include page="footer.jsp" />
  • <jsp:forward>:用于将请求转发到另一个资源,如 Servlet 或 JSP 页面。
jsp 复制代码
<jsp:forward page="error.jsp" />

五、总结

当然了,这并不全面,也是没办法了,距离考试的时间越来越近,复习这些 JSP 知识点也是无奈之举,没办法,还是要毕业的,越来越想不明白,这有什么意义。

相关推荐
菜鸟谢6 分钟前
windows xp 下载 sp0 sp1 sp2 sp3 sp4
后端
AirMan8 分钟前
你真的懂 MySQL 的一致性读和当前读的区别吗?
后端·面试
David爱编程14 分钟前
容器性能优化实战指南——防止“吃爆”服务器就靠这些招!
后端·docker·容器
Android洋芋17 分钟前
GitHub项目部署的终极指南:从零到一掌握Docker实战
后端
林太白34 分钟前
Next.js超简洁完整篇
前端·后端·react.js
前端付豪34 分钟前
汇丰登录风控体系拆解:一次 FaceID 被模拟攻击的调查纪实
前端·后端·架构
无名之逆1 小时前
大三自学笔记:探索Hyperlane框架的心路历程
java·开发语言·前端·spring boot·后端·rust·编程
yang_xiao_wu_1 小时前
springboot+mybatis面试题
spring boot·后端·mybatis
Chuck1sn1 小时前
我把 Cursor AI 整合到 Ruoyi 中,从此让 Java 脚手架脱离人工!
java·vue.js·后端
水木石画室1 小时前
Spring Boot 常用注解面试题深度解析
java·spring boot·后端