67,513
社区成员
发帖
与我相关
我的任务
分享
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<welcome-file-list>
<welcome-file>jsp/frame/index.jsp</welcome-file>
</welcome-file-list>
<!-- Spring的监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- dwr test -->
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<!-- 开启后将可以在浏览器里输入 (http://localhost:8080/dwrdemo/dwr)来查看可用自动生成的js -->
<param-name>debug</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>crossDomainSessionSecurity</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>allowScriptTagRemoting</param-name>
<param-value>true</param-value>
</init-param>
<!-- 这里设定1是为了让DwrServlet 在 InitServlet之前启动,不然无法初始化InitServlet中的监听器-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
<!--
<servlet>
<servlet-name>DWRTestServlet</servlet-name>
<servlet-class>dwr.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DWRTestServlet</servlet-name>
<url-pattern>/DWRTestServlet</url-pattern>
</servlet-mapping>
-->
<!-- Struts2的系统过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 启动一个dwr scriptsession的监听器,用于监听scriptsession的创建和销毁-->
<servlet>
<servlet-name>InitServlet</servlet-name>
<servlet-class>com.test.InitServlet</servlet-class>
<load-on-startup>100</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>InitServlet</servlet-name>
<url-pattern>/InitServlet</url-pattern>
</servlet-mapping>
</web-app>
package com.test;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpSession;
import org.directwebremoting.Container;
import org.directwebremoting.ServerContextFactory;
import org.directwebremoting.WebContextFactory;
import org.directwebremoting.event.ScriptSessionEvent;
import org.directwebremoting.event.ScriptSessionListener;
import org.directwebremoting.extend.ScriptSessionManager;
import org.directwebremoting.servlet.DwrServlet;
/**
* 当启动tomcat时候启动该servlet容器
*/
public class InitServlet extends DwrServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public InitServlet() {
super();
// TODO Auto-generated constructor stub
}
@Override
public void init() throws ServletException {
initDWRListener();
}
/**
* 初始化dwr监听器,用于将用户id与dwr的session进行绑定
*/
public void initDWRListener() {
System.out.println("init DWR Listener success");
Container container = ServerContextFactory.get().getContainer();
ScriptSessionManager manager = container.getBean(ScriptSessionManager.class);
ScriptSessionListener listener = new ScriptSessionListener() {
public void sessionCreated(ScriptSessionEvent ev) {
HttpSession session = WebContextFactory.get().getSession();
String user = (String) session.getAttribute("username");
ev.getSession().removeAttribute("username");
ev.getSession().setAttribute("username", user);
//TaskPush.sessionManager.put(session, ev.getSession());
System.out.println("a scriptsession create------------------------------------------------------------------------,"
+ user); //打印没有效果
}
public void sessionDestroyed(ScriptSessionEvent ev) {
}
};
manager.addScriptSessionListener(listener);
}
}
response.getWriter().print("1");
Map session = ActionContext.getContext().getSession();
session.put("username",username);
ServletActionContext.getRequest().getSession().setAttribute("username", username) ;
System.out.println(ServletActionContext.getRequest().getSession().getAttribute("username"));