使用(Filter)过虑器实现对Session是否过时的判断
在开发时,在第个页面,或者BaseAction对Session是否超时正行判断,但随着项目越来越来.页面很的时候写起来会觉得烦,由于项目需要最近做了一个这样的例子。
web.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<filter>
<filter-name>sf</filter-name>
<filter-class>com.pdw.websystem.SessionFilterImpl</filter-class>
</filter>
<filter-mapping>
<filter-name>sf</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>2</session-timeout>
</session-config>
<listener>
<listener-class>com.pdw.websystem.SessionListenerImpl</listener-class>
</listener>
</web-app>
SessionFilterImpl.java文件如下:
package com.pdw.websystem;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.UnavailableException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class SessionFilterImpl implements Filter ...{
protected String encoding = null;
protected FilterConfig filterConfig = null;
protected boolean ignore = true;
public void destroy() ...{
this.encoding = null;
this.filterConfig = null;
}
/** *//**
* Select and set (if specified) the character encoding to be used to
* interpret request parameters for this request.
*
* @param request The servlet request we are processing
* @param result The servlet response we are creating
* @param chain The filter chain we are processing
*
* @exception IOException if an input/output error occurs
* @exception ServletException if a servlet error occurs
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException ...{
HttpServletRequest hrequest=(HttpServletRequest)request;
HttpServletResponse hresponse=(HttpServletResponse)response;
HttpSession session=hrequest.getSession();
if(session.getAttribute("name")==null)...{
hresponse.sendRedirect("logon.jsp");
}
chain.doFilter(request, response);
}
/** *//**
* Place this filter into service.
*
* @param filterConfig The filter configuration object
*/
public void init(FilterConfig filterConfig) throws ServletException ...{
}
}
使可轻松实现对Session是否超时的判断
分享到:
相关推荐
本项目通过结合使用Filter(过滤器)和Memcached来实现一个高效的session服务器,以解决跨服务器会话共享的问题。 首先,让我们详细了解一下`Filter`。在Java Web开发中,Filter是Servlet API的一部分,允许开发者...
在本文中,我们将深入探讨如何在Spring Boot应用中使用拦截器(Interceptor)和过滤器(Filter)来处理用户的登录session。这两个组件都是Spring框架的重要部分,它们在处理HTTP请求和响应时发挥着关键作用。 首先...
就去redis中查看是否有此id的记录,如果没有就新建session,如果有,还是新建session,并把redis中此session的相关数据赋值给新建的session,最后保存sessionId到cookie,cookie的maxAge设置为-1,仅对当前会话有效...
4. **Filter**: 为了实现Session共享,Spring Session 使用一个自定义的Servlet过滤器(`DelegatingSessionFilter`),这个过滤器负责拦截HTTP请求,处理Session相关操作。 5. **Spring Boot集成**: 如果使用Spring...
在Web开发中,确保用户身份的安全性...总的来说,使用过滤器实现用户登录验证是一种常见的实践,它允许我们集中管理权限控制,提高代码的可维护性。同时,通过合理的配置和扩展,可以适应不同规模和需求的Web应用程序。
标题中的“osgi session共享 支持springmvc 配置个filter即可”表明我们要讨论的是在OSGi(Open Service Gateway Initiative)环境中,如何通过Spring MVC并利用Filter来实现多个服务之间的Session共享。OSGi是一种...
### Spring-Session与Redis结合实现Session共享 在分布式系统中,单点登录(Single Sign-On,简称SSO)成为一种常见的需求。为了实现这一目标,就需要解决不同服务器间Session共享的问题。Spring-Session正是为此而...
下面我们就通过分析一个具体的示例代码来详细了解如何使用JSP Filter过滤器来判断用户是否已经登录。 #### 示例代码分析 首先,我们来看一下示例中的过滤器类`RightFilter`: ```java import javax.servlet....
6. **安全性考虑**:Filter还可以用于增强Session的安全性,比如检查Session是否过期,防止Session劫持或Session固定攻击。 7. **负载均衡**:在分布式环境中,Filter可以参与到负载均衡决策中,根据Session的存在...
在集群环境中,需要配置多个节点,并可能使用Sentinel或Cluster管理器来发现和管理节点。 总的来说,Spring Session与Redis的结合提供了一种高效且可扩展的Session共享解决方案,尤其适合大型分布式系统的应用场景...
M商城V0.7通过Filter进行Session验证,实现了对用户登录状态的有效管理,确保了用户操作的安全性和系统的稳定性。本文将围绕这个主题,详细讲解其背后的原理、实现方式以及相关的源码分析。 首先,Filter在Java Web...
为了能够使用 Servlet 过滤器实现用户对 JSP 页面访问的合法性验证,需要根据用户登录号和密码等与数据库中的信息相比较,若能匹配成功,则是用户登录成功,就用 session 对象存储该用户的标识。 知识点4: Servlet ...
在 Web 应用程序中,身份认证和访问控制是非常重要的安全机制,本文将介绍如何使用 Struts2 中的 Filter 和 Session 实现访问控制和身份认证。 身份认证和访问控制的必要性 在 Web 应用程序中,身份认证和访问控制...
综上所述,通过使用Java的Servlet Filter,我们可以实现对用户session的有效验证,防止未授权访问,并且可以控制页面不被浏览器缓存,提高系统的安全性。在实际开发中,我们可能还需要结合其他安全措施,如CSRF防护...
2. **Filter实现**:创建一个自定义的`Filter`类,检查每个请求的`Session`中是否存在登录信息。如果不存在或者登录信息过期,则重定向到登录页面。 3. **权限判断**:在`Filter`中,可以进一步检查请求的资源是否...
### 过滤器对于Session周期的控制 在探讨如何通过`OpenSessionInViewFilter`来有效管理Hibernate中的Session生命周期之前,我们需要先理解Session及其生命周期的基本概念。 #### Session与生命周期 在Hibernate...
这是一个对session+filter+cookie练习的小项目;使用cookie实现了验证码的点击更换和验证,使用filter防止用户非法登录和使用session实现记住用户名。 此资源在学生资源部分连接了数据库,但在用户的登录验证方面...
在这个“单点登录的demo(使用cookie+filter实现)”中,我们将深入探讨如何利用Cookie和Filter技术来实现一个简单的SSO系统。 **一、Cookie基础** Cookie是Web服务器存储在用户浏览器上的一小段数据,用于在用户与...
而`过滤器(Filter)`是Servlet API的一部分,它提供了一种机制来拦截请求和响应,实现诸如登录验证、字符编码转换、性能监控等功能。在这个场景中,我们关注的是使用过滤器进行登录验证,以及如何利用`session`来...
Filter 的基本功能是对 Servlet 容器调用 Servlet 的过程进行拦截,从而在 Servlet 进行响应处理的前后实现一些特殊的功能。 Filter 的工作原理 当在 web.xml 中注册了一个 Filter 来对某个 Servlet 程序进行拦截...