我现在在做一个音乐网站,A页面有很多歌曲链接,当点击歌曲链接时,打开B页面,B页面是一个音乐盒,可以播放我在其他页面选中的歌曲。如果是由A页面打开B页面,这样可以通过父页面控制子页面的方式来控制B页面。如果我又有一个C页面,C页面中也有很多歌曲,当点击歌曲后,我不想再打开一个新的音乐盒页面,而是想把音乐添加到已经打开的B页面中,这样就要判断B页面是否已经被打开,且通过控制B页面把音乐加到音乐盒中。我想问的是:1> C页面和B页面并不是两个父子关系的页面,怎么在C页面中判断B页面是否被打开?(我想的是在session中添加一个值,来判断B页面是否被打开)2> 怎么通过C页面控制B页面(注意,c页面和B页面不是父子关系)?谢谢各位大侠了,非常感谢。
解决方案 »
- 怎么用java生成一个XML文件
- web.xml
- servlet用bean传递数据给JSP错误求助 - -||
- 这样的代码也运行不起来?
- 当用JDBC向数据库中插入数据或从数据库中提取数据时,为何有时中文字符会显示为乱码?
- 在Webwork中的 action中 新增 一个 值堆栈-OgnlValueStack 问题!或者新增request值..
- 各位兄弟:有没有这几本书?
- 高手解答
- 100分:有谁买了Professional JSP 2nd Edition这本书,能不能将21章的war发给我啊。网上没的下。
- 如何实现, 从控制台里输入一个字符串,一个整数,分别保存到变量中?
- 新人求救
- 请问,类似于“813_WLStub”后缀这样的文件是如何生成的?
2.B页面写一个函数,每隔1秒钟就请求一下后台,看有没有新的音乐添加到session,如果有就刷新音乐列表,但是这样不断请求,用户数多了后不知道服务器扛不扛得住
我现在已经实现了从A页面向B页面添加音乐的功能,A页面与B页面是父子关系,可以完成交互控制,这样就不用Ajax了。
如果我有一个C页面,C页面与B页面不是父子关系,C页面该怎么控制B页面?
C页面点击歌曲后,向后台发送信息表明添加了XX音乐,这时候B页面就能侦听到有添加新音乐,后面就是B页面添加播放的音乐的操作了。
2.C页面添加一首音乐,更新session
3.B页面设置一个函数,每隔1秒钟访问后台,读取session里的list,和B页面当前的list对比,如果发现有新的记录,ajax返回新的记录,然后添加到B页面的list中。通过后台的逻辑,将B和C联系起来
不是一个session吗,打开B页面前判断session中的标记值,如果标记值标明B已打开,直接调用本地打开的B页面中的添加歌曲的方法就可以了吧,是不是你不会调用已经打开的IE吗?B页面关闭时改写session中的标记值。如果还不明白,请再次提问!
但是我要说的,用ajax去访问session的方式我早就想到了,但是我不想这么用,我想通过在客户端完成添加歌曲的操作,原因如楼上所说,怕服务器承受的问题。
我只能实现父页面向子页面或同一个页面添加音乐的功能,无法实现非父子页面间的交换。请各位大侠帮帮忙,把问题的重点放在客户端,而不是放在服务器端(ajax访问session),谢谢,如能解决这个问题,我定当焚香叩首,感激涕零!!!!!!!!!!!突然想起一点来,用javascript控制cookies,存取cookies,这个方法如何?没试过,试试再说。
2.就算你可以解决当前的问题,那么后续你还有很多问题需要解决,比如添加音乐成功或失败,你是不是要给C页面返回一个提示信息;用户如果重复添加一首歌曲,你是不是要进行判断……以后B C页面交互的地方多了,这么做只会给你徒添烦劳罢了
3.建议还是在B页面增加一个 添加音乐 功能,用户可能是从A页面打开的C页面,也可能是从D页面打开的C页面,干脆限制用户只能通过在B页面打开C吧,这样很多事情处理起来都很方便
其实这个问题的关键就是多个页面之间如何共享一个变量,如果不用服务器端提供的session等,在客户端就只能使用cookie了。
用session的话、服务器端的肯定吃不消。
用cookie的话,有的人肯能会钻牛角尖,比如说cookie最大容量为4k,这个很容易解决,一遍加一遍删,音乐盒每次取用cookie后就会删除cookie中的songlist的值,添加音乐时只需把音乐的id和url添加到songlist中即可,我测了一下,cookie中可以装100-200条id+url的值,当然也不可能每次都添加100条以上的值,顶多50条(因为我限制了一下)。
2.有的人会说要是客户端禁用cookie怎么办?但是有一点要注意的是,没有cookie的情况下,大部分情况是用不了session,因为sessionid存放在cookie中,(除非你编码时再url后添加sessionid,相信很多人在做网站时未必会注意这一点吧)。
这就是我的解决方法,我只是刚进入j2ee的菜鸟,很多地方没有经验,想到什么就做什么,没有这么多的估计,不足之处,请各位大侠们指出,谢谢大家了,非常感谢。