Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2002.05.06;
Скачать: [xml.tar.bz2];

Вниз

Посоветуйте простейший веб-сервер.   Найти похожие ветки 

 
Лёша   (2002-01-18 16:35) [0]

Народ! Нужна программа или компонент с исходниками для генерации HTML динамически. Для работы на локальной машине или в одноранговой сети. Желательно с возможностью подключения БД.


 
Velocity   (2002-01-19 09:45) [1]

Не понял вопроса. Так что тебе нужно? Уточни. Если веб-сервер - тогда бери глюкавый Personal Web Server (он есть в полном инсталл. пакете винды 98) или можешь взять апачи - рулезная и совершенно бесплатная вешь. С темой разобрались, а вот сам вопрос не совсем понятен - чего именно тебе надо.


 
Anatoly Podgoretsky   (2002-01-19 12:06) [2]

Чем же он глюкавый? Простой да.


 
Лёша   (2002-01-20 03:24) [3]

Уточняю. Мне нужен сервер или подпрограмма, которая бы обрабатывала мои запросы, выдавала бы резулютаты по шаблону в виде HTML и отображала бы их на TWebBrowser. Для сервера даже не нужно иметь IP адреса, т. к. всё будет происходить на одной машине. Подходящий вариант для меня ISAPI библиотека (и TPageProducer), но для неё нужен IIS. Вешать чудо 40МБ, которое не на много увеличивает возможности моей программы не разманно, к тому же могут возникнуть проблемы с инсталяцией и настройкой у конечного пользователя.
Если быть ещё конкретнее, то один из конечных пользоватилей - заказчик хочет своеручно менять дизайн (создовать шаблоны) отображаемой информации, получаемой в виде запроса к БД. Для этого я пока предложил HTML.


 
Фэ   (2002-01-21 11:21) [4]

Apache + Perl + PHP + MySQL для Win платформы


 
nikkie   (2002-01-21 14:17) [5]

судя по уточненной формулировке вопроса, веб-сервер и не нужен.

1. надо сгенерить HTML (например с помощью TPageProducer) - это можно делать и в обычном приложении.

2. надо показать созданный HTML в TWebBrowser. делается просто.


 
Лёша   (2002-01-22 00:54) [6]

1) Через TWebBrowser+TPageProducer документы из БД можно загружать динамически и модифицируя (я надеюсь, что можно).
2)А как сделать так, чтобы из линка или скрипта документа на TWebBrowser я мог получить документ, шаблон которого лежит где-нибудь в блобе или стриме. Другими словами, из TWebBrowser запускать процедуру генерации новых документов.
Может можно перехватывать линки? Или при загрузке документа переваривать все сылки, а потом обрабатывать событие типа OnClickNaKakoytoLink. К томуже ещё есть желание обрабатывать <form>...</form>.
Так вот, если выполняются условия 1) и 2), то тогда действительно, нужда в веб-сервере отпадает не только для конкретной задачи, но и для задач куда более широкого спектра.
С 1-м условиеи у меня вопросы не с загрузкой, а с отображением.
А вот для 2-го меня устроют любые соображения (ДАЖЕ НЕПРАВИЛЬНЫЕ).


 
Z   (2002-01-22 05:00) [7]

Используй Apache!!! Не мучай ты себя - лучше не получится


 
nikkie   (2002-01-22 11:02) [8]

>Z
мне кажется - если лишний софт не требуется, то это всяко лучше. конечно, не просто, но сама идея замены обычного интерфейса на веб говорит за то, что автор готов помучаться :)

если серьезно, то я просто предлагаю другой подход. пусть автор сам решает, что ему предпочтительней или проще. имхо, написание стандартного CGI для работы с базой приведет к жутким тормозам. надо либо брать сервер с поддержкой ISAPI, либо писать модуль для Apache (что позволяет Delphi 6). мне кажется, Apache - не самый дружелюбный в установке и настройке сервер. конечно, для разработки веб приложений на perl/php - самое оно, но для этой задачи - сомневаюсь. народ хвалил OmniHTTP и еще какие-то простые сервера - можешь посмотреть тут http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=995968829&n=4

с другой стороны, создание полноценного веб-приложения (скажем, ISAPI) имеет преимущества, если есть перспектива многопользовательской работы (скажем, в интранете). но тогда уж не надо делать своего клиента.

