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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос о getServletConfig() 
V
    Опции темы
Looser
Дата 30.1.2006, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день.
Я только начал изучать j2ee
Ситуация такая:
Мне нужно вывести на страницу информацию о сервере.
я делаю так:
out.println(getServletConfig().getServletContext().getServerInfo());
я понимаю, что это можно сделать по-другому, но всё же...
getServletConfig() возвращает null, и, ессно, выбрасывается NullPointerException....
Как же получить доступ к контексту?

Спасибо за ответ
PM MAIL   Вверх
kkorsakoff
Дата 31.1.2006, 02:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Как вы вызываете ваш сервлет? Приведите урл пожалуйста. Если мне не изменяет память, то вызов в invoker-style не дает доступа к ServletConfig, т.к. его конфига фактически не существует. Вызов в Invoker-style - это

http://www.myserver.com/servlet/...

Необходимо прописать в web.xml мэппинги (урл-отображения) для вашего сервлета. Приведите содержимое web.xml тоже.

Это сообщение отредактировал(а) kkorsakoff - 31.1.2006, 02:34
PM MAIL WWW ICQ   Вверх
Looser
Дата 31.1.2006, 08:58 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



фрагмент web.xml:
Код
<servlet>
        <display-name>FirstServlet</display-name>
        <servlet-name>FirstServlet</servlet-name>
        <servlet-class>mypackage.FirstServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>FirstServlet</servlet-name>
        <url-pattern>/FirstServlet</url-pattern>
    </servlet-mapping>

Вызываю через форму
Код
<form action = "FirstServlet" method = "post">...

PM MAIL   Вверх
kkorsakoff
Дата 1.2.2006, 01:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Не могу угадать поведение томкэта при одинаковом имени сервлета и его маппинга, попробуй хотя бы так:
Код

    <servlet>
        <display-name>someservlet</display-name>
        <servlet-name>someservlet</servlet-name>
        <servlet-class>mypackage.FirstServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>someservlet</servlet-name>
        <url-pattern>/FirstServlet</url-pattern>
    </servlet-mapping>


<form> оставь ту же.

По-крайней мере у меня больше вариантов нет, почему конфиг может == null.

Это сообщение отредактировал(а) kkorsakoff - 1.2.2006, 03:29
PM MAIL WWW ICQ   Вверх
onsh76
Дата 1.2.2006, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Looser @ 30.1.2006, 21:46)
...
out.println(getServletConfig().getServletContext().getServerInfo());
я понимаю, что это можно сделать по-другому, но всё же...

Как же получить доступ к контексту?

По замыслу тех кто проектировал сервлеты, каждый сервлет - потомок класса GenericServlet (будь то HttpServet или еще какая-нить имплементация, ну скажем сервлет имплементирующий WAP протокол) - имеет доступ к обьектам:
- servletContext (defined and implementation is provided by GenericServlet class) ;
- servletConfig ( definition is provided by Servlet interface, implementaion is provided by GenericServlet class).

Отвечаю на вопрос как получить доступ к контексту:

Ниже два варианта как распечатать то, что Вам нужно:

Код

1. out.println(getServletContext().getServerInfo());

2. out.println(getServletConfig().getServletContext().getServerInfo());


Второй вариант как видите - это Ваш рабочий код, который прекрасно работает.
Но он несколько длиннее первого.

PM MAIL   Вверх
Looser
Дата 1.2.2006, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



2 kkorsakoff: исправил, как вы говорили, но по-прежнему getServletConfig() возвращает null.

2onsh76: Почему то мой "рабочий" код не "прекрасно" работает, а выбрасывает NullPointerException в строке out.println(getServletConfig().getServletContext().getServerInfo());
Вывел отдельно: out.println(getServletConfig()); - напечатал null... smile
PM MAIL   Вверх
onsh76
Дата 1.2.2006, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Looser @ 1.2.2006, 10:41)
2onsh76: Почему то мой "рабочий" код не "прекрасно" работает, а выбрасывает NullPointerException в строке out.println(getServletConfig().getServletContext().getServerInfo());
Вывел отдельно: out.println(getServletConfig()); - напечатал null... smile

Какой сервак?

Приведи код сервлета и web.xml. Плюс чего набираем в браузере. А то так долго гадать будем на кофейной гуще. smile

Если вызывать сервлетконфиг в конструкторе твоего сервлета - то это рановато. ServletConfig доступен только после того как контейнер сделает вызов метода init() (или init(ServletConfig), более ранняя версия сервлет спекс.).
PM MAIL   Вверх
Looser
Дата 1.2.2006, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всё, понял...

Проблема была в том, что eclipse создал метод init(ServletConfig config), а не init()...
В этом случае config был равен null..

исправил на init() и всё норм...
Всем спасибо...

Это сообщение отредактировал(а) Looser - 1.2.2006, 14:10
PM MAIL   Вверх
onsh76
Дата 1.2.2006, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Looser @ 1.2.2006, 13:37)
Всё, понял...

Проблема была в том, что eclipse создал метод init(ServletConfig config), а не init()...
В этом случае config был равен null..

Бывает smile

Рад был помочь...
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.0500 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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