就是在火狐下面我实现了推送,页面也及时更新了。但是ie下面一点反应都没有。
求各位给点意见,到底是哪里出了问题?web.xml配置<!-- dwr框架配置文件 -->
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<!-- 默认的servlet -->
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<!-- 调试DWR,发布系统时应将其设为false -->
<init-param>
<description>调试DWR,发布系统时应将其设为false</description>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<description>在WEB启动时是否创建范围为application的creator</description>
<param-name>
initApplicationScopeCreatorsAtStartup
</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>activeReverseAjaxEnabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>maxWaitAfterWrite</param-name>
<param-value>500</param-value>
</init-param>
<load-on-startup>4</load-on-startup>
</servlet>
dwr.xml:
<allow>
<convert converter="bean" match="com.wenice.domain.user"/>
<create javascript="DWRService" creator="spring" >
<param name="beanName" value="DWRService"/>
</create>
</allow>applicationContext.xml
<!-- 配置dwr -->
<dwr:configuration>
<dwr:convert type="bean" class="com.wenice.domain.user" />
</dwr:configuration>
<bean id="DWRService" class="com.wenice.web.dwr.DWRService">
<dwr:remote javascript="DWRService">
<dwr:include method="send" />
</dwr:remote>
</bean>
主要的java代码: /**
* 处理发送信息相关
*
* @author 张阳
*
*/
public class DWRService {
/** 保存当前在线scriptSession列表 */
public static HashMap<String, ScriptSession> scriptSessions = new HashMap<String, ScriptSession>();
/**
* 更新scriptSession列表
*
* @param username 用户名
* @param flag 是否存入map中
* @param request 请求
* @return
*/
public String updateUsersList(String username, boolean flag, HttpServletRequest request) {
// 这里取会话(HttpSession)的id为用户id
String httpSessionId = request.getSession().getId();
if (flag) {
this.setScriptSessionFlag(username);
//将HttpSessionid和页面脚本session绑定
scriptSessions.put(httpSessionId, WebContextFactory.get().getScriptSession());
}else{
return null;
}
return httpSessionId;
}
/**
* 将用户id和页面脚本session绑定
* @param userid
*/
public void setScriptSessionFlag(String username) {
WebContextFactory.get().getScriptSession().setAttribute("username", username);
}
/**
* 根据用户id获得指定用户的页面脚本session
* @param userid
* @param request
* @return
*/
@SuppressWarnings("unchecked")
public ScriptSession getScriptSession(String userid, HttpServletRequest request,String server) {
ScriptSession scriptSessions = null;
java.util.Iterator it = this.scriptSessions.entrySet().iterator();
while(it.hasNext()){
java.util.Map.Entry entry = (java.util.Map.Entry)it.next();
ScriptSession session = (ScriptSession) entry.getValue();
String xuserid = (String) session.getAttribute("username");
if (xuserid != null && xuserid.equals(userid)) {
scriptSessions = session;
}
}
return scriptSessions;
}
/**
* 发送消息
* @param sender 发送者
* @param receiverid 接收者id
* @param msg 消息内容
* @param request
*/
public void send(String sender,String receiverid,String msg,String server,HttpServletRequest request){
ScriptSession session = this.getScriptSession(receiverid, request,server);
if(null!=session){
Util util = new Util(session);
// util.addFunctionCall("changeStyle", "messageImage");
util.setStyle("messageImage", "display", "");
// util.setValue("sender", sender);
// util.setValue("msg", msg);
// util.addScript(new ScriptBuffer("alert('0000');"));;
}
}页面代码:
就基本上是这样的:
求各位给点意见,到底是哪里出了问题?web.xml配置<!-- dwr框架配置文件 -->
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<!-- 默认的servlet -->
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<!-- 调试DWR,发布系统时应将其设为false -->
<init-param>
<description>调试DWR,发布系统时应将其设为false</description>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<description>在WEB启动时是否创建范围为application的creator</description>
<param-name>
initApplicationScopeCreatorsAtStartup
</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>activeReverseAjaxEnabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>maxWaitAfterWrite</param-name>
<param-value>500</param-value>
</init-param>
<load-on-startup>4</load-on-startup>
</servlet>
dwr.xml:
<allow>
<convert converter="bean" match="com.wenice.domain.user"/>
<create javascript="DWRService" creator="spring" >
<param name="beanName" value="DWRService"/>
</create>
</allow>applicationContext.xml
<!-- 配置dwr -->
<dwr:configuration>
<dwr:convert type="bean" class="com.wenice.domain.user" />
</dwr:configuration>
<bean id="DWRService" class="com.wenice.web.dwr.DWRService">
<dwr:remote javascript="DWRService">
<dwr:include method="send" />
</dwr:remote>
</bean>
主要的java代码: /**
* 处理发送信息相关
*
* @author 张阳
*
*/
public class DWRService {
/** 保存当前在线scriptSession列表 */
public static HashMap<String, ScriptSession> scriptSessions = new HashMap<String, ScriptSession>();
/**
* 更新scriptSession列表
*
* @param username 用户名
* @param flag 是否存入map中
* @param request 请求
* @return
*/
public String updateUsersList(String username, boolean flag, HttpServletRequest request) {
// 这里取会话(HttpSession)的id为用户id
String httpSessionId = request.getSession().getId();
if (flag) {
this.setScriptSessionFlag(username);
//将HttpSessionid和页面脚本session绑定
scriptSessions.put(httpSessionId, WebContextFactory.get().getScriptSession());
}else{
return null;
}
return httpSessionId;
}
/**
* 将用户id和页面脚本session绑定
* @param userid
*/
public void setScriptSessionFlag(String username) {
WebContextFactory.get().getScriptSession().setAttribute("username", username);
}
/**
* 根据用户id获得指定用户的页面脚本session
* @param userid
* @param request
* @return
*/
@SuppressWarnings("unchecked")
public ScriptSession getScriptSession(String userid, HttpServletRequest request,String server) {
ScriptSession scriptSessions = null;
java.util.Iterator it = this.scriptSessions.entrySet().iterator();
while(it.hasNext()){
java.util.Map.Entry entry = (java.util.Map.Entry)it.next();
ScriptSession session = (ScriptSession) entry.getValue();
String xuserid = (String) session.getAttribute("username");
if (xuserid != null && xuserid.equals(userid)) {
scriptSessions = session;
}
}
return scriptSessions;
}
/**
* 发送消息
* @param sender 发送者
* @param receiverid 接收者id
* @param msg 消息内容
* @param request
*/
public void send(String sender,String receiverid,String msg,String server,HttpServletRequest request){
ScriptSession session = this.getScriptSession(receiverid, request,server);
if(null!=session){
Util util = new Util(session);
// util.addFunctionCall("changeStyle", "messageImage");
util.setStyle("messageImage", "display", "");
// util.setValue("sender", sender);
// util.setValue("msg", msg);
// util.addScript(new ScriptBuffer("alert('0000');"));;
}
}页面代码:
就基本上是这样的:
dwr.xml
<convert converter="bean" match="com.wenice.domain.user"/>
和
application.xml
<dwr:configuration>
<dwr:convert type="bean" class="com.wenice.domain.user" />
</dwr:configuration>