2013-03-19 5 views
0

Я использую jsp/servlets для базового приложения ajax. Я устанавливаю сеанс с сервлетом, но я возвращаю null. Мои фрагменты кода, как следуют:Получение сеанса сервлета JSP, возвращает нулевое значение

Servlet:

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

    String name=null; 
    String sessionStrSet = null; 


    if(request.getParameter("session").toString().equals("setSession")){ 

     name = request.getParameter("user"); 

     HttpSession session = request.getSession(true); 
     session.setAttribute("sessionPw", name); 
     sessionStrSet = session.getAttribute("sessionPw").toString(); 

     response.setContentType("text/plain"); 
     response.setCharacterEncoding("UTF-8"); 
     response.getWriter().write(sessionStrSet + " " + "data write"); 

    } 

    if(request.getParameter("session").toString().equals("getSession")){ 
     //how do i retrieve the session data here? 
     response.setContentType("text/plain"); 
     response.setCharacterEncoding("UTF-8"); 
     response.getWriter().write(sessionStrSet + "get session"); 
    } 


} 

Аякса отлично работает это только сеанс при получении, что, как представляется, является проблемой. Я могу вытащить данные, как только он будет установлен в первом if(). Но когда я делаю еще один запрос, он возвращается как null. Нужен ли мне другой HttpSession? Любая помощь очень ценится, я PHP-разработчик, а не JSP, так что это очень новое для меня!

+0

Во втором 'if' блок, который является взаимоисключающим с первого' if' блока, вам нужно вызвать 'request.getSession (ложь)', чтобы получить сеанс, который был заполненный более ранним POST. Подумайте о том, что сеанс является глобальной областью, доступной для разных запросов. – jalynn2

+0

Ahaaaa! Я думаю, это единственная комбинация метода .getession, который я не пробовал! Cheers попробует и опубликует вас как ответ, если работает! – ChrisSherwood

+0

@ jalynn2 request.getSession (true) также использует существующий сеанс, если он существует –

ответ

1

Вам действительно нужно отдельное ifs?

getSession(true) возвращает текущую сессию или создает новое, если ток отсутствует.

см в документации http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html#getSession%28boolean%29

+0

Может быть прав. Я не понимал, что getSession() работал так! – ChrisSherwood

Смежные вопросы