Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Дейтел Х.М. -> "Технологии профаммирования на Java 2 Книга 3" -> 112

Технологии профаммирования на Java 2 Книга 3 - Дейтел Х.М.

Дейтел Х.М. , Дейтел П.Дж., Сантри С.И. Технологии профаммирования на Java 2 Книга 3 — М.: Бином-Пресс, 2003. — 672 c.
ISBN 5-9518-0051-Х
Скачать (прямая ссылка): tehprogrammjava220033.pdf
Предыдущая << 1 .. 106 107 108 109 110 111 < 112 > 113 114 115 116 117 118 .. 271 >> Следующая

548 Element root = document.createElement( "answer" );
549 document.appendChild( root ); 550
551 Il добавление элемента, информирующего клиента
о правильном ответе
552 Element correct = document.createElement( "correct" );
553 correct.appendChild(
554 document.createTextNode( answer ) );
555 root.appendChild( correct ); 556
557 Il добалекие элемента, содержащего название рубрики советов
558 Element name =
559 document.createElement( "correctTipName" );
560 name .appendChild(
561 document.createTextNode( correctTipName ) );
562 root.appendChild( name ); 563
564 Il добавление элемента, содержащего описание рубрики советов
565 Element description =
566 document.createElement( "correctTipDescription" );
254
Глава 5
567 description.appendChild(
568 document.createTextNode( correctTipDescription ) );
569 root.appendChild( description ); 570
571 Il добавление элемента, содержащего ссылку на сервлет
TipTestServIet
572 Element servletLink =
573 document.createEleaient( "servletName" );
574 servletLink.appendChild(
575 document.createTextNode( servletName ) );
576 root.appendChild( servletLink ); 577
578 return document;
579
580 } Jl конец блоха try 581
582 / / обработка исключения при построении документа
583 catch < ParserConfigur&tionException parserException ) {
584 parserException.printStackTrace();
585 } 586
587 return null; 588
589 } Il конец метода createXMLTipTestAnswer 590
591 Il отправка ответа клиенту J2ME
592 private void sendJ2MEAnswer( HttpServletRequest request,
593 HttpServletResponse response ) throws lOException
594 {
595 Il получение ответа клиента на вопрос теста
596 BufferedReader in = request.getReader();
597 int selection = Integer.parseint( in.readLine().trim() ); 598
599 Il отправка клиенту J2ME текстовых данных
600 response.setContentType( "text/plain" );
601 PrintWriter out = response.getWriter(); 602
603 /I информирование клиента, является ли его ответ правильным
или неправильным
604 HttpSession session — request.getSession(); 605
606 Il сопоставление правильного ответа с ответом, полученным
в ходе сеанса
607 Integer integer =
608 ( Integer ) session.getAttribute( "correctAnswer" );
609 int correctAnswer = integer.intValue(); 610
611 Il отправка правильного названия рубрики советов и ее описания
612 String correctTipName =
613 ( String ) session.getAttribute( "correctTipName" ); 614
615 String correctTipDescription =
616 ( String ) session .getAttribute(
617 "correctTipDescription" ); 618
619 If определение, является ли ответ правильным
Разработка приложений для беспроводной связи на базе Java и J2ME 255
620 if ( selection = correctAnswer )
621 out.println( "Correct" );
622 else
623 out.println( "Incorrect" ); 624
625 // предоставление клиенту правильного названия рубрики
советов и ее описания
626 out.println( correctTipName ) ;
627 out.println( correctTipDescription ); 628
629 )11 конец метода sendJ2MEAnswer 630
631 Il метод, вызываемый при закрытии сервлета
632 public void destroy()
633 {
634 Il закрытие соединения с базой данных
635 try (
636 connection. close ();
637 t 638
639 11 обработка исключения, если соединение не может быть закрыто
640 catch ( SQLException sqlException ) {
641 sqlException.printStacxTrace{);
642 } 643
644 } Il конец метода destroy
645 }___
Рис. 5.9. Сервлет TipTestServlet реализует основную логику работы теста и посылает вопросы теста Tip-Test клиентам
Использование метода getl nit Parameter в строке 37 дает возможность задавать внешнюю для сервлета базу данных, При этом можно менять используемую базу данных (например, вместо базы данных Cloudscape использовать базу данных mySQL), модифицируя элемент <param-value> в элементе <init-param> документа web.xml без повторной компиляции сервлета. В данном практическом примере этот элемент содержит
<init-param>
<param-name> JDBC_DRIVER </param-name>
<param-value>
COM.cloudscape. core.RmiJdbcDriver
</param-value> </init-param>
В строках 43-45 из документа web.xml извлекается URL базы данных, а в строке 47 осуществляется соединение с ресурсом, задаваемым этим URL. Заметим, что закрытие этого соединения осуществляется методом destroy (строки 632~644). Бели возникнет необходимость изменить местоположение базы данных, для этого нужно будет всего лишь модифицировать элемент <param-value> в отдельном элементе <init-param> документа web.xml. В данном практическом примере этот элемент содержит
<ini t-param>
<рагат-паяіе> DATABASE_URL </param-name> <param-value>jdbc:cloudscape:rmi: tips </param-value>
</iriit-param>
256
Глава 5
В строках 50—53 создаются объекты, которые позднее будут использоваться для построения XML-документов (объекты Document), и объекты Transformer для применения XSLT-трансформаций, Далее в этом разделе будут рассмотрены пакеты Java, относящиеся к XML.
Сервлет TipTestServlet вызывает метод doGet (строки 70-103) для обработки запроса get. В строке 78 из объекта соединения Connection, реализованного в методе init, создается объект оператора SQL Statement. В строках 81-82 в результате действий этого оператора извлекается результирующее множество ResultSet всех элементов базы данных. Как говорилось ранее, база данных (объект ResultSet) содержит семь строк и пять столбцов — всего 35 строковых объектов. В строках 88-90 задается заголовок ответа HttpServletResponse, чтобы клиент не кэширо-вал информацию, отправляемую сервлетом TipTestServlet. В строке 92 осуществляется вызов метода sendTipTestQuestion (строки 176-244) для реализации логики работы теста и отправки клиенту вопроса теста Tip-Test. В строке 184 из запроса HttpServletRequest извлекается заголовок User-Agent. В строках 187-235 определяется тип клиента, пославшего запрос, путем сопоставления фактического заголовка User-Agent с заголовками, определенными в интерфейсе ClientUser-AgentHeaders. Процесс определения типа клиента идентичен процессу, который имел место в сервлете WelcomeServlet.
Предыдущая << 1 .. 106 107 108 109 110 111 < 112 > 113 114 115 116 117 118 .. 271 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100