- Внутри сервлета, если запрос является URL-адресом к файлу .jsp, я бы хотел, чтобы контейнер интерпретировал части JSP-сценариев part / taglib перед тем, как записать строку в ответ.
Нет прямого API, который обрабатывал бы файлы JSP программным способом. Теоретически, вы хотите, чтобы JSP находился в общедоступном веб-контенте, и пересылать запрос в JSP. Вы можете сделать это с RequestDispatcher#forward()
.
if (request.getServletPath().endsWith(".jsp")) {
request.getRequestDispatcher(request.getServletPath()).forward(request, response);
} else {
// Write "plain" to response as you did.
}
Возможно, вы захотите сделать только некоторые проверки правильности путей, но это должно, по крайней мере, дать вам общее представление. Однако есть небольшая проблема: сервлет будет вызываться рекурсивно, поскольку он сопоставлен с /*
. Вы бы предпочли заменить этот MyEverythingServlet
на Filter
, который просто делегирует остаток задания встроенному сервлету по умолчанию сервера приложений. Наличие Servlet
для прослушивания /*
уже является признаком запаха дизайна, что это должен был быть Filter
с самого начала;)
- Измените мой web.xml, чтобы он обрабатывал файлы .jsp за пределами MyEverythingServlet.
Вы не можете иметь "минус" url-pattern
в web.xml
. Лучшее, что вы можете сделать, это позволить сервлету прослушивать более специфичные url-pattern
, такие как *.txt
или /static/*
, и хранить там файлы JSP снаружи.