Вместо пересылки в WEB-INF / head.jsp и помещения скриплетов, я бы хотел вместо этого переслать сервлету.
Это действительно возможно сделать (используя <jsp:include>
или небольшой скриптлет, который отправляет), но я не уверен, действительно ли это лучший подход.Сервлет будет либо писать напрямую в ответ, либо помещать в область запроса некоторые данные, которые JSP сможет получить позже.
Запись непосредственно в ответ сегодня немного спорна, и для другого подхода, который вы не используете.Сервлет вообще не нужен.
Идиоматическим способом является использование некоторого вспомогательного компонента, содержащего логику.Оригинальный сервлет, который вы упомянули, может поместить этот bean-компонент в область запроса или использовать тег <jsp:usebean>
.Ссылка на данные, подготовленные компонентом-помощником, с помощью языка выражений или очень простых скриптлетов.
Таким образом, сервлет может быть вызван только через include?
Если вы все еще хотите перейтина этом пути может быть возможность защитить сервлет за ролью, а затем дать head.jsp роль run-as в web.xml:
<servlet>
<servlet-name>headInclude</servlet-name>
<jsp-file>/WEB-INF/head.jsp</jsp-file>
<run-as>
<role-name>SYSTEM</role-name>
</run-as>
</servlet>
отказ от ответственности: я никогда не пробовалэто сам, просто указывая в возможном направлении.