[英]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
这意味着currentUser
为null
,您不能在其上调用任何函数。 也许您可以先打印出会话中实际拥有的内容
<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.