从JSP和servlet访问bean

时间:2018-05-28 19:28:43

标签: java jsp servlets

我正在试图弄清楚如何从JSP和servlet访问Java bean。

我以前在使用带有useProperty的JSP中使用bean时已经很好了。我想通过我的servlet与那些相同的bean进行交互,但它无法正常工作。

我的servlet中有这个。这是在提交表格后调用的。

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并插入它,它对于一个页面加载很好,但我刷新它再次为null。我希望它在客户端会话期间持续。

同样,我可以在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>

这样可行,它将显示我的bean的默认访问值(“dog”),我知道如果没有找到,useBean将创建一个bean。如果我重新加载我的test.jsp,我认为它应该打印“cat”而不是“dog”,因为我们刚刚创建了一个bean并调整了访问值,但它仍然打印出“dog”。如果我再次检查servlet是否知道用户bean,它将变为null。

从我读过的内容来看,我做得对,并且这应该工作。我做错了什么?

0 个答案:

没有答案