繁体   English   中英

登录后用户的getAttribute的jsp和servlet错误

[英]Jsp and servlet error with getAttribute of the user after login

<% Cliente currentUser = (Cliente) session.getAttribute("username"); %>
<h2>   Username <%= currentUser.getUsername()   %></h2>

登录后,我想获取用户的用户名。如何解决或修复servlet登录?

这是servlet登录,登录后没有保存用户名的问题是什么?

@WebServlet("/Login")
public class Login extends HttpServlet {

    private static final long serialVersionUID = 1L;

    public Login() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String pass = request.getParameter("password");
        try {
            Utente utente = (Utente) Query.TrovaCliente(username, pass);
            if (utente == null) {
                request.getRequestDispatcher("loginError.jsp").forward(request, response);
            } else {
                HttpSession session = request.getSession();
                synchronized (session) {
                    session.setAttribute("utente", utente);
                }
                request.getRequestDispatcher("index.jsp").forward(request, response);
            }
        } catch (SQLException e) {
            request.getRequestDispatcher("loginError.jsp").forward(request, response);
            e.printStackTrace();
        }
    }
}

您确定可以将会话属性“用户名”转换为Cliente吗?

<% Cliente currentUser = (Cliente) session.getAttribute("username"); %>
<h2>   Username <%= currentUser.getUsername()   %></h2> // <-- here you get a NullPointer

这意味着currentUsernull ,您不能在其上调用任何函数。 也许您可以先打印出会话中实际拥有的内容

<h2> session attribute: <%=session.getAttribute("username"); %> </h2>

确保会话实际上包含您要查找的属性,并且可以将其Cliente转换为Cliente对象。

编辑

从我可以看到你设置整个对象utente (我猜是你的用户对象)与关键会话"utente" 属性"username"仍然不存在。

你能做的是

 <% Utente currentUser = (Utente ) session.getAttribute("utente"); %>
 <h2>   Username <%= currentUser.getUsername()   %></h2> 

如果类Utente具有getUsername方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM