You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过<jsp:include>标签传递所有URL参数?

动态传递所有URL参数到被包含的JSP页面

要把page_A.jsp收到的所有请求参数动态传递给page_B.jsp,核心是遍历当前请求的所有参数,逐个生成<jsp:param>标签即可,下面提供两种常用实现方式:

方法一:使用JSTL标签库(推荐)

这种方式符合JSP规范,避免使用Scriptlet代码,更易维护。首先确保页面引入JSTL核心标签库:

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

然后在<jsp:include>标签内遍历所有请求参数:

<jsp:include page="page_B.jsp">
    <!-- 遍历所有参数键值对 -->
    <c:forEach var="paramEntry" items="${paramMap}">
        <!-- 处理参数多值的情况(比如复选框提交的多个值) -->
        <c:forEach var="paramValue" items="${paramEntry.value}">
            <jsp:param name="${paramEntry.key}" value="${paramValue}" />
        </c:forEach>
    </c:forEach>
</jsp:include>

${paramMap}是JSP内置的隐式对象,对应request.getParameterMap(),会包含当前请求的所有GET/POST参数,内层循环处理同一个参数名对应多个值的场景,确保所有参数都能正确传递。

方法二:使用Scriptlet代码(兼容旧项目)

如果项目无法使用JSTL,可以直接用Java代码遍历参数:

<jsp:include page="page_B.jsp">
    <%
        // 获取所有请求参数的Map
        Map<String, String[]> paramMap = request.getParameterMap();
        for (Map.Entry<String, String[]> entry : paramMap.entrySet()) {
            String paramName = entry.getKey();
            // 遍历参数的所有值
            for (String paramValue : entry.getValue()) {
    %>
                <jsp:param name="<%= paramName %>" value="<%= paramValue %>" />
    <%
            }
        }
    %>
</jsp:include>

额外注意事项

  • 两种方式都会传递所有请求参数(包括GET和POST提交的),如果需要排除特定参数,可在循环内添加判断条件(比如JSTL的<c:if>或Java的if语句)
  • 确保页面编码设置正确,避免参数出现乱码,可在page指令中指定:<%@ page contentType="text/html;charset=UTF-8" %>

内容的提问来源于stack exchange,提问作者halloleo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 09:20:12