在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拦截器实现登录权限验证,同时结合Servlet Filter进一步加强安全性。 首先,让我们理解Struts2拦截器的工作原理。拦截器是基于AOP(面向切面编程)的概念设计的,它们...
综上所述,Struts2使用Cookie实现自动登录的核心在于创建和解析Cookie,以及配置过滤器来读取Cookie并恢复上下文。这个过程中涉及到了Web安全、用户认证、过滤器机制等知识点,对于开发安全、高效的Web应用非常重要...
在`web.xml`中添加自定义过滤器的配置,确保它在Struts过滤器之前执行,以便先进行权限检查: ```xml <filter-name>customAuthenticationFilter <filter-class>...
在本项目中,过滤器可能与拦截器协同工作,同样负责验证用户登录状态。通常,过滤器通过实现`javax.servlet.Filter`接口并重写`doFilter()`方法来实现。过滤器可以全局应用,对所有请求或特定URL模式生效。 **非法...
Struts2 工作原理及拦截器和过滤器 Struts2 框架的工作原理可以分为以下几个...例如,在登录验证中,可以使用 Interceptor 来检查用户的登录状态,而在记录用户请求日志中,可以使用 Filter 来记录所有类型的请求。
本示例中的“通用过滤器filter”是专门为Struts2设计的,用于增强应用的安全性和功能性。 过滤器(Filter)在Java Servlet规范中定义,是基于请求/响应模型工作的。它们通过实现`javax.servlet.Filter`接口,并重写...
在Struts2框架中,serialVersionUID变量是必需的,因为Struts2框架使用序列化机制来存储对象状态。 Struts2框架 Struts2框架是一个基于MVC模式的Web应用程序框架,提供了许多有用的功能,如拦截器机制、验证机制、...
Struts2使用过滤器(Filter)作为前端控制器,相比于Struts1使用servlet作为前端控制器更加优雅。 - **适用范围**:Struts2广泛应用于企业级Java Web项目的开发中,特别是那些需要处理大量用户交互和数据展示的应用。 ...
文档中展示了Struts2的过滤器StrutsPrepareAndExecuteFilter的配置,该过滤器负责拦截请求并将其分发到Struts2框架进行处理。过滤器的配置确保了所有请求都会被Struts2框架处理。 3. Action类的编写 LoginAction类...
3. **拦截器(Interceptors)**:Struts2的拦截器机制允许在Action执行前后插入额外的功能,如日志记录、权限验证等。在登录注册场景中,可能会使用到验证码验证、登录失败重试限制等拦截器。 4. **表单验证**:...
在 web.xml 中配置 Struts2 的过滤器 FilterDispatcher。 **3.2 数据接收** - **自动填充**:Struts2 自动从 request 中获取数据并填充到 Action 对象中。 - **原理**:通过拦截器实现,拦截器会查找与 Action 类...
- 过滤器主要用于预处理请求或后处理响应,例如验证用户登录状态、设置字符编码、过滤敏感词汇等。过滤器通常是对请求和响应进行统一处理,不涉及业务逻辑。 2. **拦截器**: - 拦截器则更加灵活,它不仅可以实现...
Struts过滤器是Java Web开发中Struts框架的一部分,它主要负责在请求到达Action之前进行预处理,并在响应返回给客户端之前进行后处理。过滤器是Servlet规范的一部分,定义在`javax.servlet.Filter`接口中,它允许...
拦截器在Struts2中扮演着类似过滤器的角色,但更加强大和灵活。它们通过定义一系列预定义的或自定义的拦截器栈来处理请求,可以用于日志记录、权限验证、事务管理等多种用途。在这个登录控制的小Demo中,我们可能会...
2. **过滤器处理**:请求首先会经过一系列过滤器,如ActionContextCleanUp过滤器,用于清理Action上下文环境,这对于集成其他框架(如SiteMeshPlugin)非常重要。 3. **ActionMapper解析**:FilterDispatcher调用...
请求首先到达的是Struts2的过滤器Dispatcher,它通常是web应用部署描述符(web.xml)中的一个Filter。过滤器Dispatcher负责拦截所有请求,检查是否属于Struts2的请求。 3. **ActionContext初始化**: 在请求被...
2. **过滤器链**:请求首先经过一系列过滤器,包括`ActionContextCleanUp`,它清理线程上下文,然后可能有其他自定义过滤器,如`SiteMesh`用于页面布局,最后到达`FilterDispatcher`。 3. **FilterDispatcher**:...
- `ValueStack`:Struts2使用ValueStack来管理模型对象,视图可以直接通过OGNL访问栈顶的对象属性。 6. **过滤器Dispatcher**: - Struts2的入口点是`org.apache.struts2.dispatcher.FilterDispatcher`(在新版本...