RequestDispatcher к JSP в том же пакете

Если у меня есть сервлет, я могу передать jsp в папке WebContent без проблем:

request.getRequestDispatcher("page.jsp").forward(request, response);

причем запросом является HttpServletRequest и ответ, являющийся HttpServletResponse.

Теперь для вопроса: Что, если я хочу использовать пакет функцией? Таким образом, переместите page.jsp в тот же пакет как мой класс сервлета так, чтобы все файлы для одной "функции" были в том же месте. Действительно ли это возможно?

1
задан knpwrs 21 July 2010 в 05:53
поделиться

2 ответа

Если у вас есть класс сервлета MyServlet в пакете foo, он будет доступен в WEB-INF / classes / foo / MyServlet. Теперь, если вы хотите иметь JSP в том же пакете, вам нужно, чтобы JSP находился в папке /WEB-INF/classes/foo/page.jsp. Затем вы можете перейти к JSP, например,

request.getRequestDispatcher("/WEB-INF/classes/foo/page.jsp").forward(request, response); 
2
ответ дан 2 September 2019 в 22:53
поделиться

Контейнеры JavaEE не будут обслуживать ресурсы из jar. Если бы вы хотели упаковывать по функциям, вам пришлось бы предварительно скомпилировать ваши JSP и поместить их в тот же пакет, что и другие сервлеты для вашей функции. Предположив, что вы это сделали, вы не сможете обслуживать любые статические ресурсы из jar, такие как изображения, css или javascript.

Если вы действительно хотите пофантазировать, я полагаю, вы можете написать сервлет общего назначения, который будет обслуживать ресурсы из jar. Но я полагаю, что это будет довольно сложно и быстро приведет к незначительному выигрышу.

0
ответ дан 2 September 2019 в 22:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: