2012-01-15 2 views
4

На странице JSP мы можем получить доступ к атрибутам, используя это: ${name}. Но если мы в sevlet делаем следующее:Язык выражения. Доминирующая переменная

req.getSession.setAttribute("name", sessionName); 
getServletContext().setAttribute("name", sevletContextName) 
req.setAttribute("name", reqName); 

, то какая переменная JSP будет доступна, если вы используете?

$ {имя}

+0

HTTP: // документы .oracle.com/javaee/1.4/tutorial/doc/JSPIntro7.html – alf

ответ

6

СПЯ EL выглядит страницы, а затем запросить, то сессия, то приложение.

Если вы хотите получить доступ к сеансу явно, используйте

${sessionScope.name} 

Для контекста сервлета используйте

${applicationScope.name} 

(и аналогично для pageScope и requestScope)

+0

hm, спасибо. Но что отличается между pageScope и requestScope? Область запроса существует до тех пор, пока сервер не будет (поскольку один запрос может быть передан между несколькими сервлетами, страницами jsp и т. Д.), Область страницы существует только в 1 сервлете или в 1 jsp. Это право? – MyTitle

+1

Если вы определяете атрибут области страницы на странице JSP, например, с помощью или используя pageContext.setAttribute(), атрибут существует только для этой страницы. Динамически включенные страницы или пересылаемые страницы не видят этого атрибута. Сервлеты не имеют атрибутов области страницы. –

+0

Почему мне нужно использовать pageContext.setAttribute() вместо использования переменной класса? Потому что не является потокобезопасным? Или по другой причине? – MyTitle

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