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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> servlet 
V
    Опции темы
desarrollo
Дата 14.11.2006, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Помогите разобраться.

Проблема с сервлетами.

Работаю на JBuilder 2006. Не смог создать с помощью InterliJ IDEA 5.1

Код

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

public class HelloServlet extends GenericServlet{
    public void service(ServletRequest request,
                        ServletResponse response)
            throws ServletException, IOException
    {
        response.setContentType("text/html");
        PrintWriter pw = response.getWriter();
        pw.println("<B>Hello!");
        pw.close();
    }
}


В IDEA не смог понять, как сделать web.xml. Понятно, что надо просто создать файл в редакторе и поместить его в WEB-INF. А что туда писать? Или какие есть средства в IDEA, чтобы создавался автоматически данный файлик? В  Builder'е проблем нет, он сам всё создаёт. 
И когда даже не зная как там всё это создаётся, скопировал просто web.xml которую сгенерировал билдер и поместил в IDEA, 
прокомпилировал, но он ничего не выдаёт. В чём проблема?
--------------------------------------------------------------------------------
Когда я дошёл до тега SERVLET он почему то не определяется, пишет что нет такого тега.
Код


<HTML>
<HEAD><TITLE>Times!</TITLE></HEAD>
<BODY>
The current time here is:
<SERVLET CODE=CurrentTime>
</SERVLET>
<P>
The current time in London is:
<SERVLET CODE=CurrentTime>
<PARAM NAME=zone VALUE=GMT>
</SERVLET>
<P>
And the current time in New York is:
<SERVLET CODE=CurrentTime>
<PARAM NAME=zone VALUE=EST>
</SERVLET>
<P>
</BODY>
</HTML>


 В книге написано что надо использовать Java Web Server, чтобы работал этот тег. Но я не нашёл где можно посмотреть какой сервер используется в Builder'e. Прочитал доки, всё что с этим связано, но ничего толкового для решения этой проблемы не нашёл. Помогите в этих вопросах. 

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


software saboteur
****


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

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



Модератор: Название темы должно отражать ее суть!
И используйте кнопку КОД, для оформления исходников.


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
_and
Дата 14.11.2006, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-developer
*


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

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



desarrollo, советую всё-таки взять какую-нить другую книжку и почитать про Java вообще и сервлеты
PM MAIL ICQ Jabber   Вверх
desarrollo
Дата 14.11.2006, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(powerOn @ 14.11.2006,  19:32)
Модератор: Название темы должно отражать ее суть!
И используйте кнопку КОД, для оформления исходников.

Почему тема не отражает сути вопроса? Всё критится возле темы сервлетов вот так и назвал тему
PM MAIL   Вверх
LSD
Дата 14.11.2006, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Цитата(desarrollo @  14.11.2006,  20:30 Найти цитируемый пост)
Почему тема не отражает сути вопроса? Всё критится возле темы сервлетов вот так и назвал тему

А также все написано на Java, так что тему можно назвать Java (как и 99% тем в этом разделе). Заголовок должен кратко описывать суть проблемы.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
batigoal
Дата 14.11.2006, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


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

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



Сказать по правде, я впервые слышу о теге SERVLET. Откуда это?


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Sherst
Дата 15.11.2006, 03:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Краткое теоретическое введение:


Сервлет является классом Java, который может быть загружен и выполнен специальным web-сервером, называемым контейнер сервлетов. В настоящее время существует большое множество таких контейнеров (Tomcat, Java Web Server и др). 
Итак, для начала необходимо скачать контейнер сервлетов ( я рекомендую Tomcat http://tomcat.apache.org/download-55.cgi) 

Когда будет идти первый запрос на сервлет, то сразу произойдет его загрузка контейнером сервлета. Далее сервлету передается запрос клента, сервлет его обрабатывает и возвращает результат контейнеру сервлетов, который уже в свою очередь отсылает ответ пользователю. После этого сервлет остается в памяти ожидая другие запросы, и будет выгружен лишь при нехватке памяти. Этим сервлеты превзошли на то время технологию CGI в которой каждый запрос порождал новый процесс.

Итак, после установки контейнера сервлетов, приступим непосредственно к созданию самого сервлета.
Можно выделить 5 шагов:

1.Написание кода сервлета:
Код

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.*;
import java.util.*;

public class FirstServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        Calendar cal = Calendar.getInstance();

        out.println("<HTML>");
        out.println("<HEAD><TITLE>Times!</TITLE></HEAD>");
        out.println("<BODY>");
        out.println("The current time here is:"+cal.getTime().toString());
        out.println("</BODY>");
        out.println("</HTML>");
    }
}



2. Компиляция кода.
3. Создание дескриптора развертывания (web-xml):
Код

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
    <servlet>
        <servlet-name>FirstServlet</servlet-name>
        <servlet-class>FirstServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>FirstServlet</servlet-name>
        <url-pattern>/servlet/FirstServlet</url-pattern>
    </servlet-mapping>
</web-app>

4. Запуск контейнера сервлетов.
5. Вызов сервлета из браузера.

У меня IDEA 4.5 

File - > New Project -> select module type (Web Module) -> Configure (Tomcat) ;
Справа появляется меню с тремя вкладками: (Packages, J2EE, Project). Выбираем J2EE -> WebModules -> Наш проект (на нем нажимаем правой кнопкой) -> New -> Servlet.

И повторяем все пункты описанные мною выше.

PS: не понятно чем JBuilder не устроил, я сам только им пользуюсь. ИМХО там все удобно и легко создается, кроме того есть встроенный Tomcat.
PM MAIL   Вверх
Kangaroo
Дата 15.11.2006, 04:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

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



Цитата(batigoal @ 14.11.2006,  23:10)
Сказать по правде, я впервые слышу о теге SERVLET. Откуда это?

