gpt4 book ai didi

java - getRequestDispatcher() 和forward() 方法如何工作?

转载 作者:太空宇宙 更新时间:2023-11-04 11:43:09 24 4
gpt4 key购买 nike

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

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

当用户从index.jsp 输入无效的登录凭据时提醒用户。

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

  1. 为什么在请求对象而不是响应对象上调用 setAttribute()?

  2. 据我了解,我将请求和响应对象转发到index.jsp,但是jsp页面如何处理这些对象呢?这是一堆html,那么response对象是否被修改,使其包含index.jsp的所有html代码?

  3. 为什么 getRequestDispatcher() 是一个实例方法?也就是说,为什么不能使用构造函数创建RequestDispatcher对象?

谢谢。

最佳答案

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

  2. JSP 文件被编译为将 HTML 写入响应的自定义 servlet。

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

关于java - getRequestDispatcher() 和forward() 方法如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42603155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com