Доступ к бину из JSP и сервлета - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь выяснить, как получить доступ к 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».Если я снова проверю, знает ли сервлет пользовательский бин, он окажется равным нулю.

Из того, что я прочитал, я все делаю правильно, и это должно сработать.Что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...