Я делаю (спасибо некоторым пользователям на этом портале) мое приложение, которое реализует SessionAware.
Это мой фактический код:
public class UserManager extends ActionSupport implements SessionAware {
private Map<String, Object> session;
@Override
public String execute() throws Exception {
return SUCCESS;
}
public void setSession(Map<String, Object> map) {
this.session=map;
}
public String checkLogin() {
session.put("loggedOn", true);
return SUCCESS;
}
public String checkLogout() {
session.clear();
return SUCCESS;
}
}
И я проверяю эти переменные в моем .jsp:
<s:if test="#session['loggedOn']!=true">
DIV LOGIN
</s:if>
<s:else>
DIV LOGOUT
</s:else>
Простой кусок кода.
Что я хотел бы знать, так это:
1 - бин (по умолчанию) ограничен запросом.Поэтому, когда запрос закончен, он будет уничтожен.Но я вижу, что, когда я помещаю переменную в карту, она все еще жива на сервере.Как это возможно?Является ли переменная моего Бина.
2 - Кто вызывает метод setSession?Я думаю, что сервлет, из-за того, что я реализую этот интерфейс?
3 - я хотел бы отсоединиться о сохранении объекта / бина на объекте сеанса.Я хотел бы использовать сферу действия Bean (как для любого вида инфраструктуры MVC).Как я могу сделать это на Struts2?
Надеюсь, вы сможете прояснить эти вопросы :) Cheers