2010-05-23 6 views
0

Я использую класс, который реализует Filter для моего jsp-материала. Это выглядит следующим образом:Использование фильтра для отображения определенной страницы?

public class MyFilter implements Filter 
{ 
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 
     throws IOException, ServletException 
    { 
     request.getRequestDispatcher("mypage.jsp").forward(request, response); 
    } 
} 

Так мишень, «mypage.jsp», просто сидит в моем каталоге верхнего уровня. Фильтр работает отлично, если я вхожу URLs как:

http://www.mysite.com/foo 
http://www.mysite.com/boo 

но если я вхожу слэш, я получаю 404:

http://www.mysite.com/foo/ 
http://www.mysite.com/boo/ 

HTTP ERROR: 404 
/foo/mypage.jsp 

RequestURI=/foo/mypage.jsp 

это кажется, если я введу слэш, то фильтр думает, что я хочу, чтобы искать mypage.jsp в подкаталоге обув или бу, но я действительно всегда хочу, чтобы просто найти его по адресу:

http://www.mysite.com/mypage.jsp 

, как я могу это сделать?

Спасибо

ответ

0

Сделать путь запроса диспетчеру абсолют - использовать "/mypage.jsp", а не "mypage.jsp". Затем ресурс разрешается из корня контекста webapp.

+0

Спасибо, что сработало! Я обнаружил, что мои файлы css и другие относительные ресурсы не могут быть решены, мне пришлось обновлять их пути в mypage.jsp, чтобы также использовать переднюю косую черту перед контуром, например «csspath =/mypage.css», а не «csspath = mypage» .css ", это нормально? Спасибо! – user246114

+0

Я рад, что он работает, но я не уверен, что это хорошая идея. Почему вы хотите разрешить пользователю вводить любой произвольный URL-адрес, который сопоставляется с корнем? – mdma

+0

Ну, я хочу поддержать что-то вроде twitter, где www.mysite/username обрабатывается одной страницей jsp, которая просто создает для них страницу. Я не могу создать настоящую папку для каждого пользователя, поэтому подумал, что этот тип «перезаписи URL» будет работать? Спасибо – user246114

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