gpt4 book ai didi

java - 重用RequestDispatcher对象

转载 作者:行者123 更新时间:2023-12-01 15:59:34 33 4
gpt4 key购买 nike

在 servlet 中的 doGet()/doPost() 中,我有:

RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/pages/view.jsp");
dispatcher.forward(request, response);

由于jsp的路径与当前请求无关,并且RequestDispatcher是从servlet上下文中获取的,我可以在多个请求中重用相同的调度程序对象吗这样RequestDispatcher 调度程序 成为实例变量

init()

dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/pages/view.jsp");

doGet()/doPost() 只是有

dispatcher.forward(request, response);

这样做的原因是为了节省每个请求的 RequestDispatcher 的构造(/查找)成本。如果服务器实现已经缓存了对象并通过每个 getRequestDispatcher() 调用的 url 查找调度程序,那么这可能并不重要,而是通过在 init 中的代码中获取对调度程序的引用,我们也可以节省查找的成本。

还想知道这是否是线程安全的,因为每次都会使用相同的调度程序对象?

最佳答案

它应该是线程安全的,但是某些 servletcontainer 品牌/版本不是线程安全的。例如,在 Apache Tomcat 中,它不是线程安全的,直到他们在版本 6.0.8 中修复它。

我会将这种方法归入“过早优化”类别。我不会那样做。

关于java - 重用RequestDispatcher对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4287272/

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