`

Filter运用介绍

阅读更多
Filter作用 :
每当使用应用服务器页面或servlet的时候,应用服务器就会根据web.xml里面配置的filter 去进行过滤理。

调用处理过程就是:
1.接受request->去处理第一个filter.init-> 处理第一个filter.doFilter
2.如果不想继续使用filter过滤就在filter.doFilter中使用 return
  3.如果要继续使用filter过滤就filter.doFilter中 chain.doFilter(servletRequest, servletResponse);

使用例子:
  1.web.xml配置
  <filter>
        <filter-name>Filter_name</filter-name>
        <filter-class>Filter_class_name</filter-class>
        <init-param>
            <description>set 'true' to enable the filter</description>
            <param-name>enabled</param-name>
            <param-value>true</param-value>
        </init-param>
  <init-param>
         <param-name>excepts</param-name>
   <param-value>Excepts_Path</param-value>
        </init-param>
    </filter>
<filter-mapping>
     <filter-name>Filter_name</filter-name>
     <url-pattern>filter_path</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>Filter_name</filter-name>
        <url-pattern>filter_path</url-pattern>
    </filter-mapping>

   2、java代码

2.1 init 函数
public void init(FilterConfig filterConfig) throws ServletException {

        //检查是否打开SSOFilter功能
        String _enable = filterConfig.getInitParameter("enabled");
        if (_enable != null && "true".equalsIgnoreCase(_enable)) {
            enabled = true;
        }

        //初始化例外列表,即不经过SSOFilter的请求地址
        String _exceptStr = filterConfig.getInitParameter("excepts");
        if (_exceptStr != null) {
            String[] _excepts = _exceptStr.split(",");
            for (int i = 0; i < _excepts.length; i ++) {
                excepts.add(_excepts[i]);
            }
        }
      }

2.2 doFilter函数
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
                         FilterChain chain) throws IOException, ServletException {

        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        String path = request.getServletPath();

        /**
         * 当WEB程序启了SSOFilter,并且请求的路径没被配置为例外时,
         * 检查用户是否已通过统一用户平台登录,已登录的话创建会话,否则转到统一登录页面。
         */
        if (enabled && !excepts.contains(path)) {

            if (logger.isDebugEnabled()) {
                logger.debug("check member has signoned ...");
            }

            boolean signOned = SSOHelper.hasSignOned(request, response);

            if (logger.isDebugEnabled()) {
                logger.debug("Signoned? " + signOned);
            }

            if (!signOned) {
                String SSOContextUri = SysParamHelper.getSysParam(SysParamConstants.CONTEXT_URI_SSO);
                StringBuffer url = new StringBuffer(SSOContextUri);
                url.append("/Login");
                //记住入口地址
                url.append("?entrance=");
                url.append(request.getRequestURL());
                if (request.getQueryString() != null) {
                    url.append("|");
                    url.append(request.getQueryString());
                }
                response.sendRedirect(url.toString());
                return;
            }
        }
         chain.doFilter(servletRequest, servletResponse);
       }
分享到:
评论

相关推荐

    java 中如何使用filter过滤器

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

    Java-filter测试程序

    Java Filter,全称为Servlet Filter,是Java Web开发中的一个重要组件,主要用于处理HTTP请求和响应,提供了一种在请求到达目标Servlet...在实际开发中,灵活运用Filter可以极大地提高代码的复用性和应用程序的灵活性。

    Spring 管理filter 和servlet

    本文将深入探讨Spring管理Filter和Servlet的机制与实践步骤,帮助开发者更好地理解和运用这一强大特性。 #### Spring管理Filter与Servlet的必要性 传统的Web应用中,Filter和Servlet的实例化和生命周期管理往往由...

    Filter1源代码

    在学习Java Web开发过程中,深入理解并熟练运用Filter是提升项目质量的关键一步。通过实际操作和代码调试,你可以更直观地感受Filter的强大功能和灵活性。记得结合实际项目去实践,这样才能更好地将理论知识转化为...

    JSP权限管理系统filter

    **JSP权限管理系统filter**是基于Java和JSP技术实现的一种常见的Web应用程序安全控制机制,主要目的是...通过研究"ca.war"项目,开发者可以深入理解如何在实际项目中运用Filter技术来构建一个完整的权限管理解决方案。

    Filter简介和工作原理

    **Filter简介** Filter,中文译为过滤器,是Java Servlet技术中的一种重要组件,用于在Servlet容器中拦截请求和响应,实现预处理和后处理...在实际开发中,理解并熟练运用Filter对于构建高效、安全的Web应用至关重要。

    SpringBoot之Filter和Listener简单运用.rar

    在Spring Boot框架中,Filter和Listener是两种非常重要的组件,它们在Web应用程序的生命周期管理和请求处理中起到关键作用。...通过深入理解和熟练运用,我们可以提高应用的灵活性和扩展性,打造高质量的Java Web应用。

    Camera Filter Pack v4.0插件

    这个教程详细介绍了如何安装和使用插件,以及如何调整和组合滤镜效果,对于想要提升游戏视觉质量的开发者来说是一份宝贵的资源。 总的来说,Camera Filter Pack v4.0插件是Unity3D开发中的一款强大工具,它为游戏的...

    Matlab_filter.rar_digital design_filter design

    在"Matlab_filter.pdf"文档中,可能会详细介绍如何使用MATLAB的信号处理工具箱来实现这些滤波器设计,包括设置参数、绘制频率响应图、进行滤波器性能分析等步骤。同时,可能还会涵盖滤波器设计的优化技巧,如阶数...

    Filter帮助文件

    对于Filter的帮助文档,会详细解释如何配置Filter、编写Filter类、设置过滤规则,以及在实际项目中如何运用Filter来解决特定问题。 7. **NE_Filter_Help.doc**: 这个文件名可能表示这是一个关于NE系列Filter的...

    filter wiz pro使用

    本文将详细介绍Filter Wiz Pro的最新版使用方法,帮助初学者快速入门。 **一、安装与启动** 1. 首先,确保您的计算机系统满足Filter Wiz Pro的硬件和软件要求,通常包括操作系统兼容性(如Windows或Mac OS)以及...

    filter 简单小例子,入门例子

    总之,理解并熟练运用Filter是每个Java Web开发者必备的技能之一。通过这个入门例子,你不仅能够学会创建和配置Filter,还能进一步探索如何利用Filter优化你的Web应用。在实践中不断学习和积累,你的Java Web技术会...

    简单使用Filter模拟Servlet中的过滤器

    在Java Web开发中,Servlet Filter是用于处理HTTP请求和响应的一种机制,它可以拦截请求和响应,在它们到达目标Servlet或JSP之前和之后进行处理。...如果能够访问到这些文件,将更深入地了解Filter的实际运用。

    Java Filter 限制用户浏览权限

    在Java Web开发中,过滤器(Filter)是一个强大的...通过对Filter的熟练运用,开发者可以构建出更加安全、可控的Web应用程序。在实际项目中,可能还需要结合其他安全框架(如Spring Security)来提供更全面的安全保护。

    SpringBoot的Filter过滤器

    通过理解并熟练运用`Filter`,我们可以更好地定制化Spring Boot应用程序的行为,提升系统的功能性和安全性。在项目中,你可以根据需求创建多个`Filter`,并灵活地调整它们的执行顺序和过滤规则。在Idea中,编写和...

    servlet_filter.rar_Servlet filter_重写filter

    Servlet Filter是Java Servlet API中的一个重要概念,它是对HTTP请求和响应进行拦截处理的机制,用于在请求被实际的Servlet处理之前或之后执行特定的操作...理解并熟练运用Filter,对于提升Java Web开发技能至关重要。

    Filter使用范例--登陆验证

    在Java Web开发中,`Filter`(过滤器)是一个至关重要的组件,它允许开发者在请求到达Servlet之前或从Servlet响应返回客户端之前进行拦截...通过理解和熟练运用Filter,开发者可以构建更加健壮和安全的Web应用程序。

    ExtJS Filter 实现表格过滤

    ExtJS 是一个强大的JavaScript库,专门用于构建...以上就是关于ExtJS Grid Filter实现表格过滤的基本介绍和应用场景。在实际开发中,根据项目需求,灵活运用各种过滤策略,可以极大地提升数据管理的便捷性和用户体验。

    osgi session共享 支持springmvc 配置个filter即可

    标题中的“osgi session共享 支持springmvc 配置个filter即可”表明我们要讨论的是在OSGi(Open Service Gateway Initiative)环境中,如何通过...同时,合理地运用服务追踪和安全控制是保证系统稳定和安全的关键。

    用filter实现验证登录

    下面将详细解释`Filter`的工作原理以及如何运用它来实现登录验证。 ### Filter工作原理 `Filter`是Java Web应用程序中的一个接口,位于`javax.servlet`包下。它提供了一种机制,可以在HTTP请求被处理前和处理后...

Global site tag (gtag.js) - Google Analytics