Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lec-JSP-v001

.pdf
Скачиваний:
7
Добавлен:
18.03.2015
Размер:
1.99 Mб
Скачать

ШАБЛОН ПРОЕКТИРОВАНИЯ VIEW HELPER (ПРОДОЛЖЕНИЕ)

Для реализации шаблона View Helper меется две стратегии:

1.JavaBean helper (с использованием тега useBean)

2.Поддерживающие классы в виде библиотек пользовательских тегов.

Страница, приведенная выше, использует в качестве реализации шаблона View Helper класс org.bookstore.beans.AuthBean8,

описывая в теге useBean переменную authBean, ссылающуюся на экземпляр этого класса. Переменная помещается в область сеанса. В класс AuthBean8 помещен механизм получения доступа к источнику данных и выполнения запроса, что прячет эти действия от разработчика страницы. Это паллиатив, но в будущем мы улучшим и усилим этот подход. Таким образом, в данном приложении класс AuthBean8 является примером использования стратегии JavaBean Helper. Тег useBean является одним из тегов действий.

ДИАГРАММА ВЗАИМОДЕЙСТВИЯ СТОРОН ПРИ ИСПОЛЬЗОВАНИИ РЕАЛИЗАЦИИ ШАБЛОНА VIEW HELPER

Помощник (хелпер) отвечает за содействие в выполнении обработки представления или контроллера. Таким образом, помощники выполняют несколько функций, куда входит сбор данных, необходимых для представления и сохранение промежуточной модели.

ХЕЛПЕР AUTHBEAN8

Компонент AuthBean8 понадобился, чтобы

вынести часть типичных действий по работе с базой за пределы JSP страницы. Естественно, что подобный подход не выдерживает никакой критики, однако мы находимся только в начале пути.

Наш компонент должен удовлетворять ряду требований:

8.У него обязательно должен быть конструктор без параметров. Почему ?

9.Метод setDataSourceName() не только устанавливает название источника данных, но и ищет оный в JNDI.

10.Метод getRst() получает подключение из источника данных, делает запрос и возвращает на страницу ссылку на полученный

ResultSet.

11.После обработки результирующего набора страница должна все закрыть вызовом метода allClose().

12.А еще есть методы для установки значения свойства country

(setCountry()) и получения значения - getCountry().

КОМПОНЕНТ AUTHBEAN8

package org.bookstore.beans; import . . .

public class AuthBean8 {

private DataSource dbs;

private static Connection conn; private PreparedStatement pstmt; private ResultSet rst;

private String country = "Россия";

//-----------------------------------

public AuthBean8() {} //----------------------------

public void setDataSourceName( String p_dataSourceName )

throws ServletException {

try {

Context initCtx = new InitialContext();

dbs = (DataSource) initCtx.lookup( p_dataSourceName );

}

catch( NamingException ne ) { throw new ServletException(

"Error Data Source lookup. " + ne.getMessage());

}

}

КОМПОНЕНТ ИСПОЛЬЗУЕМЫЙ НА СТРАНИЦЕ

AUTHOR8.JSP (ПРОДОЛЖЕНИЕ)

public

ResultSet getRst() throws Exception {

if( dbs == null ) {

 

 

 

throw new Exception("!!! NULL Connextion in AuthBean2() !!!");

}

 

 

 

String query =

 

 

 

"SELECT au_id, last_name, first_name "

+

"FROM author WHERE country=? ORDER BY au_id";

try {

 

 

 

 

conn = dbs.getConnection();

 

 

pstmt = conn.prepareStatement( query );

} catch( Throwable e2 ) {

 

 

 

e2.printStackTrace();

 

 

 

return( null );

 

 

}

 

 

 

try {

 

 

 

 

pstmt.setString( 1, country );

 

 

if( rst != null ) {

rst.close();

}

 

rst = pstmt.executeQuery();

 

} catch(SQLException e) { rst = null; } return( rst );

}

КОМПОНЕНТ ИСПОЛЬЗУЕМЫЙ НА СТРАНИЦЕ AUTHOR8.JSP (ОКОНЧАНИЕ)

public void setCountry( String p_country) { country = p_country;

}

//----------------------------

public String getCountry() { return( country ); }

//------------------------

public void allClose() { try { rst.close();

pstmt.close();

conn.close();

}

catch(Exception e) {}

}

}

Получить страницу Вы можете вызвав ее с помощью метода GET, то есть используя URL:

http://bas:8089/u00/Author8.jsp?country=США

ИТОГИ

В первом приближении мы рассмотрели использование JSP страниц, их жизненный цикл и особенности применения.

В теме также рассмотрено использование

компонентов на странице с помощью действия useBean.

Важным аспектом применения JSP страниц

являются такие объекты, как директивы ,

выражения, скриптлеты

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]