在POST上丢失会话

时间:2016-11-21 22:09:46

标签: java session servlets session-variables

我一直试图找到原因,当我进行POST时,为什么我的会话会丢失。

我正在整个应用程序中检查我的会话,但是当我调用特定的servlet时,会话将会丢失,并且它只会丢弃在这个特定的servlet上。问题是间歇性的,所以非常令人沮丧。我不确定需要什么,所以我会尽可能多地提供信息。

通过servlet访问该页面。我可以验证会话是否仍然相同。

当用户通过应用程序进行路由时,我可以看到会话仍然是相同的。

检查会话:HTTP会话CEHKIIMEKHMH 调用获取详细信息 检查会话:HTTP会话CEHKIIMEKHMH 调用项目详细信息 检查会话:HTTP会话CEHKIIMEKHMH 呼叫附件控制器 检查会话:HTTP会话CEHKIIMEKHMH

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

}

这是我的表格发布。在我执行验证后,表单实际上是通过javascript提交的,我只是调用$('#files).submit();不确定这是否真的重要。

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

他们发布的那一刻,会话就丢失了

调用文件上传 检查会话:null 空

这是servlet的开始

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

这是全面的方法。我不知道问题是什么。

1 个答案:

答案 0 :(得分:0)

我已经缩小了这个问题,但我还没有解决它。它发生在我的重定向期间。我也没有正确编码URL。我修改了所有重定向以获得以下内容:

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

这只能在服务器端解决,但在我处理来自客户端的重定向时无法提供解决方案。

相关问题