2016-11-21 9 views
0

Я пытался найти причину, почему моя сессия будет потеряна, когда я сделаю POST.Потеря сессии на POST

Я проверяю свою сессию на всем протяжении своего приложения, но сеанс будет падать, когда я вызову конкретный сервлет, и он будет только на этом конкретном. Проблема прерывистая, поэтому она очень расстраивает. Я не уверен, что нужно, поэтому я поставлю столько информации, сколько смогу.

Доступ к странице осуществляется через сервлет. Я могу проверить, что сеанс все тот же.

Поскольку пользователь выполняет маршрутизацию через приложение, я вижу, что сеанс все тот же.

Проверка сеанса: HTTP Session CEHKIIMEKHMH Calling Получить подробную информацию Проверка сеанса: HTTP Session CEHKIIMEKHMH Вызов Детали проекта Проверка сеанса: HTTP Session CEHKIIMEKHMH Вызов Attachment Controller Проверка сеанса: HTTP Session CEHKIIMEKHMH

public class Attachments extends HttpServlet { 
 
\t private static final long serialVersionUID = 1L; 
 
     
 
\t protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
 
\t 
 
\t \t System.out.println("Calling Attachment Controller"); 
 
\t \t HttpSession session = request.getSession(false); 
 
\t \t System.out.println("Checking Session:"+session); 
 
\t \t 
 
\t \t if(session != null){ 
 
\t \t \t Object projectId = session.getAttribute("projectId"); 
 
\t \t \t request.getRequestDispatcher(response.encodeURL("views/attachments.jsp")).forward(request, response); 
 
\t \t }else{ 
 
\t \t \t System.err.println("Invalid session"); 
 
\t \t \t response.sendRedirect("/"); 
 
\t \t } 
 
\t \t \t \t 
 
\t } 
 

 
}

Вот моя форма публикации. Форма фактически передается через javascript после выполнения проверки, я просто просто вызываю $ ('# files) .submit(); не уверен, действительно ли это имеет значение или нет.

<form id="files" name="files" method="POST" action="FileUpload" enctype="multipart/form-data">

В тот момент они вывешивают, сеанс теряется

Вызов файла Загрузить Проверка сессии: нуль нуль

Вот начало сервлета

\t protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
 
\t \t 
 
\t \t System.out.println("Calling File Upload"); 
 
\t \t HttpSession session = request.getSession(false); 
 
\t \t System.out.println("Checking Session:"+session); 
 
\t \t 
 
\t \t if(session != null){ 
 
\t \t \t Object projectId = session.getAttribute("projectId"); \t \t 
 
\t \t \t System.out.println("Accessing File Upload: Session is valid"); 
 

Это тот же метод по всей доске. Я понятия не имею, в чем проблема.

+0

Возможно, это связано с запросом на получение множественной формы. Можете ли вы попробовать другой сервлет doPost без многократного запроса и проверить, все ли видите сеанс. – amitmah

+0

Является ли эта проблема возникающей при разработке или обоим (разработка и производство)? –

+0

В настоящее время это происходит только в процессе разработки. Из-за этой проблемы я не перешел в производство. Я дам ваше предложение попробовать и посмотреть, все ли это происходит. – user3183411

ответ

0

Я сузил проблему, но я все еще не решил ее. Это происходит во время моего перенаправления. Я также неправильно кодировал URL-адрес. Я изменил все мои переадресовывает иметь на следующие:

\t \t \t request.getRequestDispatcher(response.encodeRedirectURL("views/attachments.jsp")).forward(request, response);

Это только решает проблему, на стороне сервера, хотя и не обеспечивает решение, когда я обработки редиректов от клиента.

+0

Говорил быстро. Проблема все еще встречается !!!! – user3183411