Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Servlets


Автор: ShurikA 14.7.2006, 23:43
Где можно почитать (online) про создание Client-Server на Java? 

Автор: powerOn 15.7.2006, 10:58
http://ru.sun.com/java/j2ee/index.html можно посмотреть.  

Автор: ShurikA 15.7.2006, 12:26
Thanks

Добавлено @ 12:29 
Обращение к ВД на сервере возможно только через Serverlet или от куда угодно? 

Автор: powerOn 15.7.2006, 12:33
Цитата(ShurikA @  15.7.2006,  13:26 Найти цитируемый пост)
или от куда угодно

 

Автор: ShurikA 15.7.2006, 12:42
Понял...
А каким образом правильнее? 

Автор: powerOn 15.7.2006, 12:57
Сервлет - это своего рода объект работающий на веб-сервере, он может обрабатывать HTTP запросы, буть-то от веб-браузера, будь-то от кагого-либо другого сетевого клиента, способного вести обмен информайией по HTTP протаколу. Сервлеты - это фактически Java аналоги CGI скриптов. В основном сервлеты используются для формирования HTML страниц. 

Цитата(ShurikA @  15.7.2006,  13:42 Найти цитируемый пост)
А каким образом правильнее?  
 
Сервлеты не используются для доступа к БД. Для доступа к БД и сервлеты и остальные Java программы используют технологию JDBC.
 

Автор: Aazmandius 15.7.2006, 13:41
Цитата

В основном сервлеты используются для формирования HTML страниц. 

Ну в последние несколько лет уже ИМХО никто HTML в сервлетах не формирует, теперь сервлеты в основном играют роль контроллеров в веб-системах, а за отображение отвечают другие технологии (ну хоть JSP и компилится в сервлет, оно ведь не есть сервлет в классическом понимании, также есть Velocity etc.) 

Автор: ShurikA 17.7.2006, 13:24
Так, понятно, поставим вопрос по другому:
Нужно создать систему clien-server главным образом для передачи фаилов на сервер, про этом хотелось бы что бы был доступ к БД. 

Автор: Aazmandius 17.7.2006, 16:01
Ну а в чем проблема? smile  Доступ к БД можно организовать 1000+1 способом, можно и с использованием сервлетов, но результат опять же выводить не из него, а передавать в хотя бы в JSP, а аплоад можно сделать с помощью любой из известных библиотек, хотя бы тот же Commons File Upload от Jakarta 

Автор: ShurikA 17.7.2006, 16:42
Цитата(Aazmandius @  17.7.2006,  15:01 Найти цитируемый пост)
хотя бы тот же Commons File Upload от Jakarta

Проблемма в том что эта библиотека пользуется стандартными протоколами, а у них есть проблемма с пазмерами фаилов (обычно максимальный размер фаилов закачиваемых на сервер , через например HTTP, не может быть больче 8 Мб, на виртуальном серверре)
Хотелось бы это обойти. 

Автор: Aazmandius 17.7.2006, 16:46
А если при закачке больших файлов юзать ФТП? Или есть специфические ограничения? В любом случае лучше юзать библиотеки, их всяких много, наверняка найдется что-то подходящее, потому что если пытаться самому реализовывать, будет гиморно, да и на выходе скорее всего будут вариации на тему уже сущ-вующих решений... 

Автор: ShurikA 17.7.2006, 16:50
Цитата(Aazmandius @  17.7.2006,  15:46 Найти цитируемый пост)
А если при закачке больших файлов юзать ФТП?

В данный момент это иманно так и сделанно, Просто именно от этого и хочется отвязаться...
С помощью Client-Server делаю что хочу, по идее. 

Автор: Aazmandius 17.7.2006, 16:58
Ну в общем то даsmile Так ведь можно закачку по ФТП и через клиент-сервер организовать, в либах это есть... Такой же точно аплоад получится, только по другому протоколу, хотя по-мойму методом post в HTTP можно слать какие угодно по размеру файлы, если ФТП не нравится. 

Автор: ShurikA 17.7.2006, 17:30
Цитата(Aazmandius @  17.7.2006,  15:58 Найти цитируемый пост)
 хотя по-мойму методом post в HTTP можно слать какие угодно по размеру файлы, если ФТП не нравится

Можно, если сервер свой...

ФТП не нравится тем что пароль нужно держать в апплете. А это не есть хорошо. 

Автор: LexeY 16.10.2006, 17:02
а нельзя както организовать передачу больших файлов как это делается в сокетах, типа:

Код

FileInputStream fis = null;
    try
    {
      Socket socket = new Socket("localhost", xxxx);
      OutputStream socketOut = socket.getOutputStream();

      fis = new FileInputStream("bla.bla");
      byte[] buffer = new byte[8 * 1024];
      int read;
      while((read = fis.read(buffer)) != -1)
        socketOut.write(buffer, 0, read);

      socket.close();
    }
    catch(IOException ex)
    {
      ex.printStackTrace();
    }
    finally
    {
      try
      {
        if(fis != null)
          fis.close();
      }
      catch(IOException ex)
      {
        ex.printStackTrace();
      }
    }


Автор: COVD 16.10.2006, 18:11
Цитата

Проблемма в том что эта библиотека пользуется стандартными протоколами, а у них есть проблемма с пазмерами фаилов (обычно максимальный размер фаилов закачиваемых на сервер , через например HTTP, не может быть больче 8 Мб, на виртуальном серверре)
Хотелось бы это обойти.


А можно поподробнее, если вы в курсе? Чем обусловлено такое ограничение? 

Метод POST отправляет данные на сервер в момент, когда открывается InputStream, и это означает что ввод в OutputStream завершен. В этот момент данные начинают отправляться на сервер, а до этого все , что пишется в OutputStream, копится в буфере. Если обьем пересылаемых в одном соелинении ограничен (чем ?, размером буфера? ), то имеет смысл разбить данные и отправлять порциями. Это полезно и с точки зрения надежности. Если какая-то порция не дойдет, то всегда можно повторить в новом соединении. Наверное, упомянутая библиотека так и реализована. Поэтому странно, что есть ограничение на обьем данных. Порциями можно пересылать сколь угодно много.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)