项目场景:
前后台数据以cookie形式进行传输:
前台通过URL向后台传输一个meetingCode,后台根据获取到的 meetingCode 生成相应的xml文件,创建相应的的数据文件存储路径,以及将从数据库中查询到的数据信息装载到cookie中,向后台方法中发送信息后台即可根据cookie信息生成新的数据填报表单。
Cookie Code = new Cookie("meetingCode", meetingCode);
Cookie Path = new Cookie("originPath", path);
Cookie zipName = new Cookie("zipName", genetateName);
Cookie subjectCodes = new Cookie("subjectCodes", detailSubjectCode);
Cookie subStorage = new Cookie("subStorage", detailFileStorage);
response.addCookie(Code);
response.addCookie(Path);
response.addCookie(zipName);
response.addCookie(subjectCodes);
response.addCookie(subStorage);
out.println("detailFileStorage"+detailFileStorage);
response.sendRedirect("/GZJGInforUpload/meetingUpload/UploadInfor.jsp");
问题描述
之前的项目是正常运转的,后来将该项目打包(war)后部署到Tomcat上,几天之后发现表单数据的cookie无法提交(原本的eclipse也和Tomcat部署在该服务器上),
前台表单保存好数据后向后台提交数据,后台获取不到对应的cookie数据,报错(空指针异常):
在路径为/GZJGInforUpload的上下文中,Servlet[jsp]的Servlet.service()引发了具有根本原因的异常java.lang.NullPointerException java.lang.NullPointerException
从请求的cookie中获取相关信息:
Cookie cookies[]=request.getCookies();
但是获取到的cookie中没有包含之前发送的cookie信息,项目报错,打开相关jsp转换后的Java文件(D:\tomcat\apache-tomcat-8.5.57\work\Catalina\localhost\GZJGInforUpload路径:)也显示该cookie无法被接收到。
原因分析:
在网上查了一些资料,具体原因没有明白 ,但是找到了解决方法
解决方案:
在获取cookie的代码前再添加一行,修改代码为 :
String cookieHeader =request.getHeader("cookie");
Cookie cookies[]=request.getCookies();