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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Способы запуска сервлета? 
:(
    Опции темы
antit
Дата 12.11.2008, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Тема видимо не новая, но...

Есть банальный сервлет HelloWorld
Код

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloWorld extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException
    {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Hello World!</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>Hello World!</h1>");
        out.println("</body>");
        out.println("</html>");
    }
}



есть web.xml следующего содержания
Код

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         version="2.5">  
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>HelloWorld</servlet-name> 
  <url-pattern>/test</url-pattern> 
  </servlet-mapping>
</web-app>  


В качестве контейнера сервлета используется Tomcat 6.0.18
Разместил сервлет в папке app

Вызываю сервлет http://localhost:8080/app/test
отрабатывается нормально...

Вопрос в следующем. Покапался в литературе. Оттуда следует, что web.xml необязателен, вызов сервлета в таком случае 
http://localhost:8080/app/servlet/HelloWorld
Но этот вариант не проходит: HTTP Status 404

Еще вариант использовать web.xml без <servlet-mapping>. Вызвать сервлет можно по его имени. В моем случае это тоже
http://localhost:8080/app/servlet/HelloWorld
результат тот же HTTP Status 404

Пример в книге рассматривался для Tomcat 4.x Спецификация сервлетов 2.3

Может спецификация 2,5 устанавливает какие-то новые правила в этом плане?
 
Подскажите, пожалуйста: обязателен ли дескриптор развертывания? если да - то обязательно ли нужно использовать карту сервлета? как еще можно вызвать сервлет из адресной строки браузера?
PM MAIL   Вверх
PashaOvechkin
Дата 12.11.2008, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 1.4.2007
Где: Riga, Latvia

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



не знаю kак на счет без веб.хмл, но в 
<servlet-class> теге нужно прописать полный путь на сервлет. 

в Твоём случае ето вдимо так :
Код

<servlet-class>servlet.HelloWorld</servlet-class>


Это сообщение отредактировал(а) PashaOvechkin - 12.11.2008, 14:15
PM MAIL Skype   Вверх
antit
Дата 12.11.2008, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(PashaOvechkin @ 12.11.2008,  14:14)
не знаю kак на счет без веб.хмл, но в 
<servlet-class> теге нужно прописать полный путь на сервлет. 

в Твоём случае ето вдимо так :
Код

<servlet-class>servlet.HelloWorld</servlet-class>

нет... не отработало без карты сервлетов
а с картой:
HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Wrapper cannot find servlet class servlet.HelloWorldExample or a class it depends on
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:857)
    org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:565)
    org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1509)
    java.lang.Thread.run(Unknown Source)

root cause

java.lang.ClassNotFoundException: servlet.HelloWorldExample
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:857)
    org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:565)
    org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1509)
    java.lang.Thread.run(Unknown Source)

скорее всего, твой вариант пройдет если этот класс разместить в classes\servlet 


Это сообщение отредактировал(а) antit - 12.11.2008, 14:55
PM MAIL   Вверх
PashaOvechkin
Дата 12.11.2008, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 1.4.2007
Где: Riga, Latvia

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



Ну я предположил что твой сервлет находится именно в  src/servlet/HelloWorld.
Укажи в <servlet-class> верный путь к сервлету.



PM MAIL Skype   Вверх
antit
Дата 12.11.2008, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(PashaOvechkin @ 12.11.2008,  15:51)
Ну я предположил что твой сервлет находится именно в  src/servlet/HelloWorld.
Укажи в <servlet-class> верный путь к сервлету.

нет... 
я не создаю пакеты...
тупо файл HelloWorld.java
компилирую javac c параметром  -classpath для использования servlet-api.jar
скомпилированный файл располагаю в заранее озданную структуру каталогов.
Все...
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.0427 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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