Это та же или другая область pageContext и некоторые из неявных объектов на странице JSP?

Это то же самое или разные, если разные, то, пожалуйста, дайте мне причину для этого и как?

эти вещи находятся в скриплете..

1) pagecontext, который.setAttribute("первый","value1",pageContext.REQUEST_SCOPE);

и

запрос.setAttribute ("first","value1");

2) pagecontext, который.setAttribute("первый","value1",pageContext.SESSION_SCOPE);

и

сессии.setAttribute ("first","value1");

3) pagecontext, который.setAttribute("первый","value1",pageContext.APPLICATION_SCOPE);

и

приложение.setAttribute ("first","value1");

2 ответов


на страницах JSP у вас есть до "4 мест", где вы можете поместить объекты, чтобы получить их позже.

1) область

все, что вы помещаете в область своей страницы, доступно только там. Любая другая страница в том же запросе, включенная или перенаправленная, не увидит объект, поскольку они определяют свою собственную область страницы, которая не содержит область страницы вызывающей страницы.

это область по умолчанию, поэтому вызов pageContext.setAttribute("a", "b", PageContext.PAGE_SCOPE); Это то же самое, что и вызов pageContext.setAttribute("a", "b");

2) просить пределы

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

вызов pageContext.setAttribute("a", "b", PageContext.REQUEST_SCOPE); это то же самое, что и вызов request.setAttribute("a", "b");

3) объем сессии

то, что вы ставите на область сеанса, доступно для всех запросы на тот же сеанс пользователя.

вызов pageContext.setAttribute("a", "b", PageContext.SESSION_SCOPE); это то же самое, что и вызов session.setAttribute("a", "b");

4) область применения

то, что вы помещаете в область приложения, доступно во всех запросах вашего приложения (т. е. доступно всем пользователям). Это подразумевает время жизни, которое в основном до тех пор, пока приложение работает. Так что вы обычно не хотите использовать это.

вызов pageContext.setAttribute("a", "b", PageContext.APPLICATION_SCOPE); равно вызову application.setAttribute("a", "b");


все три в основном одинаковы, просто другой способ установки переменной в соответствующих областях.
проверьте это статьи. Он утверждает, что третий параметр для setAttribute метод определяет область, в которой необходимо установить переменную.

поэтому в вашем случае сначала будет установлено значение в области запроса, второй установит его в сеансе, а третий установит его в области приложения.