当前位置: 首页 > news >正文

JSP 动作标签:动态包含、请求转发与登录跳转实战

在 JSP 开发中,除了我们熟悉的pageinclude指令,JSP 动作标签(Action Tag)是实现页面复用、请求转发、参数传递的核心利器。

一、JSP 动作标签核心概览

JSP 动作标签是 JSP 提供的内置标签,以jsp:为前缀,用于在页面中实现动态逻辑,无需编写复杂 Java 代码。核心常用标签如下:

动作标签核心作用语法
<jsp:include>动态包含其他页面,运行时合并<jsp:include page="文件路径"/>
<jsp:forward>将请求转发到另一个页面,地址栏不变<jsp:forward page="目标路径"/>
<jsp:param>配合包含 / 转发,传递参数<jsp:param name="参数名" value="参数值"/>

二、<jsp:include>:动态包含,实现页面复用

很多人会把<%@ include %>静态包含和<jsp:include>动态包含搞混,我们先通过实战彻底区分两者。

1. 静态包含 vs 动态包含核心区别

特性<%@ include %>静态包含<jsp:include>动态包含
执行时机时机编译时合并,生成一个 Servlet运行时调用,生成多个 Servlet
内容修改被包含文件修改后,需重新编译主页面被包含文件修改后,无需重新编译
适用场景静态内容(头部、底部、公共样式)动态内容(实时数据、频繁更新的模块)
参数传递共享主页面变量,无需额外传参需通过<jsp:param>传参

2. 动态包含实战案例

创建被包含页面includedemo.jsp
创建主页面testincludedemo.jsp,动态包含上述页面

运行效果

访问http://localhost:8080/myxmall_war_exploded/unit3_2/testincludedemo.jsp,页面会显示

代码解析

  • <jsp:include page="includedemo.jsp"/>:在运行时动态调用includedemo.jsp,将其输出结果嵌入主页面
  • 两个页面是独立的 Servlet,修改includedemo.jsp后,无需重新编译主页面即可生效

三、<jsp:forward>:请求转发,实现页面跳转与参数传递

<jsp:forward>是 JSP 中实现请求转发的核心标签,它会将当前请求完全转发到目标页面,浏览器地址栏不会变化,同时可以通过<jsp:param>传递参数。

1. 实战案例:随机数判断与页面跳转

创建转发主页面testforward.jsp

创建目标页面big.jsp(接收参数)

创建目标页面small.jsp(接收参数)

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

<html>

<head>

<title>Title</title> </head>

<body>

<%= request.getParameter("num")%> 小于5

</body>

</html>

运行效果

多次访问http://localhost:8080/myxmall_war_exploded/unit3_2/testforward.jsp,页面会随机显示:
  • 6 大于等于5(当随机数≥5 时)
  • 0 小于5(当随机数 < 5 时)
  • 浏览器地址栏始终保持testforward.jsp,不会变化

代码解析

  • Math.random()*10:生成 0-9 的随机数
  • <jsp:forward>:根据随机数判断,转发到不同页面
  • <jsp:param>:将随机数s作为参数传递给目标页面,目标页面通过request.getParameter("num")获取
  • 请求转发的核心:一次请求,地址栏不变,共享 request 对象

四、out 对象:JSP 输出的核心,解决页面嵌套问题

在 JSP 中,out是 9 大内置对象之一,用于向浏览器输出内容。很多新手在写页面时,会出现 HTML 标签嵌套错误,我们通过一个时间显示案例,彻底搞懂out的正确用法。

运行效果

访问页面后,会显示当前时间:

代码解析

  • out.print():将 Java 变量输出到 HTML 页面,替代表达式<%= %>,适合复杂逻辑输出

  • Calendar.HOUR_OF_DAY:获取 24 小时制的小时,避免上午 / 下午混淆

  • 规范 HTML 结构:避免标签嵌套,保证页面符合 W3C 标准

五、核心知识点与避坑指南

(1)中文乱码处理

  • 关键request.setCharacterEncoding("UTF-8")必须写在request.getParameter()之前,否则乱码无法解决

  • 原理:设置请求体的编码,确保 POST 提交的中文正常解析

(2)空值安全处理

  • 必须对usernameuserpass做非空判断,避免直接调用equals()导致空指针异常

  • 推荐写法:"admin".equals(username),将常量写在前面,彻底避免空指针

(3)response.sendRedirectvs<jsp:forward>

特性response.sendRedirect<jsp:forward>
跳转类型客户端跳转(两次请求)服务器端跳转(一次请求)
地址栏变化,显示目标页面地址不变,显示原页面地址
数据共享不共享 request,需用 session 传递共享 request,可通过jsp:param传参
适用场景登录成功跳转、跨域跳转同应用内页面跳转、参数传递

(4)session 的作用

  • session.setAttribute("username", username):将用户名存入 session,在后续所有页面(如首页)都可以通过session.getAttribute("username")获取,实现用户状态保持

  • 这是实现 “登录后显示用户名” 功能的核心原理

六、总结

JSP 动作标签是 JavaWeb 开发的基础核心,掌握它们就能轻松实现页面复用、请求转发、登录跳转等功能:

  • <jsp:include>:动态包含,适合频繁更新的动态内容

  • <jsp:forward>:请求转发,同应用内页面跳转,共享 request

  • out对象:页面输出,解决 Java 与 HTML 的融合问题

  • 登录跳转:结合requestsessionresponse,实现完整的用户认证流程

http://www.jsqmd.com/news/611801/

相关文章:

  • Wan2.2-I2V-A14B与目标检测联动:基于YOLOv5结果的动态视频生成
  • CogVideoX-2b实战落地:中小企业低成本视频制作新路径
  • Intv_ai_mk11算法原理浅析:理解其背后的对话生成机制
  • 雯雯的后宫-造相Z-Image-瑜伽女孩效果展示:同一提示词在不同采样器(DPM++/Euler)下的差异对比
  • mysqlworkbench连接不上,非降级解决方法
  • 黑丝空姐-造相Z-Turbo与内网穿透:安全访问公司内部部署的模型服务
  • 小白必看!lite-avatar形象库保姆级教程:一键部署150+数字人
  • Streamlit+SDXL轻量部署:软萌拆拆屋镜像免配置快速上手指南
  • 使元素横向排列的方法
  • 别再手动合并Excel了!用EasyExcel自定义策略搞定复杂报表导出(附完整代码)
  • 零基础部署Phi-4-mini推理模型:5分钟搞定数学解题AI助手
  • 约束域图灵测试:在硬边界中识别语言模拟器与规则理解者
  • 如何轻松实现大润发购物卡回收变现?最全指南教你秒懂 - 团团收购物卡回收
  • Phi-4-mini-reasoning效果展示:128K上下文下长篇逻辑论证的连贯性实测
  • ide-eval-resetter:开发者必备的JetBrains IDE试用期管理工具
  • Z-Image Turbo保姆级教学:CPU Offload显存管理技巧
  • Pixel Script Temple 物联网仪表盘:为STM32传感器数据创建像素风可视化
  • ESP32与ESP8266代码移植实战:如何快速复用你的巴法云项目(附引脚修改详解)
  • 【2026年网易春招- 4月2日-第三题- 不朽荣光】(题目+思路+JavaC++Python解析+在线测试)
  • MOS管关键参数解析与应用场景指南
  • NX二次开发实战:如何用选择对象控件精准过滤边和组件(附代码示例)
  • Claude Mythos Preview发布文章解读
  • 【基于Python技术的智慧中医商业项目】后端应用Articles代码实现(三)
  • 数据结构——顺序栈及函数实现(C语言)
  • 厦门大学845数据结构考研考试范围(大纲)和参考书目
  • 低成本GPU算力方案:Z-Image-Turbo在RTX 3060上稳定运行的显存优化部署教程
  • Pixel Couplet Gen效果展示:神荼郁垒像素方块+气球爆炸交互真实案例
  • AI Agent Harness Engineering 在政府数字化中的机会与限制
  • 中科院FlowPIE:AI实现科学创意自动孵化突破研究范式创新
  • 寻音捉影·侠客行真实案例分享:某MCN机构用其日均处理200+小时口播素材