`
assen
  • 浏览: 62209 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

静态html请求session丢失

阅读更多
一个临时推广的纯静态html活动页面,与原有项目分离,现活动页面要记录当前报名用户,并给当前报名用户一次抽奖机会,大致情况就是这样,程序如下:
public boolean checkChestCnts(HttpServletRequest request,Integer activeId,String account){
        //当前报名信息写入session
		HttpSession session = request.getSession();
		session.setAttribute("activeId", activeId);
		session.setAttribute("account", account);
		Statistics stat = getByActiveIdAndAccount(activeId, account);//查询用户
		if(null == stat){
			stat = new Statistics();
			stat.setActiveId(activeId);
			stat.setAccount(account);
			stat.setLotteryCnt(1);
			statisticsDao.addStatistics(stat);//存入报名信息
			return true;
		}
		return false;
	}

/**
 *检查并设置报名用户抽奖次数
*/
@RequestMapping("checkChestCnt")
	public void checkChestCnts(HttpServletRequest request,HttpServletResponse response,Statistics statistics){
		boolean bool = statisticsBo.checkChestCnts(request, statistics.getActiveId(), statistics.getAccount());
		String data = statistics.getJsonpCallback()+ "({\"result\":"+bool+"})";
		try {
			response.getWriter().write(data);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}


   /**
	 * 获取当前报名用户可抽奖次数
	 */
	@RequestMapping("getChestCnt")
	public void getChestCnts(HttpServletRequest request,HttpServletResponse response,Statistics statistics){
		HttpSession session = request.getSession();
		Object accountObj = session.getAttribute("account");
		//此处打印accountObj的值是null,checkChestCnt.do请求已先执行
		//.............
	}

静态页面用的是ajax的jsonp的方式请求服务端,account也已设置到session当中,在getChestCnt.do的请求中获取不到,当时怀疑getChestCnt.do请求中的session已经不是checkChestCnt.do中设置的那个session,html页面发生两个请求中的session已不在一个回话底下,如是在两个请求的响应头中设置P3P协议就可以成功获取到值
response.setHeader("P3P","CP=CAO PSA OUR");
//response.setHeader("P3P","CP='IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT'");


这个应该是和Iframe跨域session丢失是一样的问题,欢迎大伙提出不同见解。顺带贴一句网上找到的另一个设置,留作参考 response.setHeader("Access-Control-Allow-Origin" , "*" );//设置为*只是用来解决post请求跨域的问题
0
2
分享到:
评论
1 楼 小网客 2016-05-12  
用token解决

相关推荐

    Session详解(主要讲Session跟Cookic区别)

    - **Session丢失**:当用户清除Cookie或更改浏览器设置时可能导致Session丢失。 - **性能问题**:大量Session数据可能会导致服务器内存占用过高。 - **跨域访问**:当涉及到跨域请求时,需要特别处理Session数据的...

    Apache+tomcat集群环境配置

    Apache作为前端服务器,可以通过负载均衡技术将用户请求分发到多个后端的Tomcat实例上,实现请求的分担,同时通过session同步,保证用户会话的连续性。以下是对"Apache+mod_jk+Tomcat集群环境配置"的详细解析。 **1...

    servlet请求转发、重定向、包含

    浏览器会显示新的URL,并且所有的请求参数都会丢失,因为这是一个全新的请求。 - 通过`HttpServletResponse`对象的`sendRedirect()`方法实现重定向。 - 重定向可以在客户端和服务器之间传递状态信息,例如通过URL...

    session共享tomcat7 memcached 文档

    - 如果某台服务器重启或宕机,其内存中的Session数据将会丢失。 - 如果用户的会话数据非常庞大,可能会导致服务器内存占用过高,影响性能。 - 在负载均衡环境下,用户可能会被分配到不同的服务器上,这就需要一种...

    TOMCAT+APACHE集成以及session复制

    这对于实现负载均衡尤为关键,因为用户可以在集群中的任何服务器之间无缝切换,而不会丢失登录状态。 实现session复制,你可以使用多种方法。在TOMCAT+APACHE的场景下,一种常见的方式是通过TOMCAT的Clustering功能...

    nginx+tomcat7负载均衡+redis缓存session

    使用Redis作为session存储,可以避免单个服务器上session数据丢失,同时使得session数据在多台服务器间共享,这对于负载均衡环境至关重要。通过将session ID作为键,session数据作为值存储在Redis中,Nginx可以在...

    ASP生成静态页面的小程序

    ASP(Active Server Pages)是一种由...同时,确保生成的静态页面与原动态页面保持一致,不丢失任何动态功能或数据。对于大型网站,可能还需要考虑如何有效地管理和更新这些静态页面,例如在数据库更新后自动重新生成。

    C#实现简单获取及设置Session类

    - 使用Session时要考虑其生命周期管理,避免创建过多无用的Session,同时要处理Session丢失或过期的情况。 - 如果用户禁用了Cookie,那么Session ID将无法通过Cookie传递,这时需要其他方式(如URL重写)来维持...

    C#程序中session的基本设置示例及清除session的方法

    在实际开发中,可能会遇到一些Session操作的常见问题,例如Session丢失。这可能是由于Session状态管理方式(InProc、StateServer、SQLServer)的选择、Session超时、IIS配置问题或是浏览器设置等引起。为了解决这些...

    tomcat整合nginx负载均衡+memcache共享session全部程序包

    - **Session管理**:Tomcat默认的Session管理机制在集群环境中可能导致Session丢失,因此需要结合Memcache实现Session共享。 3. **Memcache**: - **Session共享**:Memcache是一个高性能的分布式内存对象缓存...

    tomcat8.5.5-cluster-redis-session-manager.zip

    它可以根据负载均衡策略(如轮询、权重、IP哈希等)分配请求,同时可以缓存静态资源,减轻后端服务器压力。 5. **JAR包**:压缩包内的 "tomcat-cluster-redis-session-manager" 很可能是实现Tomcat与Redis交互的...

    可以直接运行的session共享的tomcat

    在这个解决方案中,Nginx负责接收来自用户的请求,并根据预设策略(例如轮询、最少连接数等)将请求分发到后端的多个Tomcat服务器上。同时,Nginx还可以缓存静态资源,减轻服务器压力,提高响应速度。 压缩包内的...

    AyncHttpClient 实例,可保持session

    8. **其他资源**:`bin`目录包含编译后的类文件和资源,`res`包含应用的资源文件,如图标(`ic_launcher-web.png`)和布局,`assets`用于存放非结构化的静态文件,`gen`目录存放自动生成的Java源代码,`project....

    nginx+tomcat+memcached实现session共享

    在分布式系统中,每个Tomcat实例都有自己的session存储,这意味着当用户在不同服务器之间跳转时,如果不做特殊处理,他们的session信息无法共享,可能导致用户登录状态丢失。 为了解决这个问题,引入了Memcached,...

    手机购物车列表页静态网页模板

    4. **数据存储**:为了持久保存用户添加到购物车的商品,可以使用浏览器的本地存储(Local Storage)或会话存储(Session Storage)。这些API允许我们在客户端存储键值对数据,即使页面刷新也不会丢失。 5. **AJAX ...

    PHP实现负载均衡下的session共用功能

    然而,传统的PHP session机制是基于本地文件存储的,当多个请求被分配到不同的服务器时,session就无法在服务器之间共享,因此会导致session丢失。这显然不能满足负载均衡环境中用户会话持久性的需求。 为了解决这...

    Nginx+Tomcat+memcached实现集群部署、负载均衡session共享.rar

    它的主要优点在于处理静态资源的高效性以及能够将动态请求转发到后端服务器的能力。在集群部署中,Nginx会根据预设策略(如轮询、最少连接、IP哈希等)将用户请求分发到不同的Tomcat实例,从而实现负载均衡,避免...

    Nginx+Tomcat+Memcached共享session集群配置

    然而,传统的基于 Cookie 的会话管理方式在这样的架构下会遇到 Session 共享的问题,即用户在不同的 Tomcat 实例之间切换时可能会导致会话丢失。为了解决这一问题,通常会采用 Memcached 这样的分布式缓存系统来存储...

    apache+tomcat+memcached

    - Apache Server在处理HTML、CSS、JavaScript等静态资源方面表现出色,通过反向代理和负载均衡功能,可以将静态请求直接响应,动态请求转发给后端的Tomcat服务器。 - 搭建Apache Server集群时,可能需要考虑配置...

    Nodejs 和Session 原理及实战技巧小结

    例如,每次向服务器提交请求时,即使是静态图片,也会带上Cookies。为了避免这些问题,引入了Session机制,它保存在服务器端,类似于服务器缓存。用户登录验证时,可以在Session中进行验证。Session和Cookies是一一...

Global site tag (gtag.js) - Google Analytics