`

拦截JSP页面,校验是否已登录 (struts2拦截action)

阅读更多
最近使用struts2做项目,需要拦截JSP以校验是否已经登,但struts2的过滤器链只能过滤action。后来发现在web.xml里可以直接增加javax.servlet.Filter实现类的过滤器,可以过滤JSP。请看代码
Filter实现类
[java] 
<span style="font-size:18px;">package com.common; 
 
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.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
 
public class LoginFilter extends HttpServlet implements Filter {   
       
    private static final long serialVersionUID = 1L;   
   
    @Override   
    public void doFilter(ServletRequest request, ServletResponse response,   
            FilterChain chain) throws IOException, ServletException {   
        HttpServletRequest req = (HttpServletRequest)request;   
        HttpServletResponse res = (HttpServletResponse)response;   
        String path = req.getContextPath(); 
        String indexPath = req.getScheme()+"://"+req.getServerName()+":"+req.getServerPort()+path+ "/pages/login.jsp"; 
        if(req.getRequestURI().endsWith("login.jsp")) 
        { 
            chain.doFilter(request, response);  
            return; 
        } 
         
        Object loginuser = req.getSession().getAttribute("<strong><span style="color:#ff0000;">loginSession</span></strong>");   
        if(loginuser == null){ 
            res.sendRedirect(indexPath);   
            return;   
        } 
        chain.doFilter(request, response);   
    }   
   
    @Override   
    public void init(FilterConfig arg0) throws ServletException {   
        // TODO Auto-generated method stub    
    }   
   
}   
</span> 
登录方法:
[java]
<span style="font-size:18px;">  public String login() 
    { 
        Login login = new Login(); 
             
        //.......校验登录信息 
        ActionContext ctx = ActionContext.getContext(); 
        Map<String, Object> session = ctx.getSession(); 
        session.put("<strong><span style="color:#ff0000;">loginSession</span></strong>", login); 
        return "success"; 
    }</span> 
web.xml配置
[html] 
<filter>   
     <filter-name>setlog</filter-name>   
     <filter-class>com.common.LoginFilter</filter-class>   
</filter>   
<filter-mapping>   
     <filter-name>setlog</filter-name>   
     <url-pattern>/pages/home.jsp</url-pattern> 
     <url-pattern>/pages/channel/*</url-pattern> 
     <url-pattern>/pages/content/*</url-pattern> 
     <url-pattern>/pages/product/*</url-pattern> 
     <url-pattern>/pages/vodtask/*</url-pattern> 
</filter-mapping> 

注意,如果页面上使用了框架,则可能导致session超时后退出到登录页面,此时登录页面显示在框架的某个子页面,解决方法,在登录页面加入如下代码即可。
[html] 
<span style="font-size: 18px;">    <script language="javascript">    
        if (top != window)    
            top.location.href = window.location.href;    
    </script></span> 
分享到:
评论

相关推荐

    Struts2 校验器

    5. **校验结果处理**:当验证失败时,Struts2会将错误信息添加到ActionContext中,然后可以通过OGNL表达式在JSP页面中展示。同时,Action的execute方法不会执行,直到所有验证都通过。 6. **拦截器(Interceptor)*...

    struts2类型转换 拦截器 校验的例子

    最后,压缩包中的`struts2`文件可能包含了Struts2的配置文件、Action类、视图文件(JSP或Freemarker)以及可能的自定义拦截器和转换器。通过分析这些文件,你可以更深入地了解Struts2如何处理请求,执行类型转换,...

    struts2输入校验深入总结

    Struts2提供了多种方式进行输入校验,包括Action级别校验、拦截器级别校验以及基于Validator框架的校验。 二、Action级别校验 Action级别校验是在Action类中定义校验逻辑,通常通过在Action类的属性上添加注解实现...

    struts2 拦截器实现登录控制

    // 用户已登录,继续执行Action return invocation.invoke(); } } ``` 接着,你需要在struts配置文件(struts.xml)中注册这个拦截器,并将其应用于需要登录保护的Action: ```xml &lt;struts&gt; &lt;!-- ... --&gt; ...

    Struts2拦截器源码

    在Struts2框架中,拦截器扮演着至关重要的角色,它们是实现业务逻辑、验证、日志记录等功能的核心组件。下面将详细探讨Struts2拦截器的源码及其工作原理。 首先,理解拦截器的定义:拦截器是AOP(面向切面编程)的...

    Struts2之拦截器原理分析及使用案例struts008

    4. 结果处理:Action执行完毕后,Struts2会根据Action返回的结果码来决定如何进一步处理,可能转发到一个新的JSP页面,或者重定向到另一个URL。 二、拦截器的实现 在Struts2中,拦截器需要实现`Interceptor`接口或...

    struts2-login校验.rar

    在这个名为"struts2-login校验.rar"的压缩包中,我们很显然会看到一个关于Struts2登录验证的实现,涉及到admin和user两个不同角色的登录页面。 首先,我们需要了解Struts2的核心概念,如Action和Result。Action是...

    JSP 开发之Struts2内建自定义拦截器.docx

    在Struts2中,拦截器(Interceptor)扮演着关键角色,它们允许开发者在Action执行前后插入自定义逻辑,比如日志记录、权限验证、数据校验等。本文将深入探讨Struts2的内建自定义拦截器及其配置。 首先,让我们理解...

    struts2拦截器实现拦截不文明字迹

    拦截器是Struts2框架的一个重要组成部分,能够帮助开发者实现一些在请求处理前后执行的通用逻辑,如日志记录、权限验证、数据校验等。在本场景中,我们将探讨如何使用Struts2拦截器来实现对不文明字迹或者敏感词汇的...

    struts2标签+校验+SSH

    与Struts1相比,Struts2具有显著的优势,包括更少的侵入性设计、支持AOP编程的拦截器、类型转换器、多样的表现层技术以及更灵活的数据校验机制。 首先,Struts2的无侵入式设计使得应用程序不再紧密依赖Servlet API...

    Struts2拦截器实例.docx

    ### Struts2拦截器实例——登录校验 #### 概述 在Web应用开发中,登录验证是一项重要的功能。为了确保只有已登录的用户才能访问特定的资源或页面,通常会采用拦截器来实现这一需求。本文档将详细介绍如何在Struts2...

    Struts2的输入校验

    如果校验失败,Struts2不会创建Action实例,而是直接返回到错误页面,展示错误消息。 3. **错误消息展示** 错误消息可以通过`FieldError`对象存储,然后在视图层(如JSP)中使用`s:fielderror`标签显示。 4. **...

    拦截JSP页面,校验是否已登录详解及实现代码

    本篇将详细介绍如何拦截JSP页面并校验用户是否已登录,以及提供相应的实现代码。 首先,我们通常使用过滤器(Filter)来实现这一功能。在Java Web中,`javax.servlet.Filter`接口用于创建过滤器,它可以拦截请求并...

    struts2拦截器原理

    Struts2 拦截器是基于Java的Servlet Filter设计模式的一种实现,它提供了一种在Action执行前后插入额外逻辑的方式。拦截器是Struts2框架的核心组件之一,用于增强应用的功能,比如权限验证、日志记录、数据校验等。 ...

    Struts2实现增删改查和登录校验

    如果用户未登录,拦截器可以重定向到登录页面;反之,允许用户继续访问。 具体步骤如下: 1. **创建Action类**:每个Action类对应一个用户请求,实现特定的业务逻辑,如添加数据、删除数据等。 2. **配置Struts2**...

    Struts2 拦截器 手动验证 或 自动验证 后台登录验证 源码

    手动验证通常由开发者编写代码来检查用户是否已登录,如果未登录则重定向到登录页面。而自动验证则是利用Struts2的内置验证框架,根据配置文件自动进行数据校验。 **手动验证**: 1. 创建自定义拦截器:首先,我们...

    struts2拦截器国际化

    Struts2的拦截器是一种AOP(面向切面编程)的概念,它在Action调用前后执行特定的逻辑,如日志记录、权限验证、数据校验等。拦截器通过配置在struts.xml或struts-plugin.xml文件中,按照定义的顺序进行调用。每个...

    Struts2的拦截器的小例子程序

    ### Struts2拦截器原理与实战案例解析 #### 一、Struts2拦截器概述 Struts2框架作为Java Web开发中的重要工具之一,其核心优势在于强大的MVC架构支持和丰富的扩展性。其中,拦截器(Interceptor)是Struts2框架的...

    Struts2 输入校验

    - 错误信息:当校验失败时,Struts2会将错误信息存入ActionContext,然后可以在JSP页面中显示这些错误。 - 转发或重定向:根据校验结果决定是否需要重新显示表单,或者跳转到其他页面。 三、最佳实践与注意事项 1...

    Struts2拦截器的简单登录应用.zip_jsp_lonelyi7a

    否则,使用`ActionContext`的`setResult()`方法设置结果代码,让Struts2重定向到登录页面。 5. 实验报告和项目源代码:这个压缩包中包含的实验报告应该详细解释了上述步骤,并提供了具体的代码示例。通过阅读报告和...

Global site tag (gtag.js) - Google Analytics