Yujin Опубликовано 8 января, 2004 Жалоба Share Опубликовано 8 января, 2004 ОЛЛ!!! Кто балуется с субжем, есть такие??? Ссылка на комментарий Поделиться на другие сайты More sharing options...
Matrix Опубликовано 8 января, 2004 Жалоба Share Опубликовано 8 января, 2004 Yujin есть такие Ссылка на комментарий Поделиться на другие сайты More sharing options...
Yujin Опубликовано 8 января, 2004 Автор Жалоба Share Опубликовано 8 января, 2004 Matrix Нужна инфа про апплеты и сервлеты... и вообще... объясните кто нибудь на пальцах логику этой самой Явы... ну совсем не идет стерва... Добавлено: В яндекс не отсылать :-) нарыл уже все что смог, нужно что нибудь посущественней... Ссылка на комментарий Поделиться на другие сайты More sharing options...
Matrix Опубликовано 8 января, 2004 Жалоба Share Опубликовано 8 января, 2004 Yujin чё именно надо тебе??? Ссылка на комментарий Поделиться на другие сайты More sharing options...
Yujin Опубликовано 8 января, 2004 Автор Жалоба Share Опубликовано 8 января, 2004 Matrix нужно сделать апплет, (Borland JBuilder 5, 7), который бы в полях редактирования при загрузке либо по нажатию кнопки, в ТекстЕдитах, показывал параметры окружения, т.е. IP адрес обратившегося к апплету пользователя, ЮзерАгент, и т.д... Мне нужно создать небольшую, довольно простенькую на первый взгляд систему так сказать слежения, или сбора статистики обращения пользователей к некому сайту. На котором в каждой HTML страничке, встроен Applet, который в свою очередь смотрит все параметры пользователя, такие как адрес, реферы, хедеры, и прочие юзерагенты... У меня это легко реализовалось путем создания Servlet. Но здесь как раз нужен Applet. Вот на этом и заступорился. Не получается тоже самое сделать в Апплете... Может сделать две части, т.е. сервлет слушает, апплет передает параметры о новом подключении сервлету и в свою очередь отвечает апплету о подключенном пользователе... но как это реализовать... вот проблема, опыта в построении Интерент приложений так сказать на низком уровне :-) у меня небыло... да и Логика языка Java, немного отличается от C++ ИМХО... да и в принципе построением приложений... так что... буду рад любым предложениям и советами... ЗЫ И если можно, то подскажите ссылочки или примеры, где реализованно подобное... Regards Yujin. В страницах на сайте встроен апплет, который получает в себя все сведения о пользователе, обратившемуся к страницам на этом сайте, после чего, сбрасывает все эти сведения в БД.. MySQL или InterBase. Администратор в свою очередь (тоже видимо Апплетом делать... хотя можно как раз здесь и Сервлет прикрутить) просматривает все текущие подключения/обращения к страницам/серверу :-))) т.е. в результате всех этих плясок, должно получится нечто похожее на сбор и анализ статистики обращений к тем или иным страничкам на сервере... вот такая крякозябла... Честно сказать с Явой и в частности с JBuilderом я столкнулся вот как раз месяц назад... средствами C++ Builder и Delphi здесь необойдешься... вот и извращаюсь... Может чего дельного посоветуете??? А то даже я на сигареты Ява Легкая перешел :-)))) Бросаю свои сырцы... это все, что я наковырял... может посоветуете или подскажите что дальше.... package viewstat; import java.awt.*; import java.awt.event.*; import java.applet.*; import java.net.InetAddress; import java.net.URL; import javax.swing.*; /** * Нужно отобразить: * 1. IP Address + показывает * 2. Remote Host - * 3. Remote User - * 4. User Agent - * 5. Remote Port - * 6. HTTP Referer - * 7. HTTP Headers - * 8. //---------- */ public class StatApp extends Applet { String IPAddress; boolean isStandalone = false; JTextField tfIPAddress = new JTextField(); JTextField tfRemoteHost = new JTextField(); JButton btnShow = new JButton(); /**Get a parameter value*/ public String getParameter(String key, String def) { return isStandalone ? System.getProperty(key, def) : (getParameter(key) != null ? getParameter(key) : def); } /**Construct the applet*/ public StatApp() { } /**Initialize the applet*/ public void init() { try { IPAddress = InetAddress.getLocalHost().getHostAddress(); jbInit(); } catch(Exception e) { IPAddress = "IP не может быть прочитан!"; e.printStackTrace(); } } /**Component initialization*/ private void jbInit() throws Exception { tfIPAddress.setBounds(new Rectangle(8, 6, 153, 21)); this.setLayout(null); tfRemoteHost.setBounds(new Rectangle(8, 32, 154, 21)); btnShow.setText("Показать"); btnShow.setBounds(new Rectangle(74, 60, 88, 27)); btnShow.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { btnShow_actionPerformed(e); } }); this.add(tfIPAddress, null); this.add(tfRemoteHost, null); this.add(btnShow, null); } /**Get Applet information*/ public String getAppletInfo() { return "Applet Information"; } /**Get parameter info*/ public String[][] getParameterInfo() { return null; } void btnShow_actionPerformed(ActionEvent e) { tfIPAddress.setText(IPAddress); } } ЗЫ Заготовки, и прочие шаблоны - Borland JBuilder 5 Ent. В догонку: ---------- Прбывал делать компонентами IPWorks... но кроме имени машины ничего выдрать существенного не удалось... может просто не правильно выдергиваю ipworks.http ipworks.ipinfo ipworks.ipport вот в общемто вот эти 3 компонента использовал... Remote Host и Remote User - с точки зрения сервера RemoteHost - имя машины, с которой открывается страничка с апплетом. RemoteUser - имя пользователя, от которого произошла сессия UserAgent - понятно, это какой браузер у пользователя RemotePort - порт на котором крутится сервер (80 или 8080), значит это тот порт к которому подключается клиент а что касаемо HTTP Headers я могу использовать в апплете класс javax.servlet.http.*; ??? я пробывал это делать, но что то не выходит Может по другому как.... А интересуют заголовки, передаваемые от сервера к клиенту. ЛЮБАЯ форма Oracle Forms 9i работающая на сервере приложений управляется аплетом (довольно сложным). Проблемы и сомнения. Есть желание написать нечто подобное полностью на Java с перераспределением обязанностей сервера и клиента. Ошибится в начале пути совсем не хочется, поэтому и переспрашиваю. Если есть возможность подсказать ссылку на пример кода с использованием applet->HTTP->Servlet было бы здорово PS Это выдержки небольшие из одного формума, где я этот вопрос поставил так сказать... вот... в принципе там все описано что нужно.... дальше идет просто обсос короче говоря... ни на чем толковом мы с учавствующими в диалоге не сошлись... может здесь кто че нить подскажет??? Ссылка на комментарий Поделиться на другие сайты More sharing options...
Matrix Опубликовано 8 января, 2004 Жалоба Share Опубликовано 8 января, 2004 проехали Ссылка на комментарий Поделиться на другие сайты More sharing options...
Yujin Опубликовано 8 января, 2004 Автор Жалоба Share Опубликовано 8 января, 2004 Matrix ??? Ссылка на комментарий Поделиться на другие сайты More sharing options...
Matrix Опубликовано 8 января, 2004 Жалоба Share Опубликовано 8 января, 2004 Yujin я думал ты что сотовый. а ты про язык Java/ ищи другого чела Ссылка на комментарий Поделиться на другие сайты More sharing options...
Smile Опубликовано 8 января, 2004 Жалоба Share Опубликовано 8 января, 2004 Yujin буду рад любым предложениям и советами.. =))) мне вот взволновал один вопрос, а где все вышеописанное применяется? для кого? в какой организации??? просто интересно, где это в астрахани так мутят * Нужно отобразить: * 1. IP Address + показывает * 2. Remote Host - * 3. Remote User - * 4. User Agent - * 5. Remote Port - * 6. HTTP Referer - * 7. HTTP Headers - что-то мне подсказывает =)), что все это можно сделать другими средствами без джавы, аплетов и сервлетов, и спокойно писать все эти данные в БД скажи, зачем такие заморочки??? я, конечно, почти ничего не знаю о джава, но, все время думал, что взаимодействие аплетов и сервлетов обычно используют для более сложных задач, а не для сбора такой инфы Ссылка на комментарий Поделиться на другие сайты More sharing options...
jnc Опубликовано 8 января, 2004 Жалоба Share Опубликовано 8 января, 2004 Smile да это, наверно, просто лаба какая-нить по информатике.. :-)) Ссылка на комментарий Поделиться на другие сайты More sharing options...
Smile Опубликовано 8 января, 2004 Жалоба Share Опубликовано 8 января, 2004 jnc возможно, если надо получить только * 1. IP Address + показывает * 2. Remote Host - * 3. Remote User - * 4. User Agent - * 5. Remote Port - * 6. HTTP Referer - * 7. HTTP Headers - и больше ничего хотя судя по постингу - это совсем не лаба Ссылка на комментарий Поделиться на другие сайты More sharing options...
Marik Опубликовано 8 января, 2004 Жалоба Share Опубликовано 8 января, 2004 Крайне резонно замечание Smile - а зачем тут Java? Только что если задача на самом деле крупнее, а ты пока только первую её часть пытаешься делать... Сам я на яве хоть и прогал, но подобным не приходилось заниматься... Если надо, то идеология явы оч проста. Написанный код полукомпилируется (т.е. компилируется в комманды некоего абстрактного процессора), на машине на которой запускается апплет должна быть JVM (Java Virtual Machine) - она преобразовывает команды явы в команды конкретного проца (ну и системы в целом). Это первая фишечка. А вторая в том, что ява "полностью защищённый язык" (по словам создателей оной). Т.е. программист не может получить доступ к физическому адресу в памяти или доступ к диску (если пишется аплет, по крайней мере). Я конечно описал самые основы, но если тебя что-то более конкретное в идеологии явы интересовало, то пиши... Ссылка на комментарий Поделиться на другие сайты More sharing options...
Yujin Опубликовано 9 января, 2004 Автор Жалоба Share Опубликовано 9 января, 2004 Smile мне вот взволновал один вопрос, а где все вышеописанное применяется? для кого? в какой организации??? просто интересно, где это в астрахани так мутят Мутят мутят... еще не так я бы сказал мутят :-)))) что-то мне подсказывает =)), что все это можно сделать другими средствами без джавы, аплетов и сервлетов, и спокойно писать все эти данные в БД В том то и дело.. я же писал что стандартными средствами т.е. C++ Builder & Delphi здесь не прокатит... и ИнтерБаз не поможет :-))) именно и нужно на Яве... этож не я придумал себе сам такую задачу...выж понимаете... еслиб не возникало вопроса я бы и флейм не разводил... верно? скажи, зачем такие заморочки??? я, конечно, почти ничего не знаю о джава, но, все время думал, что взаимодействие аплетов и сервлетов обычно используют для более сложных задач, а не для сбора такой инфы Ты абсолютно прав!!! И я с тобой согласен... но тот кто поставил эту задачу... вот вынь да вылож... смори выше... jnc да это, наверно, просто лаба какая-нить по информатике.. :-)) Ага... еще скажи задание школьное... на самостоятельной работе :-))) Smile возможно, если надо получить только это у меня выдерается как раз сервлетом... но опять таки нужно через апплет... мля.. ведь именно ремоты юзеры и прочие параметры это чисто серверные части, я вот кручу и думаю, как такое апплетом замутить... некоторые подсказали, кто в яве шарит, что такие заморочки в принципе апплетом не выдернешь... я с этим тоже полностью согласен, но...млин... начальство говорит что можно :-))))))))) Marik Только что если задача на самом деле крупнее, а ты пока только первую её часть пытаешься делать... Ты прав... это только макушка небольшая... с которой я так и не справился... все что будет остальное будет писаться Веб сервисами Дельфей или Билдером... но это будет потом... а сейчас мля отталкнутся никак не могу с этой долбанной явой... на самом деле очень мощный язык, очень навороченный... но как то извиняюсь через попу сделанный... на мой взгляд... Если надо, то идеология явы оч проста. Это то все понятно в теории, что там куда компилируется и что для этого нужно... но есть конкретная задача, есть ее пути решения хоть и очень размывчатые... вот ее и надо решать... а все остальное написано очень хорошо практически везде.... Чего меня больше всего убивает в этом деле, то что если есть какая дока и инфа в нете, то она вся одинаковая на всех сайтах, если и есть, то на английском... на котором я бы сказал свободно не читаю :-) Книги в нашей астрахани мля я посмотрел.... ужас... американских этих говноедов литература самая отстойная, воды налито полно, а толком ничего не рассмотренно... вот сижу и голову ломаю Ссылка на комментарий Поделиться на другие сайты More sharing options...
mr.Faster Опубликовано 9 января, 2004 Жалоба Share Опубликовано 9 января, 2004 а серверные логи вебалайзером посмотреть не судьба? Ссылка на комментарий Поделиться на другие сайты More sharing options...
Yujin Опубликовано 9 января, 2004 Автор Жалоба Share Опубликовано 9 января, 2004 mr.Faster это еще что такое? Ссылка на комментарий Поделиться на другие сайты More sharing options...
mr.Faster Опубликовано 9 января, 2004 Жалоба Share Опубликовано 9 января, 2004 впрочем если халявный сервер, вряд ли там будет вебалайзер Добавлено: примерно так http://mr-faster.com/webstat/ Ссылка на комментарий Поделиться на другие сайты More sharing options...
Yujin Опубликовано 9 января, 2004 Автор Жалоба Share Опубликовано 9 января, 2004 mr.Faster Сервер Апачка под ФриБздю... и вебалайзер, немного не то :-))) За лекбез - спасибо Ссылка на комментарий Поделиться на другие сайты More sharing options...
RifleMan Опубликовано 9 января, 2004 Жалоба Share Опубликовано 9 января, 2004 Yujin дурацкий наверное вопрос...ты книжки читать не пробовал? А для сбора статистики java на самом деле не лучшее решение... Ссылка на комментарий Поделиться на другие сайты More sharing options...
Marik Опубликовано 10 января, 2004 Жалоба Share Опубликовано 10 января, 2004 Yujin Может чего дельного посоветуете???А то даже я на сигареты Ява Легкая перешел :-))))Дельный совет - перейди на другие сигареты! Лана, шучу...Вопрос возник - ты в апплет не можешь получить информацию? В чём ошибка? (просто мне лень ставить себе JBilder - глядишь, без оного разберёмся) Ссылка на комментарий Поделиться на другие сайты More sharing options...
Yujin Опубликовано 11 января, 2004 Автор Жалоба Share Опубликовано 11 января, 2004 RifleMan дурацкий наверное вопрос...ты книжки читать не пробовал? дурацкий наверное ответ...ты выше читать не пробовал??? на счет книжек я высказался... :-) Marik Дельный совет - перейди на другие сигареты! :-)) хороший совет :-))) ща на NEXT'е сижу :-))) кста...такой тоже язык есть...страый только :-)))))))))) Вопрос возник - ты в апплет не можешь получить информацию? В чём ошибка? в том то и дело...что не могу... в сервлет могу, а в апплет нет... используемый пакет java.net.servlet и его исполнения HttpServletRequest & HttpServletResponse которые подходят для сервлета, для апплета есесно не подходят... а ошибка...ошибка в том, что в апплете просто не могу я использовать пакеты, которые используются для сервлета.... если их подключать, и вызывать в апплете, то все компилится нормально...но не работает... вот в принципе.... наверно не очень понятно я изьясняюсь сам уже путаюсь...с этой явой мля.... глядишь, без оного разберёмся хорошоб...я искренне в это надеюсь :-) Ссылка на комментарий Поделиться на другие сайты More sharing options...
Marik Опубликовано 11 января, 2004 Жалоба Share Опубликовано 11 января, 2004 эт конечно на издёвку похоже, но что-нить в хелпе-то должно быть по этим HttpServletRequest. Для меня расскажи, что они именно делают? (что реализуют, какие есть методы) Соответственно исходя из этого и нужно искать аналоги в апплетах. (а может и не в апплетах, а в других пакетах). Ну... эт я так... пока не поставил компулятор, ничего конкретнее скорее всего и не смогу сказать... Ссылка на комментарий Поделиться на другие сайты More sharing options...
Yujin Опубликовано 12 января, 2004 Автор Жалоба Share Опубликовано 12 января, 2004 Marik Взаимодействие с клиентом Когда сервлет принимает сигнал от клиента, он получает два объекта: Объект ServletRequest, который устанавливает связь от клиента к серверу. Объект ServletResponse, который устанавливает связь от сервлета обратно к клиенту. ServletRequest и ServletResponse интерфейсы пакета javax.servlet. Интерфейс ServletRequest предоставляет сервлету доступ к: Такой информации как имена параметров предоставляемых клиентом, протокол (схема) используемый клиентом, и имена удаленного хоста, который выполнил запрос и сервера, который его получил Входной поток, ServletInputStream. Сервлеты используют входной поток для получения данных от клиентов, которые используют протоколы уровня приложений, такие как методы HTTP POST и PUT. Интерфейсы, наследующие интерфейс ServletRequest позволяют сервлетам получать более специфичные данные протокола. Например, интерфейс HttpServletRequest содержит методы для получения специальной информации HTTP заголовков. Интерфейс ServletResponse предоставляет сервлету методы, для отправки сообщений клиенту. Он: Позволяет сервлету установить длину содержимого и тип MIME ответа. Устанавливает выходной поток, ServletOutputStream, и Writer через который сервлет может отправить данные ответа. Интерфейсы, наследующие интерфейс ServletResponse предоставляют сервлетам более специфичные возможности. Например, интерфейс HttpServletResponse содержит методы позволяющие сервлету манипулировать специальной информации HTTP заголовков. В апплете можно использовать похожий класс java.net.HttpURLConnection и еще пара классов входящих в пакет java.net.* Реквесты и Респонсы не прикручиваются... незнаю...может я через анус делаю... но не работает... Ссылка на комментарий Поделиться на другие сайты More sharing options...
Yujin Опубликовано 12 января, 2004 Автор Жалоба Share Опубликовано 12 января, 2004 На всякий случай, привожу свой сорс сервлета, вполне работающего: package aversservlet; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; import javax.swing.event.*; /** * Tittle: нескажу * Description: нескажу * Copyright: Copyright (c) 1998-2003 ExecApp. * Company: ExeCute Applications * @author Yujin Tatarintsev * @version 1.0 */ public class AversServlet extends HttpServlet { private static final String CONTENT_TYPE = "text/html; charset=windows-1251"; /**Initialize global variables*/ public void init() throws ServletException { } /**Process the HTTP Get request*/ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(CONTENT_TYPE); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head><title>AversServlet</title></head>"); out.println("<body>"); out.println("<p>Сервлет возвращает метод GET. Ответ:</p>"); out.println("</body></html>"); out.println(); out.println("Параметры инициализации сервлета:"); Enumeration e = getInitParameterNames(); while (e.hasMoreElements()) { String key = (String)e.nextElement(); String value = getInitParameter(key); out.println(" " + key + " = " + value); } out.println(); out.println("Контекстные параметры инициализации:"); ServletContext context = getServletContext(); Enumeration enum = context.getInitParameterNames(); while (enum.hasMoreElements()) { String key = (String)enum.nextElement(); Object value = context.getInitParameter(key); out.println(" " + key + " = " + value); } out.println(); out.println("Аттрибуты контекста:"); enum = context.getAttributeNames(); while (enum.hasMoreElements()) { String key = (String)enum.nextElement(); Object value = context.getAttribute(key); out.println(" " + key + " = " + value); } out.println(); out.println("Атрибуты запроса:"); e = request.getAttributeNames(); while (e.hasMoreElements()) { String key = (String)e.nextElement(); Object value = request.getAttribute(key); out.println(" " + key + " = " + value); } out.println(); out.println("Имя сервлета: " + getServletName()); out.println("Протокол: " + request.getProtocol()); out.println("Схема: " + request.getScheme()); out.println("Имя Сервера: " + request.getServerName()); out.println("Порт Сервера: " + request.getServerPort()); out.println("Информация о Сервере: " + context.getServerInfo()); out.println("Удаленный Адрес: " + request.getRemoteAddr()); out.println("Удаленный Хост: " + request.getRemoteHost()); out.println("Кодировка Символов: " + request.getCharacterEncoding()); out.println("Длина Контента: " + request.getContentLength()); out.println("Тип Контента: "+ request.getContentType()); out.println("Место Нахождения: "+ request.getLocale()); out.println("Буфер Ответа по Умолчанию: "+ response.getBufferSize()); out.println(); out.println("Имена Параметров в Этом Запросе:"); e = request.getParameterNames(); while (e.hasMoreElements()) { String key = (String)e.nextElement(); String[] values = request.getParameterValues(key); out.print(" " + key + " = "); for(int i = 0; i < values.length; i++) { out.print(values[i] + " "); } out.println(); } out.println(); out.println("Заголовки в этом Запросе:"); e = request.getHeaderNames(); while (e.hasMoreElements()) { String key = (String)e.nextElement(); String value = request.getHeader(key); out.println(" " + key + ": " + value); } out.println(); out.println("Кукисы в этом Запросе:"); Cookie[] cookies = request.getCookies(); for (int i = 0; i < cookies.length; i++) { Cookie cookie = cookies[i]; out.println(" " + cookie.getName() + " = " + cookie.getValue()); } out.println(); out.println("Защищенный Запрос: " + request.isSecure()); out.println("Тип Аутентификации: " + request.getAuthType()); out.println("Метод HTTP: " + request.getMethod()); out.println("Удаленный Пользователь: " + request.getRemoteUser()); out.println("Запрашиваемый URI: " + request.getRequestURI()); out.println("Путь к Контексту: " + request.getContextPath()); out.println("Путь к Сервлету: " + request.getServletPath()); out.println("Информация о Пути: " + request.getPathInfo()); out.println("Транспортный Путь: " + request.getPathTranslated()); out.println("Строка Запроса: " + request.getQueryString()); out.println(); HttpSession session = request.getSession(); out.println("ID Запрашиваемой Сессии: " + request.getRequestedSessionId()); out.println("ID Текущей Сессии: " + session.getId()); out.println("Время Запущенной Сессии: " + session.getCreationTime()); out.println("Время Последнего Обращения к Сессии: " + session.getLastAccessedTime()); out.println("Максимальный Интервал Не активной Сессии в Секундах: " + session.getMaxInactiveInterval()); out.println(); out.println("Значения Сессии: "); Enumeration names = session.getAttributeNames(); while (names.hasMoreElements()) { String name = (String) names.nextElement(); out.println(" " + name + " = " + session.getAttribute(name)); } } /**Clean up resources*/ public void destroy() { } } Компилятор - Borland JBuilder 5.0 Ent. Добавлено: мля...а че, тек CODE русские буквы непонимать????? Ссылка на комментарий Поделиться на другие сайты More sharing options...
Yujin Опубликовано 12 января, 2004 Автор Жалоба Share Опубликовано 12 января, 2004 Народ, кто нить в нашей астрахни встречал книгу Философия Java 3-е издание Брюса Эккеля??? Ссылка на комментарий Поделиться на другие сайты More sharing options...
Smile Опубликовано 12 января, 2004 Жалоба Share Опубликовано 12 января, 2004 AversServlet ааа=))) ты че в Аверсе работаешь??? =)))) если да, тогда привет Палинке, хотя наверное ты ее врядли знаешь, скорее ее папу =)))))) Ссылка на комментарий Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Заархивировано
Эта тема находится в архиве и закрыта для дальнейших ответов.