`
Dream.V
  • 浏览: 32635 次
社区版块
存档分类
最新评论

Struts2使用过滤器验证登陆状态

 
阅读更多

在Web.xml中增加个配置过滤器loginFilter:

复制代码
1 <filter>     
2         <filter-name>loginFilter</filter-name>     
3         <filter-class>com.filter.LoginFilter</filter-class>     
4    </filter>     
5      <filter-mapping>  
6         <filter-name>loginFilter</filter-name>  
7         <url-pattern>/*</url-pattern>  
8  </filter-mapping>
复制代码

在处理登陆的action中,登陆成功后,往session中写入一个值,作为是否登陆的标记,这里写入用户名username:

1 HttpServletRequest request = ServletActionContext.getRequest();
2 request.getSession().setAttribute("username", username);



然后编辑相应的过滤器类LoginFilter,过滤器检查session中username的值是否为空,为空则跳转至登陆页面:

复制代码
 1 package com.filter;
 2 
 3 import java.io.IOException;
 4 import javax.servlet.Filter;
 5 import javax.servlet.FilterChain;
 6 import javax.servlet.FilterConfig;
 7 import javax.servlet.ServletException;
 8 import javax.servlet.ServletRequest;
 9 import javax.servlet.ServletResponse;
10 import javax.servlet.http.HttpServlet;
11 import javax.servlet.http.HttpServletRequest;
12 import javax.servlet.http.HttpServletResponse;
13 import javax.servlet.http.HttpSession;
14 
15 public class LoginFilter extends HttpServlet implements Filter {
16     public void destroy() {
17     }
18 
19     public void doFilter(ServletRequest sRequest, ServletResponse sResponse,      
20             FilterChain filterChain) throws IOException, ServletException{
21         
22         HttpServletRequest request = (HttpServletRequest) sRequest;      
23         HttpServletResponse response = (HttpServletResponse) sResponse;      
24         HttpSession session = request.getSession();      
25         String url=request.getServletPath();  
26         String contextPath=request.getContextPath();  
27         if(url.equals("")) url+="/";  
28         if((url.startsWith("/")&&!url.startsWith("/login"))){//若访问后台资源 过滤到login  
29              String user=(String)session.getAttribute("username");  
30              if(user==null){//转入管理员登陆页面  
31                   response.sendRedirect(contextPath+"/login.jsp"); 
32                   return;  
33              }  
34         }  
35           filterChain.doFilter(sRequest, sResponse);    
36     }  
37 
38     public void init(FilterConfig arg0) throws ServletException {
39 
40     }
41 }
复制代码

这样就可以了,除了login页面外全部都会被过滤器检测。

注:

浏览器关闭后session将被销毁,用户需重新登陆。

退出操作则将session中的username值设置为null即可。

参考:http://blog.csdn.net/markzwei/article/details/6305812

分享到:
评论

相关推荐

    使用struts2拦截器对登陆权限验证

    在本案例中,我们将深入探讨如何使用Struts2拦截器实现登录权限验证,同时结合Servlet Filter进一步加强安全性。 首先,让我们理解Struts2拦截器的工作原理。拦截器是基于AOP(面向切面编程)的概念设计的,它们...

    struts2用cookie实现自动登录中用过滤器执行读取上下文方法

    综上所述,Struts2使用Cookie实现自动登录的核心在于创建和解析Cookie,以及配置过滤器来读取Cookie并恢复上下文。这个过程中涉及到了Web安全、用户认证、过滤器机制等知识点,对于开发安全、高效的Web应用非常重要...

    Struts权限过滤器

    在`web.xml`中添加自定义过滤器的配置,确保它在Struts过滤器之前执行,以便先进行权限检查: ```xml &lt;filter-name&gt;customAuthenticationFilter &lt;filter-class&gt;...

    Struts2编写的通用(拦截器,过滤器)Filter

    在本项目中,过滤器可能与拦截器协同工作,同样负责验证用户登录状态。通常,过滤器通过实现`javax.servlet.Filter`接口并重写`doFilter()`方法来实现。过滤器可以全局应用,对所有请求或特定URL模式生效。 **非法...

    struts2工作原理及拦截器和过滤器

    Struts2 工作原理及拦截器和过滤器 Struts2 框架的工作原理可以分为以下几个...例如,在登录验证中,可以使用 Interceptor 来检查用户的登录状态,而在记录用户请求日志中,可以使用 Filter 来记录所有类型的请求。

    结合struts2编写的通用过滤器filter

    本示例中的“通用过滤器filter”是专门为Struts2设计的,用于增强应用的安全性和功能性。 过滤器(Filter)在Java Servlet规范中定义,是基于请求/响应模型工作的。它们通过实现`javax.servlet.Filter`接口,并重写...

    struts2 trim拦截器 过滤首尾空格

    在Struts2框架中,serialVersionUID变量是必需的,因为Struts2框架使用序列化机制来存储对象状态。 Struts2框架 Struts2框架是一个基于MVC模式的Web应用程序框架,提供了许多有用的功能,如拦截器机制、验证机制、...

    Struts2视频教程

    Struts2使用过滤器(Filter)作为前端控制器,相比于Struts1使用servlet作为前端控制器更加优雅。 - **适用范围**:Struts2广泛应用于企业级Java Web项目的开发中,特别是那些需要处理大量用户交互和数据展示的应用。 ...

    struts2连接数据库实现用户登录.pdf

    文档中展示了Struts2的过滤器StrutsPrepareAndExecuteFilter的配置,该过滤器负责拦截请求并将其分发到Struts2框架进行处理。过滤器的配置确保了所有请求都会被Struts2框架处理。 3. Action类的编写 LoginAction类...

    Struts2登录注册

    3. **拦截器(Interceptors)**:Struts2的拦截器机制允许在Action执行前后插入额外的功能,如日志记录、权限验证等。在登录注册场景中,可能会使用到验证码验证、登录失败重试限制等拦截器。 4. **表单验证**:...

    struts2 学习重点笔记

    在 web.xml 中配置 Struts2 的过滤器 FilterDispatcher。 **3.2 数据接收** - **自动填充**:Struts2 自动从 request 中获取数据并填充到 Action 对象中。 - **原理**:通过拦截器实现,拦截器会查找与 Action 类...

    struts2过滤器和拦截器的区别分析

    - 过滤器主要用于预处理请求或后处理响应,例如验证用户登录状态、设置字符编码、过滤敏感词汇等。过滤器通常是对请求和响应进行统一处理,不涉及业务逻辑。 2. **拦截器**: - 拦截器则更加灵活,它不仅可以实现...

    struts过滤器

    Struts过滤器是Java Web开发中Struts框架的一部分,它主要负责在请求到达Action之前进行预处理,并在响应返回给客户端之前进行后处理。过滤器是Servlet规范的一部分,定义在`javax.servlet.Filter`接口中,它允许...

    struts2 拦截器 小小的登录控制

    拦截器在Struts2中扮演着类似过滤器的角色,但更加强大和灵活。它们通过定义一系列预定义的或自定义的拦截器栈来处理请求,可以用于日志记录、权限验证、事务管理等多种用途。在这个登录控制的小Demo中,我们可能会...

    Struts2资源

    2. **过滤器处理**:请求首先会经过一系列过滤器,如ActionContextCleanUp过滤器,用于清理Action上下文环境,这对于集成其他框架(如SiteMeshPlugin)非常重要。 3. **ActionMapper解析**:FilterDispatcher调用...

    Struts2 Request Process Procedure

    请求首先到达的是Struts2的过滤器Dispatcher,它通常是web应用部署描述符(web.xml)中的一个Filter。过滤器Dispatcher负责拦截所有请求,检查是否属于Struts2的请求。 3. **ActionContext初始化**: 在请求被...

    Struts2工作流程

    2. **过滤器链**:请求首先经过一系列过滤器,包括`ActionContextCleanUp`,它清理线程上下文,然后可能有其他自定义过滤器,如`SiteMesh`用于页面布局,最后到达`FilterDispatcher`。 3. **FilterDispatcher**:...

    struts2源代码

    - `ValueStack`:Struts2使用ValueStack来管理模型对象,视图可以直接通过OGNL访问栈顶的对象属性。 6. **过滤器Dispatcher**: - Struts2的入口点是`org.apache.struts2.dispatcher.FilterDispatcher`(在新版本...

Global site tag (gtag.js) - Google Analytics