Я пытаюсь выяснить, как получить доступ к Java-бину из JSP и сервлета.
Раньше я был в порядке, используя бины только из JSP с useProperty.Я хотел бы взаимодействовать с теми же компонентами через мой сервлет, и он не работает.
У меня есть это в моем сервлете.Это вызывается после отправки формы.
public class Login extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String user = request.getParameter("user");
String pass = request.getParameter("pass");
UserBean userBean = (UserBean) request.getSession().getAttribute("user");
if (userBean == null) {
//this prints
out.println("userBean is null");
request.getSession().setAttribute("user", new UserBean());
userBean = (UserBean) request.getSession().getAttribute("user");
if (userBean == null) {
//this DOES NOT print!
out.println("userBean is null");
}
}
}
}
Это всегда имеет значение null.Я могу сам создать UserBean и вставить его, и это нормально для загрузки одной страницы, но я обновляю и снова теряю значение.Я хочу, чтобы это продолжалось на протяжении сеанса клиента.
Точно так же я могу сделать это в JSP, например, test.jsp:
<jsp:useBean id="user" scope="session" class="my.code.UserBean" />
<jsp:getProperty name="user" property="accesses"></jsp:getProperty>
<jsp:setProperty name="user" property="accesses" value="cat"></jsp:setProperty>
И это работает, он будет отображатьсямое значение доступа по умолчанию ("собака") из компонента, я знаю, что useBean создаст компонент, если ничего не найдено.Если я перезагружаю свой test.jsp, я думаю, что теперь он должен напечатать «cat» вместо «dog», так как мы только что создали bean-компонент и скорректировали значение доступа, но он по-прежнему печатает «dog».Если я снова проверю, знает ли сервлет пользовательский бин, он окажется равным нулю.
Из того, что я прочитал, я все делаю правильно, и это должно сработать.Что я делаю не так?