我有一个调用jsp页面的servlet。 在servlet中,我正在检索登录时提供的用户名。 但是在会话中设置相同之后,当我访问被调用的jsp页面时,它返回null。
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>
我在这里做错了什么?任何人都可以帮忙吗
答案 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