监听器、拦截器完成对session、cookie的会话控制
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的会话控制的更多相关文章
- struts2 javaweb 过滤器、监听器 拦截器 原理
转: 过滤器.监听器 拦截器 过滤器 创建一个 Filter 只需两个步骤: (1)创建 Filter 处理类: (2)在 web.xml 文件中配置 Filter . 创建 Filter 必须实现 ...
- 分布式系统登录功能拦截器的实现以及cookie的共享问题(利用cookie实现session在分布式系统的共享)
当我们的网站采用分布式部署系统时,每个子系统拥有自己独立的session,如果不实现session共享,当用户切换系统访问的时候,会不停的提示登录,这对于用户体验是非常不好的.因此对于多个子系统的的访 ...
- java-过滤器-监听器-拦截器
1.过滤器 Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码.做一些业务逻辑判断等.其工作原理是,只要你在web.xml ...
- JavaWeb过滤器.监听器.拦截器-原理&区别-个人总结
对比项 拦截器 过滤器 机制 反射机制 函数回调 是否依赖servlet容器 是 否 请求处理 只能对action请求起作用 几乎所有的请求起作用 对action处理 可以访问action上下文.值栈 ...
- JavaWeb过滤器.监听器.拦截器-原理&区别(转)
1.拦截器是基于java的反射机制的,而过滤器是基于函数回调 2.过滤器依赖与servlet容器,而拦截器不依赖与servlet容器 3.拦截器只能对action请求起作用,而过滤器则可以对几乎所有的 ...
- AOP,过滤器,监听器,拦截器【转载】
面向切面编程(AOP是Aspect Oriented Program的首字母缩写) ,我们知道,面向对象的特点是继承.多态和封装.而封装就要求将功能分散到不同的对象中去,这在软件设计中往往称为职责分配 ...
- Spring MVC 拦截器配置 -- 利用session
spring-servlet.xml <?xml version="1.0" encoding="UTF-8"?><beans xmlns=& ...
- JavaWeb过滤器.监听器.拦截器-?原理&区别
过滤器可以简单理解为“取你所想取”,忽视掉那些你不想要的东西:拦截器可以简单理解为“拒你所想拒”,关心你想要拒绝掉哪些东西,比如一个BBS论坛上拦截掉敏感词汇. 1.拦截器是基于java的反射机制,过 ...
- 过滤器 & 监听器 & 拦截器
过滤器: https://blog.csdn.net/MissEel/article/details/79351231 https://blog.csdn.net/qq_32363305/articl ...
随机推荐
- 51单片机的idata,xdata,pdata,data的详解
data: 固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小. bit :是指0x20-0x2f的可位寻址区idata:固定指前面0x00-0xff的2 ...
- CentOS 7在VMware 12中共享文件看不见的问题?
前言 由于rhel 7.2因为没有注册导致yum无法使用,包括自己配置本地源,这个命令在你没有注册都不能使用,每次使用rpm去装软件,自己去找缺少的依赖包,实在是麻烦.于是不如就换一个系统,CentO ...
- 项目搭建(三):自定义DLL
说明:程序中有些自定义的控件类型在TestStack.White框架中没有涉及,需要引入自定义的DLL,通过鼠标点击事件处理 使用:将自定义的ClassLibrary2.dll拷贝到项目/bin/de ...
- Master Reactor Manager Worker TaskWorker(Task)
1.Master进程 master进程为主进程,该进程会创建Manager进程和Reactor线程等工作进/线程 swoole的主进程,是个多线程的程序. 主进程内的回调函数: onStart onS ...
- JS 获取json key和value
var json= { "Type": "Coding", "Height":100 }; for (var key in json) { ...
- lerna----一个强大的专注组件库的管理工具
最近在看关于lerna的资料,没有中文版api.简书上有一篇文章半英半汉,可以撸来看看. http://www.jianshu.com/p/63ec67445b0f
- 转:inline-block 前世今生
曾几何时,display:inline-block 已经深入「大街小巷」,随处可见 「display:inline-block; *display:inline; *zoom:1; 」这样的代码.如今 ...
- java 重新学习 (七)
一.mysql的InnoDB通过建立行级索确保事务完整性.,并以Oracle风格的共享锁来处理select语句.系统默认存储为InnoDB. 二. -- mysql 创建表 CREATE TABLE ...
- [FW]修复ubutnu12.04+win7的grub2引导
[转]修复ubutnu12.04+win7的grub2引导 原文位置:http://wenku.baidu.com/view/b6b7c9926bec0975f465e2f8.html ps:我使用的 ...
- HDU 2152 Fruit( DP )
Fruit Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...