Самому стало интересно smile Вот нашел тут.. кратко и понятно smile

Цитата

...
In web servers which provide complete servlet support, servlets may also be invoked by servers to help preprocess web pages, using Server Side Include functionality. The desire for this kind of preprocessing is indicated to web servers by special HTML syntax such as this, which is used in shtml files: 

    < SERVLET NAME=ServletName>
         < PARAM NAME=param1 VALUE=val1>
        < PARAM NAME=param2 VALUE=val2>
     If you see this text, it means that the web server
        providing this page does not support the SERVLET tag.
     Ask your Internet Service Provider to upgrade!
    < /SERVLET>
 
This style usage of the SERVLET tag indicates that a pre-configured servlet should be loaded and initialized (if that has not already been done), then invoked with a particular set of parameters. The output of that servlet is included directly in the HTML-formatted response. (Another invocation style allows passing initialization arguments to the servlet, and specifying its CLASS and CODEBASE directly.) 

The SERVLET tag could be used to insert formatted data such as the output of a web or database search, user-targeted advertising, individualized views of an on-line magazine, and more. Using these two facilities, HTML-aware servlets can generate arbitrary dynamic web pages. Typical servlets will accept input parameters from many sources, such as: 
- The input stream of a request, perhaps from an applet;  
- In the URI of the request;  
- From some other servlet or network service;  
- By using parameters passed from an HTML form.  

Those parameters will be used to generate HTML-formatted responses. The servlet will often consult one or more databases, or other data with which the servlet has been configured, when deciding the exact data to return with the response. 
...



--------------------
Lost....
PM MAIL MSN   Вверх
desarrollo
Дата 17.11.2006, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Sherst @ 15.11.2006,  03:41)
File - > New Project -> select module type (Web Module) -> Configure (Tomcat) ;
Справа появляется меню с тремя вкладками: (Packages, J2EE, Project). Выбираем J2EE -> WebModules -> Наш проект (на нем нажимаем правой кнопкой) -> New -> Servlet.


Проблема в том, что не выпадает Tomcat. Его надо добавить с помощью кнопочки add и выбрать Tomcat Server. Выпадает модальное окно для ввода Tomcat home и Tomcat base directory. Что я только туда не пихал, и Tomcat.jar  из JAVA-HOME/jre/plug-ins/tomcat/lib, прописывал уже путь к отдельно установленному Tomcat   C:\Program Files\Apache Software Foundation\Tomcat 5.5\server\lib. Пишет Could not find directory '{0}' Что такое? Тормозит всю работу с сервлетами. Не устривает меня JBuilder, потому что надо всё уметь настраивать ручками, просто использую для начала, так немного легче.
PM MAIL   Вверх
Sherst
Дата 17.11.2006, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А такой путь: C:\Program Files\Apache Software Foundation\Tomcat 5.5

Добавлено @ 11:16 
Проверь чтоб такой путь существовал smile
PM MAIL   Вверх
desarrollo
Дата 18.11.2006, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Подсоединил томкат, получилось smile

Сделал всё как Вы написали. Пошагово. Сначала забил код, откомпилил его с помощью Ctrl-Shift-F9, поместил в папочку WEB-INF/web.xml тот код. Запкстил опосля Tomcat C:\Program Files\Apache Software Foundation\Tomcat 5.5\bin\tomcat5.exe. 

Теперь как эту прогу запустить в броузере? Я прописал http://localhost:8080/servlet/FirstServlet/ 
попробовал http://localhost:8080/FirstServlet/ - не работает


Кстати дальше я не понял, где это

"Справа появляется меню с тремя вкладками: (Packages, J2EE, Project). Выбираем J2EE -> WebModules -> Наш проект (на нем нажимаем правой кнопкой) -> New -> Servlet.",

где я ни искал, не смог найти эту менюшку с вкладками (Packages, J2EE, Project)
PM MAIL   Вверх
batigoal
Дата 18.11.2006, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


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

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



А тыт точно сделал
Цитата(Sherst @  15.11.2006,  04:41 Найти цитируемый пост)
File - > New Project -> select module type (Web Module) ->
?



--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
desarrollo
Дата 18.11.2006, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(batigoal @ 18.11.2006,  10:42)
А тыт точно сделал
Цитата(Sherst @  15.11.2006,  04:41 Найти цитируемый пост)
File - > New Project -> select module type (Web Module) ->
?

Да я сделал именно так
PM MAIL   Вверх
Sherst
Дата 19.11.2006, 02:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ок, тогда детализирую:


После установки Tomcat можно просмотреть струтуру файлов и папок которые находятся в нашем случае здесь C:\Program Files\Apache Software Foundation\Tomcat 5.5\  (т.н. домашний каталог CATALINA_HOME)
Среди множества папок нас интересует папка с названием webapps. Так вот, сюда можно кидать свои web-приложения.

Сделаем все пошагово:
1) Внутри webapps создадим папку с произвольным названием, н-р MyServlet
2) Внутри MyServlet создадим папку WEB-INF;
3) Внутри WEB-INF создадим папку classes
4) Копируем в папку classes откомпилированный сервлет FirstServlet.class
5) Копируем в папку WEB-INF файл web.xml
6) Запускаем Tomcat и проверяем его на работоспособность в адресной строке браузера вводим: http://localhost:8080/
должна появиться стартовая страница Tomcata.
7) Если все прошло нормально то вводим строку http://localhost:8080/MyServlet/servlet/FirstServlet

PM MAIL   Вверх
Sherst
Дата 19.11.2006, 02:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Еще один более короткий путь:
делаем шаг 1, затем заходим в каталог нашего проекта на IntelijIDEA и копируем содержимое папки exploded в папку MyServlet.
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.1179 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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