JSP 面试题 目录

JSP 中如何使用 `<jsp:forward>` 动作?

推荐答案

在 JSP 中,<jsp:forward> 动作用于将请求转发到另一个资源(如另一个 JSP 页面、Servlet 或 HTML 文件)。它的基本语法如下:

其中,page 属性指定了要转发到的目标资源的路径。这个路径可以是相对路径或绝对路径。

本题详细解读

1. <jsp:forward> 的基本用法

<jsp:forward> 动作标签用于将当前请求转发到另一个资源。转发后,控制权将完全转移到目标资源,当前页面的剩余内容将不再执行。

在这个例子中,请求将被转发到 targetPage.jsp,并且浏览器不会感知到这次转发,URL 也不会改变。

2. 传递参数

你可以在转发时通过 <jsp:param> 标签传递参数给目标资源。例如:

targetPage.jsp 中,你可以通过 request.getParameter("username")request.getParameter("age") 来获取这些参数。

3. 转发的路径

<jsp:forward>page 属性可以指定相对路径或绝对路径。相对路径是相对于当前 JSP 页面的路径,而绝对路径是相对于 Web 应用程序的根目录。

  • 相对路径示例:
  • 绝对路径示例:

4. 转发的限制

  • 转发必须在响应提交之前进行,否则会抛出 IllegalStateException 异常。
  • 转发后,当前页面的输出缓冲区将被清空,因此不能在转发后继续输出内容。

5. 与 <jsp:include> 的区别

<jsp:forward><jsp:include> 都可以将请求发送到其他资源,但它们的行为不同:

  • <jsp:forward>:将请求完全转发到目标资源,当前页面的剩余内容不会执行。
  • <jsp:include>:将目标资源的内容包含到当前页面中,当前页面的剩余内容会继续执行。

6. 实际应用场景

<jsp:forward> 通常用于以下场景:

  • 根据用户输入或业务逻辑,将请求转发到不同的页面。
  • 在 MVC 模式中,控制器 Servlet 处理请求后,将请求转发到视图 JSP 页面。

7. 示例代码

以下是一个完整的示例,展示了如何使用 <jsp:forward>

-- -------------------- ---- -------
--- ---- ------------------------------------- --------------- --
------
------
    -------------- ---------------
-------
------
    --
        ------ -------- - ---------------------------------
        -- -------------------------- -
    --
            ------------ -------------------- --
    --
        - ---- -
    --
            ------------ ------------------- --
    --
        -
    --
-------
-------

在这个示例中,根据 userType 参数的值,请求将被转发到不同的页面。

纠错
反馈