Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Все через один сервлет "/*", как достучаться ко всему остальному 
:(
    Опции темы
Klio
Дата 7.2.2013, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 18.4.2008
Где: Харьков - СС_3

Репутация: 1
Всего: 1



Здравствуйте господа программисты!
У меня такая загвоздка...
--- Есть servlet - Index.java  ----  @WebServlet({"/*"})
 а значит все запросы идут через него... 
(Знаю что изобретаю свой велосипед типа FrontController, но всёже)
И здесь два вопроса:
1) запрос к ресурсам типа рисунки, стили, скрипты из соответствующих папок (/images/*,/style/*.css и /js/*.js) воспринимаются как запросы ( к примеру "/images/logo.jpg") к этому же сервлету, что можно сделать чтобы данные запросы шли на прямую,а не через сервлет, или же шли но возвращали при этом, указанный в запросе, ресурс?
2) после обработки запроса используется:
Код

RequestDispatcher dispatcher = getServletContext()
                   .getRequestDispatcher("/WEB-INF/jsp/error.jsp?");
    dispatcher.forward(request, response);
или request.getRequestDispatcher(/WEB-INF/jsp/error.jsp?").forward(request,response);

На этой процедуре он зацикливается... так как обращение идёт на этот же сервлет с новым параметром который естевственно неправильный при его разборе, и приводит к вызову страницы error.jsp

Что нужно исправить?
Заранее спасибо...
PM MAIL ICQ   Вверх
mbasil
Дата 7.2.2013, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 399
Регистрация: 4.5.2007
Где: Москва

Репутация: 9
Всего: 13



В Struts для этого используется суффикс.
Строка, начинающаяся с префикса *. и последующим суффиксом используется  для отображения в данный сервлет любого URL, содержащего указанный суффикс. 
Например, если  <servlet-mapping>  будет описан так:

Код

<servlet-mapping> 
    <servlet-name>myServControkker</servlet-name> 
    <url-pattern>*.do</url-pattern> 
</servlet-mapping>


то URL  http://localhost:8089/u61/ka-ka.do, отпраит на контроллер,
а без суффикса по другому адресу.
PM MAIL   Вверх
Pawl
Дата 7.2.2013, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 649
Регистрация: 22.4.2008
Где: Витебск

Репутация: 3
Всего: 28



Цитата(mbasil @  7.2.2013,  16:50 Найти цитируемый пост)
В Struts для этого используется суффикс.

Несколько противоречит желанию автора - он же дал понять, что хочет сделать фронт-контроллер. По сабжу.
1) Попробуйте (я так делал для css) сделать такой маппинг по дефолту в web.xml:
Код

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.css</url-pattern>
    </servlet-mapping>

а на нужной странице в заголовок (head) добавить код:
Код

<link rel="stylesheet" href="myStyle.css" type="text/css"/>
 где myStyle.css - собственно css-файл (он у меня был в той же папке, что и jsp)
2) на error.jsp я направлял из сервлета запросы так:
Код

    private void jump(String url, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        RequestDispatcher rd = getServletContext().getRequestDispatcher(url);
        rd.forward(request, response);
    }

    private void jumpError(Throwable error, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setAttribute("error", error);
        jump("/error.jsp", request, response);
    }

при этом error.jsp у меня находилась не в WEB-INF, a в корневой папке приложения

Это сообщение отредактировал(а) Pawl - 7.2.2013, 20:01


--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0396 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.