>Лёша
я знаю два пути загрузки информации в вебброузер. первый - с помощью создания своего namespace handler (я этого не делал, про этот способ говорил Макс Черных, он давал ссылку http://www.euromind.com/iedelphi/app/namespacehandler.htm ).

второй способ заведомо проще, но загружать картинки из стрима, наверное, не получится. загрузить html можно так

var
doc : Variant;
begin
doc := WebBrowser.Document;
// вот так
doc.write("<HTML><BODY><H1>hello, web</H1></BODY></HTML>");
// или так
//doc.body.innerHTML := "<H1>hello, web</H1>";
end;


перехватывать линки - в первом случае и не надо, а вообще - не проблема. есть событие OnBeforeNavigate.

имеет смысл также посмотреть на компоненту EmbeddedWB (там же на euromind) - возможностей по контролю браузера у нее гораздо больше, чем у стандартной компоненты.

наконец есть еще вариант - встроить веб-сервер в свое приложение. взять, например, IdHTTPServer из indy и написать обработчик OnCommandGet.


 
Фэ   (2002-01-22 15:15) [9]

www.miracle.ru

Описание Web сервера Miracle.

Сервер является наверное одним из самых маленьких 32k, но при этом достаточно
функциональным. Поддерживается протокол HTTP/1.0, некоторые расширения
протокола HTTP/1.1 (например, докачка), CGI, Miracle, Cookie и метод POST
в CGI и Miracle. Не поддерживается (пока) SSL. Частичная поддержка SSI.


 
Лёша   (2002-01-22 17:35) [10]

Спасибо за советы и сылки. Я, в конечном итоге, хочу совсем отказаться от веб-сервера. У меня получается приблизительно такой код:

TForm1 = class(TForm)
...
public
{ Public declarations }
procedure Procedure1;
procedure Procedure2;
end;

...

procedure TForm1.Procedure1;
begin
WebBrowser1.Navigate("c:\temp\1.htm");
end;

procedure TForm1.Procedure2;
begin
WebBrowser1.Navigate("c:\temp\2.htm");
end;

procedure TForm1.PageProducer1HTMLTag(Sender: TObject; Tag: TTag;
const TagString: String; TagParams: TStrings; var ReplaceText: String);
begin
//Здесь по шаблону Producer.htm мы создаём документ
// Не забудьте указать Producer.htm для PageProducer1.HTMLFile
if TagString="Lin1" then ReplaceText:="<a href="myhttp:\\Procedure1">Процедура1</a>";
if TagString="Lin2" then ReplaceText:="<a href="myhttp:\\Procedure2">Процедура2</a>";
if TagString="Time" then ReplaceText:=TimeToStr(Now);
end;

procedure TForm1.Button1Click(Sender: TObject);
var doc: variant;
begin
//Здессь подставляем созданный документ в WebBrowser1
doc:= WebBrowser1.Document;
doc.body.innerHTML:= PageProducer1.Content;
end;

procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
begin
//Здесь каждую сылку заменяем на свою процедуру
Cancel:= False;
if url="myhttp:\\Procedure1" then begin Cancel:= True; Procedure1; end;
if url="myhttp:\\Procedure2" then begin Cancel:= True; Procedure2; end;
caption:=url;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate("c:\temp\0.htm");
end;

end.


И соответственно документы:

C:\Temp\Producer.htm
<html><body>
Выберете процедуру
<#Lin1> <#Lin2> <#Time>
</body></html>


C:\Temp\1.htm
<html><body>
Первая процедура выполнилась.
Нажмите на Button1
</body></html>


C:\Temp\2.htm
<html><body>
Вторая процедура выполнилась.
Нажмите на Button1
</body></html>


C:\Temp\0.htm
<html></html>

Теперь, генеря документ, я могу вставить сылку со своим названием, а потом вместо этой сылки, запустить любую процедуру. Для полного счастья и чтобы совсем забыть о веб-сервере мне недостаёт понимания PostData в WebBrowser1BeforeNavigate2.
Т. е. то это или не то, но чтобы переварить данные из формы мне нужно их получить. А я не знаю как.


 
kig   (2002-01-22 18:00) [11]

PostData
[in] Pointer to a VARIANT structure of type VT_BYREF or VT_VARIANT that contains the data to send to the server if the HTTP POST transaction is being used.

The post data specified by PostData is passed as a SAFEARRAY structure. The variant should be of type VT_BYREF or VT_VARIANT, which points to a SAFEARRAY. The SAFEARRAY should be of element type VT_UI1, dimension one, and have an element count equal to the number of bytes of post data.

Есть подозрение, что данные там такие же, как были бы и в запросе через HTTP POST.


 
RainMan   (2002-02-20 08:20) [12]

Удалено модератором


 
yaJohn   (2002-02-20 13:31) [13]

http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=995968829&n=4

www.ritlabs.com


 
SerVS - S   (2002-02-20 13:48) [14]

Я бы посмотрел Indy, там в примерах есть создания HTTP сервера, и еще много ерунды. Только бери версию 9 (в поставке с дельфи6 идет версия 8)


 
SV   (2002-02-20 23:43) [15]

Tiny Web Server на Torry
Классные, красивае исхдрники на Delphi



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2002.05.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.005 c
4-17728
Витамин
2002-02-25 19:58
2002.05.06
Системное меню


14-17703
Roach
2002-03-18 12:26
2002.05.06
Games


3-17500
Art1
2002-04-11 21:58
2002.05.06
Как в DBGrid выделить цветом текущую зпись?


1-17579
rem_
2002-04-22 13:39
2002.05.06
Wise


3-17475
rvs
2002-04-12 10:41
2002.05.06
Tquery





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский