`
lpm528
  • 浏览: 84165 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

过滤器实现sessiontimeout

 
阅读更多

在web.xml中配置:

<filter>
		<filter-name>Check Session Timeout</filter-name>
		<filter-class>com.utils.filter.SessionTimeoutFilter</filter-class>
		<init-param>
			<param-name>loginPage</param-name>
			<param-value>login.jsp</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>Check Session Timeout</filter-name>
		<url-pattern>*.action</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>Check Session Timeout</filter-name>
		<url-pattern>*.do</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>Check Session Timeout</filter-name>
		<url-pattern>*.jsp</url-pattern>
	</filter-mapping>
                <session-config>
                   <session-timeout>20</session-timeout>
                </session-config>

 过滤器类:

public class SessionTimeoutFilter implements Filter{
	

	public String loginPage = null;
	
	public void init(FilterConfig config) throws ServletException {
		loginPage=config.getInitParameter("loginPage");
		
	}
	
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest req = (HttpServletRequest) request;
		HttpServletResponse res = (HttpServletResponse) response;
		res.addHeader("P3P", "CP=CAO PSA OUR");
		
		HttpSession session = req.getSession(false);
		boolean flag = false;
		String targetURL = req.getRequestURI();

		if (session != null && session.getAttribute("username_phone") != null) {
			flag = true;
		}else if(targetURL.endsWith(loginPage)) {
			flag = true;
		}else {
				String BasePath = null;
				if (req.getContextPath().equals("")){
					BasePath = req.getScheme() + "://" + req.getServerName()
							+ ":" + req.getServerPort() + "/login.jsp";
				}
				else{
					BasePath = req.getScheme() + "://" + req.getServerName()
							+ ":" + req.getServerPort() + req.getContextPath()
							+ "/login.jsp";
				}
				res.sendRedirect(BasePath);
				return;
		}
			

		if (!flag) {

			/*java.io.PrintWriter writer = res.getWriter();
			writer.print("<script language=\"javascript\">");
			writer.print("if(window.parent==null){");
			writer.print("window.open(\"" + req.getContextPath() + "/login.jsp"
					+ "\");");
			writer.print("}else{");
			writer.print("window.parent.top.location.href=\""
					+ req.getContextPath() + "/login.jsp" + "\";}");
			writer.print("</script>");
			writer.flush();*/

			return;
		} else {
			chain.doFilter(request, response);
		}
		
	}

	public void destroy() {
		this.loginPage=null;
		
	}
}

 

分享到:
评论

相关推荐

    ASP.NET Core-Session

    在ASP.NET Core中,Session的实现依赖于中间件(Middleware),并且可以与多种存储机制集成,包括内存、数据库或Redis缓存。 首先,我们要安装必要的NuGet包来启用Session功能。这两个关键的包是: 1. `Microsoft....

    JAVA用户登录超时过滤器和文件配置

    在本例中,我们将探讨如何实现这样一个过滤器以及相关的配置。 首先,`web.xml` 是Java Web应用程序的部署描述符,用于定义过滤器、Servlet、监听器等组件。在提供的`web.xml`配置中,我们看到了一个名为`...

    shiro+redis做session管理

    7. **最后,将配置应用于Web应用**:在Web应用的`web.xml`或Spring配置文件中,将上述Shiro配置应用到过滤器链中。 通过以上步骤,Shiro将与Redis协同工作,实现分布式环境下的Session管理。这种方案不仅解决了传统...

    SSM整合shiro实现角色权限

    &lt;property name="globalSessionTimeout" value="3600000" /&gt; ``` 然后,我们需要在Spring MVC的配置文件中,设置过滤器链来启动Shiro的功能。Shiro提供了多种内置过滤器,如authc(认证过滤器)、perms(权限过滤...

    Session过期后自动跳转到登录页面的实例代码

    以上代码片段展示了如何通过过滤器实现Session过期后的自动跳转。这种方式更加灵活,可以直接控制HTTP响应,确保用户在Session过期后能够被正确地引导回登录页面,重新验证其身份。在实际应用中,还需要考虑其他因素...

    38. Spring Boot分布式Session状态保存Redis【从零开始学Spring Boot】

    .sessionTimeout(30, TimeUnit.MINUTES) .withHttpSessionSupport(true) .setChangeSessionIdOnCreation(true); } } ``` 5. **测试验证**: 创建一个简单的Controller,检查Session是否能在多个服务器实例间...

    SpringBoot快速整合ShiroRedis与Thymeleaf(完整版)免费下载

    接着,设置Shiro的过滤器链,以便拦截并处理请求。 - **Shiro与Redis**:为了实现会话管理,我们可以将Shiro的Session管理委托给Redis,这需要配置RedisSessionDAO,将Session数据存储在Redis中,实现分布式会话。...

    Mina开发实例(服务端、客户端)DEMO

    在实际应用中,根据数据格式选择合适的过滤器,可以有效地处理网络传输中的数据。 总结一下,这个"Mina开发实例"涵盖了如何使用Apache Mina创建服务端和客户端,通过Maven构建项目,并实现长连接通信。通过学习和...

    TOMCAT的配置

    过滤器可以用来对客户端请求和服务器响应进行预处理或后处理,非常适用于身份验证、日志记录等功能。 ```xml &lt;filter-name&gt;FilterSource &lt;filter-class&gt;project4.FilterSource &lt;filter-name&gt;FilterSource ...

    tomcat 6.0

    1. **Servlet 2.5支持**: Tomcat 6.0支持Servlet 2.5规范,带来了许多新功能和改进,如注解支持、过滤器链的改进等。 2. **JSP 2.1支持**: 提供了对JSP 2.1规范的支持,包括EL(Expression Language)增强和自定义...

    tomcat6.zip

    - `web.xml`: 每个Web应用的部署描述符,配置Servlet、过滤器、监听器等。 - `context.xml`: 应用级别的配置,可以用于定义数据源、session配置等。 **6. 安全性** Tomcat 6支持角色基础的访问控制(RBAC)、SSL/...

    Tomcat web.xml,server.xml中详细配置说明文档

    **配置Servlet过滤器(3.2.1)** ```xml &lt;filter-name&gt;myFilter &lt;filter-class&gt;com.example.MyFilterClass&lt;/filter-class&gt; &lt;filter-name&gt;myFilter &lt;url-pattern&gt;/servletPath ``` **配置Servlet(3.2.2)**...

Global site tag (gtag.js) - Google Analytics