Бины в jsp

 
 
 
Сообщения:1
Суть такая есть сервлет, в методе doPost создаю бин класса PersonBean записываю его в реквест и передаю на jsp:
req.setAttribute("person", person);
req.getRequestDispatcher("/table.jsp").forward(req,resp);


В jsp достаю бин
<jsp:useBean id="person" class = "entity.PersonBean" scope="request"/>

Вот тут вопрос первый, этот action каким-то магическим образом достает из реквеста записанный мною объект и вставляет его в person? (никаких setProperty я не использовал)

Дальше через EL использую свой бин:
<td>${person.name}</td>
<td>${person.surname}</td> 


Вот теперь ситуация вторая: если я уберу из jsp страницы эту строку
<jsp:useBean id="person" class = "entity.PersonBean" scope="request"/>


то почему
<td>${person.name}</td>
<td>${person.surname}</td> 

все равно будет работать хоть и с варном?
 
 
Сообщения:1192
https://docs.oracle.com/cd/E23507_01/Platform.20073/PageDevGuide/html/s0203elvariablescopes01.html
Quote:
An EL variable can be set to one of several scopes:

pageScope constrains access to the current JSP.

requestScope constrains access to the current request. The attribute is not accessible to other requests, even if they originate from the same user session.

sessionScope enables access to the user session. The attribute persists for the duration of that session.

applicationScope enables access to all application resources and users. The state of the attribute is the same for all users of the application.

The default scope is pageScope, which is used when the attribute declaration omits scope specification. You should specify the narrowest scope possible, in order to minimize the chance that two attributes with the same name have overlapping scopes.


EL пытается найти переменную во всех доступных скоупах, во избежание конфликтов рекомендуется указывать скоуп в выражении - requestScope.person.name.
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет