java - 登录后Jsp和servlet与用户的getAttribute错误

标签 java jsp servlets

<% 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();
        }
    }
}

最佳答案

您确定可以将 session 属性“username”强制转换为Cliente吗?

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

这意味着 currentUsernull 并且您无法对其调用任何函数。 也许您可以先打印出 session 中实际拥有的内容

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

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

编辑

据我所知,您在 session 中使用键“utente”设置了整个对象utente(我猜是您的用户对象)。属性“username”仍然不存在。

你能做的是

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

如果Utente类有一个getUsername方法。

关于java - 登录后Jsp和servlet与用户的getAttribute错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52332563/

相关文章:

java - Spring外部配置

html - 如何在jsp页面文本区域显示tomcat登录(实时)?

jsf - 从 Servlet 访问 JSF ViewScoped 托管 bean

java.sql.SQLException : Column Index out of range, 0 < 1

java - jsp:setProperty 相当于 servlet

java - 为什么我们不应该吞下 InterruptedException

java - 如何检查文件名

java - 为什么?在java中使用接口(interface)编码的最佳方法?

java - 在带有附加 Bean 类的 Combobox jsp 中列出数据库值 java

java - JSP - 如何以特定顺序显示元素?