gpt4 book ai didi

java - 如何使用棘手的重定向从一个 servlet 重定向到另一个 servlet?

转载 作者:行者123 更新时间:2023-12-01 23:17:46 24 4
gpt4 key购买 nike

如果我有两个 servlet:

@WebServlet (urlPatterns = {"/s1"})
public class Servlet1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {

Map<String, Integer> map = new HashMap<String, Integer>();
map.put("A", 100);
map.put("B", 200);
map.put("C", 300);

req.setAttribute("map", map);
getServletContext().getRequestDispatcher("Servlet2").forward(req, resp);
}
}

public class Servlet2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
Map map = (Map) req.getAttribute("map");

for (Object o : map.values()) {
System.out.println(o);
}
}
}

如何在它们之间进行重定向?我需要在 getRequestDispatcher 方法中使用哪个路径?还有一个条件 - Servlet2 必须在注释或 web.xml 中没有任何映射。

最佳答案

Servlet2 must be without any mapping in annotations or in web.xml.

那么您就不能使用HttpServletRequest#getRequestDispatcher(String),它是检查这些映射的容器管理方法。

这个条件很荒谬,毫无意义。如果您不打算使用 Servlet 容器,请不要创建 Servlet。创建一个执行您需要的操作的服务类。您不需要将所有内容都设为 Servlet

您唯一的(荒谬的)替代方案是实例化 Servlet2 并显式调用其 doGet 方法。

关于java - 如何使用棘手的重定向从一个 servlet 重定向到另一个 servlet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20958755/

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