【发布时间】:2010-11-27 01:27:58
【问题描述】:
在 doGet()/doPost() 我有一个 servlet 中:
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/pages/view.jsp");
dispatcher.forward(request, response);
由于 jsp 的路径与当前请求无关,并且 RequestDispatcher 是从 servlet 上下文中获得的,我可以在多个请求中重用同一个调度程序对象吗
这样
RequestDispatcher dispatcher 成为实例变量
init()有
dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/pages/view.jsp");
和doGet()/doPost() 只是有
dispatcher.forward(request, response);
这样做的原因是为每个请求节省RequestDispatcher 的构造(/查找)成本。如果服务器实现已经缓存了对象并通过url为每个getRequestDispatcher()调用查找dispatcher,这可能真的不重要,但是通过在init的代码中获取对dispatcher的引用,我们可以节省查找成本也是。
还想知道这是否是线程安全的,因为每次都会使用相同的调度程序对象?
【问题讨论】: