示例:用监听器统计网站在线人数
声明
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Component
@WebListener
public class SessionListener implements HttpSessionListener {
private Logger logger = LoggerFactory.getLogger(SessionListener.class);
public static final String COUNT = "count";
private int count = 0;
@Override
public void sessionCreated(HttpSessionEvent se) {
count++;
se.getSession().setAttribute(COUNT, count);
logger.info("sessionCreated");
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
count--;
se.getSession().setAttribute(COUNT, count);
logger.info("sessionDestroyed");
}
}
使用
@Component
将该bean标注为受Spring容器管理的Bean,(把普通pojo实例化到Spring容器中,相当于配置文件中的)- 或者在main函数类上添加@ServletComponentScan
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.diy.sigmund.mybatismysql.listener.SessionListener;
@RestController
public class SessionRestController {
@GetMapping("getSession")
public String getSession(HttpServletRequest httpServletRequest) {
return httpServletRequest.getSession().getAttribute(SessionListener.COUNT).toString();
}
}
资料参考