session()。getAttribute返回null

时间:2015-04-30 13:02:20

标签: java jsp session servlets

我有一个调用jsp页面的servlet。 在servlet中,我正在检索登录时提供的用户名。 但是在会话中设置相同之后,当我访问被调用的jsp页面时,它返回null。

Servlet代码:

public class AdminServlet extends HttpServlet {
/**
 * 
 */
private static final long serialVersionUID = -4244742541587179390L;

public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    String userName =  request.getParameter("name");
    System.out.println("UserName: " + userName); // Here it prints the username properly
    request.getSession(true).setAttribute(request.getParameter("name"), userName );
    RequestDispatcher rd = request.getRequestDispatcher("upload.jsp");
    rd.forward(request, response);
//  response.sendRedirect("upload.jsp");
}

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

我正在访问此代码的JSP代码片段:

<label class="message">Welcome <%= session.getAttribute("userName") %></label>

我在这里做错了什么?任何人都可以帮忙吗

4 个答案:

答案 0 :(得分:1)

你应该从

的值获得会话值
request.getParameter("name");

或在servlet中需要如下:

request.getSession(true).setAttribute(“userName”,request.getParameter(“name”));

答案 1 :(得分:1)

这是错误的:

request.getSession(true).setAttribute(request.getParameter("name"), userName ); 

我认为应该是

request.getSession(true).setAttribute("userName", userName );

答案 2 :(得分:1)

我认为你颠倒了两个参数。它应该是这样的:

   request.getSession(true).setAttribute("userName", userName );

答案 3 :(得分:0)

快速浏览一下,我认为这可能有点类似,可能有所帮助:JSP Session.getAttribute() value return null