我有两个Java servlet,
A.java and B.java
和JSP页面
my.jsp
my.jsp发送会话,
session.setAttribute("path", loc);
可以在A.java中找到
HttpSession session = request.getSession();
String fpath = session.getAttribute("path").toString();
使用此会话并重新调整my.jsp
RequestDispatcher rd = request.getRequestDispatcher("my.jsp");
rd.forward(request, response);
之后,当我尝试使用
从B.java中的my.jsp访问同一个会话时HttpSession session = request.getSession();
String b = session.getAttribute("path").toString();
b返回null。给出NullPointerException。
怎么办?为什么它不起作用?
更多信息,
my.jsp有多个按钮,当点击按钮A时a.java被执行并返回一些东西显示在my.jsp中,因为my.jsp刷新,按钮A从my.jsp中删除,当按钮B点击然后b.java进入图片,它显示在下面的屏幕。
在第36行,我有
String b = session.getAttribute("path").toString();
答案 0 :(得分:0)
将以下内容添加到a.java
session.setAttribute("path1", fpath);
并在b.java
中访问相同的内容,
String b = session.getAttribute("path1").toString();
在b.java中,当你被重定向到my.jsp时,你的loc变量被设置为null。
答案 1 :(得分:0)
我知道我的会话正在刷新。
所以,
在my.jsp中我已经包含了检查会话是否存在的内容,如下所示,
<%
String timeStamp = new SimpleDateFormat("dd:MM:yyyy_HH:mm:ss:SSS").format(Calendar.getInstance().getTime());
timeStamp = timeStamp + ":" + System.nanoTime();
HttpSession ses = request.getSession();
if(ses == null || ses.getAttribute("path") == null)
{
session.setAttribute("path", timeStamp);
}
else
{
session.getAttribute("path");
}
%>
在Upload.java中,我收到了这个会话并将收到的值再次添加回会话,
String fpath = request.getSession().getAttribute("path").toString();
HttpSession session = request.getSession();
session.setAttribute("path", fpath);
//Did my file upload stuff using apache commons
RequestDispatcher rd = request.getRequestDispatcher("my.jsp");
rd.forward(request, response);
最后,在使用会话后的mu exec.java中我将其无效
HttpSession ses = request.getSession();
ses.invalidate();
现在,即使正在刷新页面,我也能够访问会话。