Вы не можете сделать это чисто без использования сервлета предварительной обработки или инфраструктуры MVC, такой как JSF.<jsp:useBean>
предлагает только средства для получения / установки значений модели.Ничего более.Он может абсолютно не вытеснить часть контроллера MVC.
Вы можете обойти это, введя ленивую загрузку в геттер или ленивое выполнение в сеттере.
Например, ленивая загрузка:
public String getString() {
if (string == null) {
start();
}
return string;
}
с
${start.string}
или ленивым выполнением:
public void setString(String string) {
if (this.string == null) {
start();
}
this.string = string;
}
с
<jsp:setProperty name="start" property="string" value="somevalue" />
Имейте в виду, что это уродливый хак.Вы должны действительно посмотреть на сервлеты или MVC фреймворкиЕсли вы все еще новичок, начните с простого сервлета.См. Также на нашей вики-странице сервлетов , где приведены примеры из всего мира.Обратите внимание, что когда вы используете сервлеты, вы не нуждаетесь в <jsp:useBean>
и больше не поддерживаете.
Ваше конкретное функциональное требование на самом деле неясно.В частности, использование открытого статического метода в bean-объекте сессионной области сбивает с толку.Если вы действительно хотите вызвать метод при запуске веб-приложения, используйте ServletContextInitializer#contextInitialized()
.Или, если вы хотите вызвать метод при создании сеанса, используйте HttpSessionListener#sessionCreated()
.
О, дизайн вашего бина неправильный.Он должен иметь (неявный) конструктор по умолчанию без аргументов.