session的问题

堕落的唐僧 2014-08-19 11:19:44
机顶盒上我要记录不同页面访问我的业务页面时的returnURL用于遥控器返回,下面是过滤器的代码,在走SSO之前记录returnURL保存进SESSION,为什么在JSP里<%=session.getAttribute("returnURL") %>取出来的值都是NULL

import java.io.IOException;
import java.net.URLEncoder;

import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

public class OnlineFilter implements HandlerInterceptor {
Logger MyLogger = Logger.getLogger("MyLogger");


public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1,
Object arg2) throws Exception {
// TODO Auto-generated method stub
HttpServletRequest req = (HttpServletRequest) arg0;
HttpServletResponse res = (HttpServletResponse) arg1;
HttpSession session = req.getSession();
//记录session
String returnURL = arg0.getParameter("returnURL");
arg0.getSession().setAttribute("returnURL",returnURL);

String userId = arg0.getParameter("UserID");
String result = arg0.getParameter("Result");
String spId = arg0.getParameter("SPID");
String UserToken = arg0.getParameter("UserToken");
String uri = ((HttpServletRequest) arg0).getRequestURI();
String url = req.getServletPath();


if ("0".equals(result) && null != userId) {
User user = new User();
user.setUserId(userId);
session.setAttribute("user", user);
req.getSession().setAttribute("user", user);
req.getSession().setAttribute("UserID", userId);
req.getSession().setAttribute("UserToken", UserToken);
req.getSession().setAttribute("SPID", spId);

}
if (session.getAttribute("user") == null) {

res.sendRedirect("http://124.75.29.164:7001/iptv3a/VASGetUserinfoAction.do?SPID=12341122&Action=UserTokenRequest&ReturnInfo="
+ "&ReturnURL=http://"
+ arg0.getLocalAddr()
+ ":"
+ arg0.getLocalPort() + req.getContextPath() + "/index.do");
return false;

} else {

// 记录LOG4J
MyLogger.info(session.getId() + ","
+ session.getAttribute("UserID") + ","
+ arg0.getRemoteAddr() + ","
+ ((HttpServletRequest) arg0).getRequestURL() + ","
+ ((HttpServletRequest) arg0).getHeader("REFERER") + ","
+ ((HttpServletRequest) arg0).getHeader("User-Agent"));
}
return true;
}

public void afterCompletion(HttpServletRequest arg0,
HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
// TODO Auto-generated method stub

}

public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
Object arg2, ModelAndView arg3) throws Exception {
// TODO Auto-generated method stub

}
}
...全文
146 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
堕落的唐僧 2014-08-20
  • 打赏
  • 举报
回复
感觉在本地自己跳自己业务页面能获得,在服务器上就没有,奇怪了
Norris_Zhang 2014-08-19
  • 打赏
  • 举报
回复
用session.getId()获取到sessionId,记录下来,看看两次请求是不是同一个session,如果客户端不记录cookie,很有可能是session丢失了。
火柴棍的坚强 2014-08-19
  • 打赏
  • 举报
回复
一般是你没有获得returnURL 数据;调试下就知道了String returnURL = arg0.getParameter("returnURL"); 保存数据没有问题 arg0.getSession().setAttribute("returnURL",returnURL); 要么你获取session时有问题(你上面写的获取session是没问题的,其他情况就不清楚了
S117 2014-08-19
  • 打赏
  • 举报
回复
你在arg0.getParameter("returnURL")去得returnURL的时候,returnURL是不是null
堕落的唐僧 2014-08-19
  • 打赏
  • 举报
回复
没人啊。。。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