Хотите создать сервлет, который будет сохранять опубликованные данные в файл на основе имени файла guid - PullRequest
0 голосов
/ 29 октября 2011

Итак, я перенес свое java-приложение на сервер, очень взволнованный этим.

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

Пока у меня есть это:

public class TestServlet extends javax.servlet.http.HttpServlet {
    protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
            throws javax.servlet.ServletException, IOException {

    }

    protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
            throws javax.servlet.ServletException, IOException {

        PrintWriter printWriter = response.getWriter();

        printWriter.print("hello, world from testservlet!");


    }
}

Итак, при условии, что опубликованные данные http (скажем, около 50 КБ) будут опубликованы в поле «полезная нагрузка», как я могу получитьопубликованный текст и сохраните его в файл с именем GUID.

Есть ли в java конструкция для очистки открытого файла, как в c #:

using(var file = new ....)
{
  // write to file
}

Это закрывает соединение и очищает память и т. Д.

Кроме того, нужно ли мне устанавливать специальные разрешения для tomcat для сохранения этого файла?

Я просто настроил все по умолчаниюпрямо сейчас (просто играю на VPS) с использованием Ubuntu 11, установленного Tomcat 6.

Спасибо.

Ответы [ 3 ]

5 голосов
/ 29 октября 2011

Вы можете использовать request для чтения "полезной нагрузки", см. API документ для ServletRequest:

request.getParameter("payload");

Вы можете использовать File для создания файласм. AP doc :

File newFile = new File("fileName");
boolean isCreated = newfile.createNewFile();

В файл можно записать следующее:

BufferedWriter out = new BufferedWriter(new FileWriter(newFile));
out.write(payLoad);
out.close();

Для GUID вы видите это Создать GUID вJava

И для очистки вам не нужно беспокоиться об этом в Java, это сборщик мусора ( Что такое сборщик мусора в Java? ) это делает дляВы автоматически, когда ссылка выходит за рамки.

Но вы должны закрыть ресурсы, такие как out.close, чтобы выпустить их обратно в систему, когда вы закончите с этим.

Кроме того, мне нужно установить специальные разрешения для tomcatсохранить этот файл?

Вам не нужно этого делать, потому что tomcat - это просто сервер, он больше связан с файловой системой (ОС).Я использую Glassfish в Unix, и мне не нужно ничего делать для создания файла.

1 голос
/ 30 октября 2011

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

Используйте File#createTempFile(), чтобы создать файл с уникальным идентификатором в данной папке.

File file = File.createTempfile("prefix-", ".ext", "/path/to/files");
// ...

Смотри также:


Есть ли в java конструкция для очистки открытого файла, как в c #: using?

Только в Java 7, которая уже отсутствовала в течение некоторого времени.

try (FileWriter writer = new FileWriter(file)) {
    writer.write(content);
}

, что эквивалентно

FileWriter writer = null;
try {
    writer = new FileWriter(file);
    writer.write(content);
} finally {
    if (writer != null) writer.close();
}

Смотри также:


Кроме того, нужно ли мне устанавливать специальные разрешения для tomcat для сохранения этого файла?

Пользователь, запустивший Tomcat, должен действительно иметь права на запись в данный каталог.


В будущем, пожалуйста, задавайте отдельные вопросы в отдельных вопросах SO.

0 голосов
/ 29 октября 2011

В Java 7 есть новая попытка с ресурсами , которая позаботится о том, чтобы закрыть файл для вас.В противном случае ... просто закройте файл;ничего страшного.

Что касается "специальных разрешений", то, пока пользователь Tomcat работает под ним, может получить доступ к рассматриваемому каталогу, это не проблема.Однако я бы рекомендовал не хранить его в каталогах веб-приложений (и если он развернут как война, вы все равно не сможете).Храните загруженные файлы в известном, но отдельном каталоге.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...