Я использую 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, так что это очень новое для меня!
Во втором 'if' блок, который является взаимоисключающим с первого' if' блока, вам нужно вызвать 'request.getSession (ложь)', чтобы получить сеанс, который был заполненный более ранним POST. Подумайте о том, что сеанс является глобальной областью, доступной для разных запросов. – jalynn2
Ahaaaa! Я думаю, это единственная комбинация метода .getession, который я не пробовал! Cheers попробует и опубликует вас как ответ, если работает! – ChrisSherwood
@ jalynn2 request.getSession (true) также использует существующий сеанс, если он существует –