package com.trsmedia.interceptor;

import java.util.Date;

import java.util.Timer;
import java.util.TimerTask; import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener; /**
*
* @author : qinyi
* date : 2019年7月10日,下午1:58:30 */
public class MySessionListener implements HttpSessionListener { public void sessionCreated(final HttpSessionEvent se) { Timer t = new Timer();
t.schedule(new TimerTask() {
public void run() {
HttpSession session = se.getSession(); System.out.print("del..."+new Date()); session.invalidate();
}
}, 1000*60*10, 1000*60*10); } public void sessionDestroyed(HttpSessionEvent se) { // TODO Auto-generated method stub } }

  

package com.trsmedia.interceptor;

import java.util.Timer;
import java.util.TimerTask; import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.http.HttpServletRequest; /**
*
* @author : qinyi
* date : 2019年7月10日,下午4:28:11 */
public class MyRequestContextListener implements ServletRequestListener { @Override
public void requestDestroyed(final ServletRequestEvent sre) {
// TODO Auto-generated method stub Timer t = new Timer();
t.schedule(new TimerTask() {
public void run() {
HttpServletRequest request = (HttpServletRequest) sre.getServletRequest(); javax.servlet.http.Cookie[]cookies=request.getCookies();
if(cookies!=null){
for(javax.servlet.http.Cookie c:cookies){
System.out.println("正再删除"+c.getName());
c.setMaxAge(0);
}
}
}
}, 1000*60*10, 1000*60*10); } @Override
public void requestInitialized(ServletRequestEvent sre) {
// TODO Auto-generated method stub } }

  web.xml

          <listener>
<listener-class>com.trsmedia.interceptor.MyRequestContextListener</listener-class>
</listener>
<listener>
<listener-class>com.trsmedia.interceptor.MySessionListener</listener-class>
</listener>

  

package com.trsmedia.interceptor;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; /**
*
* @author : qinyi
* date : 2019年7月9日,下午10:59:49 */
public class LoginInterceptor extends HandlerInterceptorAdapter {
private List<String> IGNORE_URI; @Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { HttpSession session = request.getSession();
if(session != null && session.getAttribute("UserInfo") != null){
return true;
}else{
response.sendRedirect("main.jsp");
return false;
}
} public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
super.postHandle(request, response, handler, modelAndView);
}
public List<String> getIGNORE_URI() {
return IGNORE_URI;
}
public void setIGNORE_URI(List<String> IGNORE_URI) {
this.IGNORE_URI = IGNORE_URI;
} }

  spring.xml

  <mvc:interceptors>

        <mvc:interceptor>

            <mvc:mapping path="/**"/>

            <mvc:exclude-mapping path="/static/**"/>
<mvc:exclude-mapping path="/nosso.do"/>
<mvc:exclude-mapping path="/nosso.jsp"/>
<mvc:exclude-mapping path="/main.jsp"/>
<mvc:exclude-mapping path="/login.do"/>
<mvc:exclude-mapping path="/logout.do"/> <mvc:exclude-mapping path="/loginChoose.do"/>
<bean id="loginInterceptor" class="com.trsmedia.interceptor.LoginInterceptor"> </bean>
</mvc:interceptor>
</mvc:interceptors>

  

监听器、拦截器完成对session、cookie的会话控制的更多相关文章

  1. struts2 javaweb 过滤器、监听器 拦截器 原理

    转: 过滤器.监听器 拦截器 过滤器 创建一个 Filter 只需两个步骤: (1)创建 Filter 处理类: (2)在 web.xml 文件中配置 Filter . 创建 Filter 必须实现 ...

  2. 分布式系统登录功能拦截器的实现以及cookie的共享问题(利用cookie实现session在分布式系统的共享)

    当我们的网站采用分布式部署系统时,每个子系统拥有自己独立的session,如果不实现session共享,当用户切换系统访问的时候,会不停的提示登录,这对于用户体验是非常不好的.因此对于多个子系统的的访 ...

  3. java-过滤器-监听器-拦截器

    1.过滤器 Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码.做一些业务逻辑判断等.其工作原理是,只要你在web.xml ...

  4. JavaWeb过滤器.监听器.拦截器-原理&区别-个人总结

    对比项 拦截器 过滤器 机制 反射机制 函数回调 是否依赖servlet容器 是 否 请求处理 只能对action请求起作用 几乎所有的请求起作用 对action处理 可以访问action上下文.值栈 ...

  5. JavaWeb过滤器.监听器.拦截器-原理&区别(转)

    1.拦截器是基于java的反射机制的,而过滤器是基于函数回调 2.过滤器依赖与servlet容器,而拦截器不依赖与servlet容器 3.拦截器只能对action请求起作用,而过滤器则可以对几乎所有的 ...

  6. AOP,过滤器,监听器,拦截器【转载】

    面向切面编程(AOP是Aspect Oriented Program的首字母缩写) ,我们知道,面向对象的特点是继承.多态和封装.而封装就要求将功能分散到不同的对象中去,这在软件设计中往往称为职责分配 ...

  7. Spring MVC 拦截器配置 -- 利用session

    spring-servlet.xml <?xml version="1.0" encoding="UTF-8"?><beans xmlns=& ...

  8. JavaWeb过滤器.监听器.拦截器-?原理&区别

    过滤器可以简单理解为“取你所想取”,忽视掉那些你不想要的东西:拦截器可以简单理解为“拒你所想拒”,关心你想要拒绝掉哪些东西,比如一个BBS论坛上拦截掉敏感词汇. 1.拦截器是基于java的反射机制,过 ...

  9. 过滤器 & 监听器 & 拦截器

    过滤器: https://blog.csdn.net/MissEel/article/details/79351231 https://blog.csdn.net/qq_32363305/articl ...

随机推荐

  1. JavaScript 中的dispatchEvent是怎么用的

    https://zhidao.baidu.com/question/1859896201945858587.html https://www.cnblogs.com/playerlife/archiv ...

  2. PHP抓取远程图片到本地保存(如何把错误信息用text文件写入)

    最近在工作中需要开发了一个用户素材功能,里面需要将网上的各种图片素材进行本地化存储.于是在网上找了一些相关资料,并根据自身开发需要,整理了一下主要的逻辑代码. /** * PHP将网页上的图片攫取到本 ...

  3. English-GIS

    "Toposheet" 是 "Topographic sheet" 的简称,既地形图图幅的意思.

  4. ExportOptions.plis是什么?

    参考: 具体每个字段的说明,参考: https://group.cnblogs.com/topic/80752.html 为什么自动化打包时,需要用到ExportOptions.plis文件,参考: ...

  5. 13. Jmeter-定时器

    Jmeter-定时器介绍与使用 固定定时器 Uniform Random Timer Precise Throughput Timer Constant Throughput Timer 高斯随机定时 ...

  6. PromQL

    PromQL (Prometheus Query Language) 是 Prometheus 自己开发的数据查询 DSL 语言,语言表现力非常丰富,内置函数很多,在日常数据可视化以及rule 告警中 ...

  7. 【awk】 判断是不是纯ascii串

    筛选出纯ascii串: awk '{ l = length($0); for (i = l; i > 0; i--) { if (substr($0,i,1) > "\177&q ...

  8. 动画FPS计算

    1.chrome的debug 2.PerformanceObserver var observer = new PerformanceObserver(function (list) { var pe ...

  9. Python3学习笔记(MOOC)

    文本进度条实例 #!/usr/bin/env python3 import time #for i in range(101): # print ("\r{:3.0f}%".for ...

  10. python字符串方法学习笔记

    # 一.字符串大小写转换# 字符串首字符大写print("hello world".capitalize())# 将字符串变为标题print("hello WORLD&q ...