`
yuanke
  • 浏览: 73600 次
  • 性别: Icon_minigender_2
  • 来自: 临沂
社区版块
存档分类
最新评论

filter过滤器的使用

    博客分类:
  • J2EE
阅读更多
  在jsp开发中,我们经常使用过滤器(filter)来过滤权限,我做了一个简单的过滤器,代码如下:
(1)web.xml中加入:
<filter>
  <filter-name>adminfilter</filter-name>
  <filter-class>org.frank.filter.AdminFilter</filter-class>
  <init-param>
   <param-name>jspDirectAccess</param-name>
   <param-value>login,/img/</param-value>
  </init-param>
  <init-param>
   <param-name>forwardPage</param-name>
   <param-value>/login.do</param-value>
  </init-param>
</filter>

  <filter-mapping>
  <filter-name>adminfilter</filter-name>
  <url-pattern>/*</url-pattern>
  <dispatcher>REQUEST</dispatcher>
       </filter-mapping>
注意:jspDirectAccess,是定义不登录的时候允许访问的地址,比如登录页面、登录页面用到的图片等等,多个地址使用逗号分开。
      forwardPage是定义跳转的页面。
      <filter-mapping> 一般是声明在其他过滤器的前面,避免引起过滤器失效等其他异常。

(2)定义过滤器AdminFilter类:

package org.frank.filter;

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.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.seasar.struts.util.RequestUtil;

public class AdminFilter implements Filter {

private String access = "login";
private String forward = "/login";
private static final String[] SESSIONS = {"userInfoSessionDto"};

@Override
public void destroy() {

}

@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
   FilterChain arg2) throws IOException, ServletException {
  HttpServletRequest req = (HttpServletRequest)arg0;
  HttpServletResponse res = (HttpServletResponse) arg1;  
  HttpSession session = req.getSession(true);  
  String path = RequestUtil.getPath(req);
   if(processDirectAccess(path)){
    arg2.doFilter(arg0, arg1);  
   }else{
    if(session==null || session.getAttribute(SESSIONS[0])==null || "".equals(session.getAttribute(SESSIONS[0]))){
           req.getRequestDispatcher(forward).forward(arg0, arg1);
           res.setHeader("Cache-Control","no-store");     
               res.setDateHeader("Expires",1000);  
               res.setHeader("Pragma","no-cache");  
               return;
          }else{
           arg2.doFilter(arg0, arg1);  
          }
   }
           
       
}

public boolean processDirectAccess(String path){
  if(path==null && "".equals(path)){
   return false;
  }
  if(access!=null){
   String[] accs = access.split(",");
   for(String acc:accs){
    if(path.lastIndexOf(acc + ".do") >=0 || path.lastIndexOf(acc) >=0){
     return true;
    }
   }
  }
  return false;
}

@Override
public void init(FilterConfig arg0) throws ServletException {
  this.access = arg0.getInitParameter("jspDirectAccess");
  this.forward = arg0.getInitParameter("forwardPage");
}

}

(3)登录成功保存session
session.setAttribute("userInfoSessionDto", userInfoSessionDto);
注意:
  session中存入的userInfoSessionDto要和AdminFilter类中的SESSIONS[0]的值对应。
分享到:
评论

相关推荐

    java 中如何使用filter过滤器

    本文将详细介绍如何在Java中使用Filter过滤器,以及如何配置相关的配置文件,让你一目了然。 ### 1. Filter接口与生命周期 Filter是Servlet API中的一个接口,位于`javax.servlet`包下。它定义了三个关键方法: -...

    过滤器(Filter)

    `Filter创建.exe`可能是一个用于创建过滤器实例或者配置过滤器的工具,而`说明.txt`可能包含了关于如何使用这个工具或者过滤器的详细步骤和注意事项。 过滤器还可以与其他框架集成,比如Spring MVC中的Filter,可以...

    Filter(过滤器)简介和工作原理

    在这个方法中,可以释放过滤器使用的资源。 Filter 的应用场景 Filter 可以应用于多种场景,例如: * 认证和授权:可以使用 Filter 来实现认证和授权功能,例如检查用户的登录状态和权限。 * 日志记录:可以使用 ...

    filter 过滤器 解释 MultipartHttpServletRequest表单

    filter 过滤器 解释 MultipartHttpServletRequest表单

    ffmpeg filter过滤器基础实例以及全面解析

    除了上述示例外,FFmpeg过滤器的使用还涉及了更多细节,例如filter的结构体和filter_frame调用流程。这些内容通常涉及底层编程,需要开发者具备一定的编程基础和对FFmpeg内部结构的深入理解。 当进行复杂操作时,...

    SpringBoot的filter过滤器(源代码)

    SpringBoot的filter过滤器 一、过滤器的作用和概述 1.1 简述 1.2 使用场景 二、自定义过滤的两种方式 2.1 第一种方式 2.1.1 启动类增加注解@ServletComponentScan 2.1.2 定义一个filter类 2.1.3. 测试 2.2 第二种...

    如何配置Filter过滤器处理JSP中文乱码

    解决这个问题的一种常见方法是使用Filter过滤器。以下是配置Filter过滤器处理JSP中文乱码的详细步骤: 1. **配置web.xml文件** 在项目的`web.xml`文件中,你需要添加一个Filter来定义处理乱码的逻辑。首先,声明一...

    过滤器Filter的全面解析

    自Java EE 6开始,除了传统的XML配置,还可以使用Servlet 3.0的注解来配置过滤器,如`@WebFilter`,这样可以简化配置过程。 7. **Filter接口的其他方法**: 过滤器接口还提供了其他方法,如`init(FilterConfig ...

    filter过滤器的简单使用.rar

    在标题提到的"filter过滤器的简单使用.rar"压缩包中,很显然包含了一个关于如何在Maven项目和Spring Boot项目中使用Filter的示例。下面将详细介绍Filter的基本概念、工作原理以及如何在两种项目环境中应用。 **...

    filter过滤器防止恶意注入

    在Java Web开发中,`Filter`过滤器是一个关键的安全组件,用于拦截...总的来说,`URLfilter`展示了如何使用Java过滤器来防止SQL注入攻击的一个基本思路,但在实际应用中,需要结合更全面的安全策略来提高系统的安全性。

    详解AngularJS中$filter过滤器使用(自定义过滤器)

    - **在JavaScript中**,使用 `$filter` 服务:`变量 = $filter("过滤器名称")(被过滤数据, 过滤条件1, 过滤条件2, ...)`。 总的来说,AngularJS的过滤器是增强数据表现力的重要手段,无论是内置的还是自定义的,...

    jsp filter 过滤器判断用户是否登录

    下面我们就通过分析一个具体的示例代码来详细了解如何使用JSP Filter过滤器来判断用户是否已经登录。 #### 示例代码分析 首先,我们来看一下示例中的过滤器类`RightFilter`: ```java import javax.servlet....

    过滤器(filter) 例子源码

    在Java Web开发中,过滤器(Filter)是一个非常重要的组件,它允许开发者在请求被处理之前或之后执行一些预定义的任务。本篇文章将基于提供的标题和描述,详细讲解过滤器的概念、工作原理以及如何通过源码实现一个...

    zf框架的Filter过滤器使用示例

    主要介绍了zf框架的Filter过滤器使用示例,代码中有注释,需要的朋友可以参考下

    servlet过滤器技术实例,

    在本实例中,我们将深入探讨Servlet过滤器(Filter)的使用和实现,以及它在实际应用中的重要性。 一、Servlet过滤器简介 Servlet过滤器遵循Java Servlet规范,通过实现`javax.servlet.Filter`接口来创建自定义过滤...

    hibernate过滤器使用例子

    在探讨“hibernate过滤器使用例子”这一主题时,我们深入分析了如何在Hibernate框架中运用过滤器功能,以及如何结合分页技术优化数据查询效率。以下将详细阐述相关知识点,包括过滤器的基本概念、配置方法、源码解析...

    PHP Filter过滤器全面解析

    为什么使用PHP Filter过滤器? 在Web应用程序中,数据通常来自各种不可信源,例如用户输入、cookies、服务器变量或外部API。这些数据可能包含错误或恶意内容,因此,对输入进行验证和过滤至关重要,以防止诸如SQL...

    java filter过滤器

    【Java Filter过滤器详解】 Java Filter是Java Servlet技术的一部分,它允许开发者在Servlet容器中对HTTP请求和响应进行拦截处理,实现数据过滤、权限控制、日志记录等多种功能。Filter的生命周期包括三个主要方法...

Global site tag (gtag.js) - Google Analytics