2012-01-24 8 views
0

Для моего образовательного JSP-проекта (Servlets, Java EE) мне нужно реализовать базу данных на Java. На индексной странице я также выполняю функцию для создания базы данных (а не MySQL, но что-то вроде структуры на основе HashMap со ссылками на объекты) и заполнения ее базовыми данными. Моя проблема в том, что я не могу сделать эту «базу данных» глобальной и не могу получить доступ к этой структуре со всех страниц сайта. Как передать указатель/ссылку на эту структуру на всю страницу JSP-сайта?Глобальная структура переменных (DB) в JSP-проекте

+1

Почему вы не можете ake это глобальный? Почему вы должны это реализовать? –

+0

Это небольшой проект temp, который был запущен не мной, и все, что мне нужно, это исправить это, чтобы пользователи не могли получить доступ к глобальному HashMap и выполнять запрос с любой страницы. –

ответ

1

Установите его как атрибут контекста сервлета при запуске webapp. Для этого вы можете использовать ServletContextListener.

@WebListener 
public class DatabaseConfigurator implements ServletContextListener { 

    @Override 
    public void contextInitialized(ServletContextEvent event) { 
     Map<String, Object> database = new HashMap<String, Object>(); 
     event.getServletContext().setAttribute("database", database); 
    } 

    // ... 
} 

Он доступен во всех сервлетов следующим образом:

Map<String, Object> database = (Map<String, Object>) getServletContext().getAttribute("database"); 
// ... 

Это availablew во всех JSPs следующим образом:

${database} 

(значение карты доступно с помощью ключа отображения при обычные EL-значения, как в ${map.key})

1

Написать servlet, заполнить результат из базы данных (подготовить список), связать этот результат с атрибутом запроса (или атрибутом сеанса) и переслать его в JSP через RequestDispatcher. В JSP вы можете перебирать этот список, используя EL и JSTL.

Смежные вопросы