当前位置: 首页 > 知识库问答 >
问题:

getRequestDispatcher()和forward()方法是如何工作的?

齐鹏程
2023-03-14

我正在使用JSP、JSTL和Java servlet创建登录/注册页面,并且在servlet的doPost()方法中使用:

request.setAttribute("message", "invalid login");
request.getRequestDispatcher("index.jsp").forward(request, response);

当用户从索引中输入无效的登录凭据时发出警报。jsp。

这是有效的,但我不知道为什么有效;以下是我的问题:

>

据我所知,我正在将请求和响应对象转发到索引。但是jsp页面如何处理这些对象呢?它是一堆html,响应对象也会被修改,以便包含索引的所有html代码。jsp?

为什么getResestDispatcher()是一个实例方法?也就是说,为什么不能使用构造函数创建请求调度对象?

非常感谢。

共有1个答案

佴英奕
2023-03-14

>

  • HttpServletRequest一直传递,直到最终处理响应为止。也就是说,当呈现JSP时,请求对象仍然可用。这就是在整个请求处理过程中传递任意数据的方式。

    JSP文件被编译成自定义servlet,用于将HTML写入响应。

    RequestDispatcher是根据请求创建的,因为它需要了解servlet环境。否则它就不知道如何发送任何东西。

  •  类似资料:
    • kubectl公开可用于为应用程序创建服务的命令,并分配IP地址以从internet访问该服务。 据我所知,要访问库伯内特斯集群中的任何应用程序,应该创建一个服务资源,并且应该具有可以从外部网络访问的IP地址。 但是,在端口转发的情况下,kubectl如何在没有外部可访问的IP地址的情况下创建到应用程序的连接?

    • RequestDispatcher 接口的 forward 方法,只有在没有输出提交到向客户端时,通过正在被调用的 servlet 调用。如果响应缓冲区中存在尚未提交的输出数据,这些数据内容必须在目标 servlet 的 service 方法调用前清除。如果响应已经提交,必须抛出一个 IllegalStateException 异常。 请求对象暴露给目标 servlet 的路径元素(path el

    • 我目前有大量的情况需要验证页面(及其所有元素)是否正确显示。WebElement的方法似乎是实现这一目的的合理方法,但是我想确切地理解这个方法是如何确定元素是否“显示”的。javadoc对该方法的内部工作方式没有任何了解,而web上的其他信息充其量也是稀疏的。 如果有人能提供这种方法如何工作的详细描述,我将不胜感激。

    • 两者都是具有相同签名的实例方法。为什么一个有效,另一个无效?

    • 我正在Scala 3中运行以下代码。x、 据我所知,它应该返回True,因为Int根据Scala文档扩展了AnyVal。 在Java中,下面的代码打印为true,这是可以理解的。

    • 我试图通过Sonar ut ant JaCoCo runTests示例了解JaCoCo和Sonar是如何协同工作的:https://github.com/SonarSource/sonar-examples/blob/master/projects/code-coverage/ut/ant/ut-ant-jacoco-runTests/build.xml 我在本地机器上安装声纳,默认配置。然后,我