Электронный магазин на Java и XML



         

Код для сервлета TheNewsServ - часть 2


}

Функциональность сервлета сконцентрирована в методе doGet, как видно из листинга 8.17. В запросе можно передать значения параметров, определяющих тему сообщений, максимальный «возраст» сообщений, требуемый способ представления и идентификатор сообщения. Заметим, что создается объект Fi I e, соответствующий файлу XML с сообщениями, и передается конструктору NewsFormatter. Использование объекта File гарантирует, что соблюдаются соглашения относительно разделителей для компонентов пути; NewsFormatter не открывает этот файл, но использует его имя при получении объектной модели документа для этого файла из DOMlibrary.

Листинг 8.17. Метод doGet (TheNewsServ.java)

public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html"); PrintWriter out = new PrintWriter(resp.getOutputStream()); String topics = req.getParameter("topic"); String ageStr = req.getParameter("days"); String len = req.getParameter("size" ); // "S","H" or "L" String id = req.getParameter("id"); // a single item is requested try { File f = new File( workDir, newsFile ); NewsFormatter nf = new NewsFormatter( f ); if( id != null ){ nf.doNews( out, defaultHead,defaultFoot, id ); } else { // PrintWriter, head, foot, topics, H,S or L, age, skip#, mx# nf.doNews( out, defaultHead, defaultFoot, topics, len, ageStr,0, 10 ); } out.close(); }catch(Exception e){ System.err.println("TheNewsServ.doGet " + e ); errorMsg( out, "TheNewsServ.doGet", e ); } }

Обратите внимание, что конструкция try-catch в методе doGet направляет все исключения методу errorMsg, показанному в листинге 8.18. Разумеется, вам следует вставить свой адрес электронной почты в текст сообщения либо текст этого сообщения может состоять из специальной строки, которая задается в файле свойств. Методы header и footer просто выписывают стандартные теги HTML.

Листинг 8.18. Методы errorMsg, Header и Footer (TheNewsServ.java)




Содержание  Назад  Вперед