2010-08-05 2 views
5

(Должно быть легко одно-)
как перенаправить URL на JSP в web.xml

Как можно перенаправить все адреса из шаблона болтовня * .js в моей конкретной JSP.
это будет дополнением к моей web.xml работы:

<servlet-mapping> 
     <servlet-name>MySpecific.jsp</servlet-name> 
     <url-pattern>yada*.js</url-pattern> 
</servlet-mapping> 

или, возможно, я должен использовать javax.servlet.Filter для этой цели?

ответ

11

Я бы бросил эти файлы в папку с именем /yada, а затем воспользуюсь url-pattern из /yada/*.

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


Update: в соответствии с вашим обновления, вы на самом деле есть второй вопрос, который не был непосредственно видно из вашего первоначального вопроса: «Как объявить файл JSP в сервлет» . Ответ: используйте <jsp-file> вместо <servlet-class>.

<servlet> 
    <servlet-name>foo.jsp</servlet-name> 
    <jsp-file>/foo.jsp</jsp-file> 
</servlet> 
<servlet-mapping> 
    <servlet-name>foo.jsp</servlet-name> 
    <url-pattern>/foo/*</url-pattern> 
</servlet-mapping> 

Тем не менее, как указано в комментариях, это не лучшая практика. Это пахнет необработанным Java-кодом в JSP-файле, который должен быть равен avoid.

+0

, но может ли атрибут servlet-name напрямую обращаться к файлу jsp, а не к сервлету? – Spiderman

+0

О, я думал, у вас уже есть '' для этого. Нет, вы не можете сделать это в одиночку. Используйте '' вместо '' в '', и это сработает. Однако это не рекомендуется. JSP - неправильный инструмент для этого. Необработанный код Java в JSP следует избегать (http://stackoverflow.com/questions/3177733/howto-avoid-java-code-in-jsp-files) во всех аспектах. – BalusC

+0

Мы не знаем, использует ли он исходный код java (я думаю, что это не так) – helios

1

В зависимости от сервера все, что вы можете добавить в url-шаблон, очень ограничено.

Два действительны:

  • абсолютный путь (без маски)
  • * .ext

Так что спецификация не соответствует. Я бы использовал фильтр.

PS: не забудьте указать <% page sourceEncoding = ... contentType = ...%> в генерации JSP :). И контент-тип должен включать charset = xxxxx

+0

нормально, но как отправить JSP из фильтра. Я должен вызвать «chain.doFilter()» после команды forward или раньше. и мне нужно называть его, если pattarn был найден или только если шаблон не был найден – Spiderman

+0

Я продолжаю эту тему в http://stackoverflow.com/questions/3415240/forward-request-from-a-filter , так как я в настоящее время не может писать больше, чем комментарий в этом потоке, и проблема еще не решена – Spiderman

Смежные вопросы