Установить переменную сеанса spring mvc 3

#java #spring #spring-mvc

#java #spring #spring-mvc

Вопрос:

Как я могу установить объект сеанса, который я могу использовать затем в любом из моих представлений, используя ${variable} или ${requestScope.variable}

Чтобы иметь возможность использовать сеансы, нужно ли мне устанавливать <%@ page session="true" %> ?

Ответ №1:

Если вы хотите получить доступ к переменной сеанса в вашем представлении, самый простой способ сделать это :

 ${sessionScope.yourVariable} 
  

Смотрите Использование объектов области для получения дополнительной информации.

Если вы установите <%@ page session="true"> , то JSP объединит область сеанса и область страницы в единое пространство имен. Затем вы можете сделать:

 ${yourVariable}
  

Вы можете поместить что-то в сеанс в контроллере mvc следующим образом:

 @RequestMapping("/test")
@Controller
public class TestController {
    @RequestMapping(method = RequestMethod.GET)
    public String testMestod(HttpServletRequest request)
    {
        request.getSession().setAttribute("testVariable", "Test Values!!");
        return "testJsp";
    }
}
  

Наконец, атрибут @SessionAttribute предназначен для конкретного варианта использования и не помещает переменные в сеанс, чтобы любой мог получить к ним доступ:

Вот как разработчики spring описывают функциональность @SessionAttribute:

@sessionAttributes работает таким же образом, как и sessionForm в SimpleFormController. Это помещает команду (или для @sessionAttributes любого объекта) в сеанс на время между первым и последним запросом (большую часть времени начальный GET и конечный POST). После этого материал удаляется.

Каждый контроллер имеет свою собственную ModelMap, поэтому что-то, помещенное как @sessionAttributes в controller1, недоступно в controller2 и наоборот. Для того, чтобы это сработало, вам придется вручную добавлять данные в сеанс самостоятельно.

Ответ №2:

Используйте аннотацию sessionAttributes. Ознакомьтесь с документацией spring здесь

Вы также можете вручную добавлять и удалять переменные из сеанса с помощью API DefaultSessionAttributeStore