2013-10-01 1 views
0

Я использую JSP, и у меня есть сложный сериализуемый объект, который я хочу загрузить в плоский формат файла на клиентский компьютер. Как это может быть сделано?Как вы можете загрузить/экспортировать объект в JSP в файл, хранящийся удаленно?

я могу получить объект, чтобы сохранить локально на сервер JSP с использованием ObjectOutputStream, но мне нужен объект, который будет храниться удаленно на сервер JSP и никогда не локально (например, для хранения клиентов)

После того, как объект сохраняется на локальном компьютере клиентов я хочу, чтобы вы могли загрузить его обратно на JSP-сервер и открыть/прочитать в объекте, как это можно сделать?

Уважением,

Tim

+0

Эта строка выглядит неоднозначной. Я могу получить объект для сохранения * локально * на ** JSP-сервере ** с использованием ObjectOutputStream, но мне нужно, чтобы объект, который был удален * удаленно * на ** JSP-сервере **, и никогда на местном уровне. Пожалуйста, объясните это немного больше; вы имеете в виду загрузку на локальном компьютере и сохранение на сервере приложений? – gyan

+0

Привет @gyan, я имею в виду загрузку объекта на локальный компьютер. Например. Мне нужен объект, который будет сериализован и сохранен на клиентском компьютере, а не на сервере JSP. Надеюсь, что поможет :) – Tim

ответ

0

Я думаю, что это не возможно для сервера JSP писать автоматически в сетевую папку. Это ограничение безопасности и может быть невозможно без ручного запроса на приложение. Вы можете использовать ниже стратегии:

  1. Создать общую папку на клиентском компьютере (предполагается, что находится в сети) и установите папку на сервере, а затем закодировать JSP, чтобы сохранить файл в этом месте.

  2. Сохраните файл на месте расположения JSP-сервера, а затем можно передать сценарий передачи FTP для передачи файла на клиентскую машину; с использованием планировщика заданий (требуется установление FTP-связи).

  3. Код приложения таким образом, чтобы его можно было загрузить с помощью веб-сайта приложения (например, загружался музыкальный файл). Затем на стороне клиента вы можете запустить программу, которая будет подключаться к серверу приложений и программно сохранять файл на клиентской машине.

+0

Спасибо @gyan за ваш ответ и предложенные стратегии. У меня была другая стратегия, но я не уверен, возможно ли ее/как ее кодировать. Можно ли направить объект в объект ObjectOutputStream, который затем может быть перенесен в объект FileOutputStream, который может инициировать загрузку файла? – Tim

+0

Это может работать в стратегии №1, где FileOutputStream записывает файл в местоположение (которое в конечном итоге является общим каталогом клиентов). В противном случае, без разрешения клиента (поэтому для загрузки через браузер всегда требуется разрешение на сохранение), невозможно сохранить файл на диске.Представьте себе, что ваша программа будет иметь потенциал для безопасного сохранения вируса на машине клиента :) (если можно сохранить непосредственно из веб-приложения) – gyan

+0

Хм, но может ли он не запускать загрузку файла так, как вы обычно загружаете файлы с веб-сайт, например щелкните ссылку и спросите, где сохранить файл? – Tim

0

Ваша проблема посылает двоичный объект через HTTP.

Вы можете использовать следующий фрагмент кода в JSP-коде.

response.setContentType("binary/octet-stream"); 
response.setHeader("Content-Transfer-Encoding", "binary"); 
response.setHeader("Content-Disposition","attachment; filename=myjavaobject.obj"); 

ObjectOutputStream out = new ObjectOutputStream(response.getOutputStream()); 
oos.writeObject(yourJavaObject); //Assuming yourJavaObject is the java object you want to send. 
out.flush(); 
out.close(); 

Не забудьте убедиться, что yourJavaObject является serializable.

+0

Спасибо @Santosh, это именно то, что я ищу, за исключением того, что это вызывает дополнительную проблему. Поскольку я использую JSP, который использует getWriter(), я не могу тогда вызвать getOutputStream(), поскольку вы не можете вызвать оба из-за этого, вызвав 2 запроса. Как я могу обойти эту проблему? С уважением, Тим – Tim

Смежные вопросы