Как сохранить содержимое вызова страницы в файл в jsp / java? - PullRequest
1 голос
/ 11 января 2010

В jsp / java как вы можете вызвать страницу, которая выводит XML-файл в результате и сохранить его результат (тип XML) в XML-файл на сервере. Оба файла (файл, который производит XML и файл, который мы хотим сохранить / перезаписать), находятся на одном сервере.

В основном я хочу обновить мой test.xml время от времени, вызывая generate.jsp , который выводит результат типа xml.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 11 января 2010
  1. Зарегистрируйте фильтр, который добавляет оболочку к вашему ответу. То есть он возвращает в цепочку новые HttpServletResponse объекты, расширяя исходные HttpServletResponse и возвращая ваши пользовательские OutputStream и PrintWriter вместо исходных.
  2. Ваши OutputStream и PrintWriter вызывают исходные OutputStream и PrintWriter, но также записывают в ваш файл (используя новый FileOutputStream)
2 голосов
/ 11 января 2010

Если запрос идемпотентен, тогда просто используйте java.net.URL, чтобы получить InputStream выхода JSP. Э.Г.

InputStream input = new URL("http://example.com/context/page.jsp").openStream();

Если запрос не идемпотентен, вам нужно заменить PrintWriter ответа пользовательской реализацией, которая копирует вывод в некоторый буфер / компоновщик. Я разместил здесь пример кода: Захват сгенерированного динамического контента на стороне сервера

Получив вывод, просто запишите его на диск обычным java.io способом, предполагая, что JSP уже в формате XHTML.

1 голос
/ 11 января 2010

Почему бы вам не использовать настоящий движок шаблонов, такой как FreeMarker? Это было бы проще.

...