2016-11-21 173 views
0

我一直在試圖找出爲什麼我的會話會在我進行POST時丟失的原因。在POST上丟失會話

我在整個應用程序中檢查我的會話,但是當我調用一個特定的servlet時,會話將會丟失,並且它只會落在這個特定的servlet上。問題是間歇性的,所以非常令人沮喪。我不確定需要什麼,所以我會盡可能多地提供信息。

頁面通過servlet訪問。我可以驗證會話仍然是一樣的。

由於用戶通過應用程序路由,我可以看到會話仍然是相同的。

檢查會話:HTTP會話CEHKIIMEKHMH 調用get詳細 檢查會話:HTTP會話CEHKIIMEKHMH 調用項目詳情 檢查會話:HTTP會話CEHKIIMEKHMH 調用安裝時控制 檢查會話:HTTP會話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">

他們發佈的那一刻,會話丟失

調用的文件上傳 檢查會話:空 空

這裏是servlet開始

\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

這可能是由於多部分表單請求。你可以嘗試另一個沒有多部分請求的servlet doPost,並檢查你是否仍然看到會話。 – amitmah

+0

這個問題是發生在開發還是兩者(開發和生產)? –

+0

目前這隻發生在開發中。由於這個問題,我沒有將它投入生產。我會試一試,看看它是否仍然存在。 – user3183411

回答

0

我已經縮小了這個問題,但我還沒有解決它。它發生在我的重定向過程中。我也沒有正確編碼網址。我已經修改了我的所有重定向有如下因素:

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

這隻能解決它在服務器端,雖然當我在處理來自客戶端的重定向不提供解決方案。

+0

說到即將。問題仍然存在!!!! – user3183411