一、首先在web.xml里进行拦截过滤

  <filter>
        <filter-name>platformServiceAgreementFilter</filter-name>
        <filter-class>com.yingle.web.lawyer.filter.PlatformServiceAgreementFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>platformServiceAgreementFilter</filter-name>
        <url-pattern>/faces/pc/secure/v/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>platformServiceAgreementFilter</filter-name>
        <url-pattern>/faces/mobile/secure/v/*</url-pattern>
    </filter-mapping>

二、在com.yingle.web.lawyer.filter.PlatformServiceAgreementFilter包里处理响应

PlatformServiceAgreementFilter extends HttpFilter

/**
     *
     */
    @Override
    public void doFilter(HttpServletRequest request, HttpServletResponse response, HttpSession session,
        FilterChain chain) throws ServletException, IOException {
        Integer userProfileId = LoggedUserUtil.getLoggedUserProfileId();
        try {
            LawyerProfile lawyer = null;
            if (null != userProfileId) {
                lawyer = lawyerProfileService.getById(userProfileId);
            }
            Page page = pageConfig.getLatest(PageConfig.PLATFORM_SERVICE_AGREEMENT);
            if (null != lawyer && null != page) {
                Date publishTime = page.getPublishTime();
                if (null == lawyer.getAcceptServiceAgreementTime()
                    || lawyer.getAcceptServiceAgreementTime().compareTo(publishTime) <= 0) {
                    String userAccessEnvironment = FacesEnvironmentContextListener.getUserAccessEnvironment(request);
                    String originRequesetURL = request.getRequestURL().toString();
                    String queryString = request.getQueryString();

if (StringUtil.isNotEmpty(queryString)) {
                        if (queryString.indexOf("faces-redirect") >= 0) {
                            originRequesetURL = originRequesetURL + "?" + queryString;
                        } else {
                            originRequesetURL = originRequesetURL + "?faces-redirect=true&" + queryString;
                        }
                    } else {
                        originRequesetURL = originRequesetURL + "?faces-redirect=true";
                    }

session.setAttribute(SessionKey.REQUEST_URL_BEFORE_AGREEMENT_KEY, originRequesetURL);

String redirectPagePath =
                        request.getContextPath()
                            + String.format(PLATFORM_SERVICE_AGREEMENT_URL, userAccessEnvironment);
                    ServletUtil.redirect(response, redirectPagePath);
                }
            }
        } catch (ApplicationServiceException e) {
            throw new ServletException("encounter error while showing platform service agreement", e);
        }
        chain.doFilter(request, response);
    }

java 过滤器Filter的更多相关文章

  1. java 过滤器(Filter)与springMVC 拦截器(interceptor)的实现案例

    java 过滤器Filter: package com.sun.test.aircraft.filter;import javax.servlet.*;import java.io.IOExcepti ...

  2. java过滤器Filter笔记

    一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术之一,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp,Servlet, 静 ...

  3. java 过滤器Filter中chain.doFilter()之前和之后代码的执行顺序

    过滤器拦截到响应url的请求后会先执行doFilter()方法中chain.doFilter()之前的代码,然后执行下一个过滤器或者servelt.紧接着执行chain.doFilter()之后的代码 ...

  4. XSS过滤JAVA过滤器filter 防止常见SQL注入

    Java项目中XSS过滤器的使用方法. 简单介绍: XSS : 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩 ...

  5. java过滤器filter使用

    一:filter:过滤器,拦截servlet的请求和响应. 1. package jd.com.filter; import javax.servlet.*; import java.io.IOExc ...

  6. 防止常见XSS 过滤 SQL注入 JAVA过滤器filter

    XSS : 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击者往W ...

  7. java 过滤器filter使用案例

    主要需要 过滤器类  和配置文件 1.过滤器类 SessionFilter package com.service; import javax.servlet.*; import javax.serv ...

  8. Java过滤器—Filter用法简介

    一.什么是Filter? Filter译为过滤器. 由于年,Sun公司在Servlet2.3规范中添加了Filter功能,并在Servlet2.4中对Filter进行了细节上的补充. 二.运行原理: ...

  9. Java 过滤器Filter,Java Filter 不拦截某些请求 Java 过滤器支持Ajax请求

    ================================ ©Copyright 蕃薯耀 2020-01-10 https://www.cnblogs.com/fanshuyao/ 一.Java ...

  10. Java过滤器Filter使用详解

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6374212.html 在我的项目中有具体应用:https://github.com/ygj0930/Coupl ...

随机推荐

  1. 【原创】threejs实现一个全景地球

    介绍 本demo实现一个旋转的全景地球,效果如下 技术分析 1.球体 2.球体表面贴图 实现 创建容器 <div id="container"></div> ...

  2. iOS url中文编码

    有两种方法: 一,使用NSString的方法: NSString* string2 = [string1 stringByAddingPercentEscapesUsingEncoding:NSUTF ...

  3. ASP.NET MVC 设置Area中 Controller 的方法 默认启动页

    MVC中通常分区域编程,互不干扰,如果需要设置某个区域下面的某个控制器下面的某个方法为默认启动页的话,直接修改项目的路由如下: public static void RegisterRoutes(Ro ...

  4. Linux 相关面经

    都说没用过Linux都不要说自己搞过开发.我因为项目就是Linux没办法才接触Linux的,不过用了一段时间大黑屏外人看不懂的样子感觉还是屌屌的,虽说用过但知道也仅限于权限内的一些知识,还是一起看下面 ...

  5. 一个从数据库中把数据导成txt的笨办法

    create directory DIR_DUMP as '/oradata/data_dump'; CREATE OR REPLACE PROCEDURE anlp_to_txt IS testji ...

  6. 如何把Qlik Sense嵌入到Web应用中

    (此文章同时发表在本人微信公众号"dotNET开发经验谈",欢迎右边二维码来关注.) 题记:这是一个给初学者(尤其对VS不熟悉的BI工程师)的入门操作向导. Qlik Sense是 ...

  7. 优化一个奇葩表设计上的全表扫描SQL

    之前在一个比较繁忙的系统抓到的耗时长.消耗CPU多的一条SQL,如下:SELECT * FROM Z_VISU_DATA_ALARM_LOG TWHERE TO_DATE(T.T_TIMESTR, ' ...

  8. Andriod学习笔记4:mac下搭建 Eclipse+CDT 集成开发环境

    下载CDT 从eclipse官网下载最新的Eclipse IDE for C/C++ Developers,例如eclipse-cpp-mars-1-macosx-cocoa-x86_64.tar.g ...

  9. C#排序算法小结

    前言 算法这个东西其实在开发中很少用到,特别是web开发中,但是算法也很重要,因为任何的程序,任何的软件,都是由很多的算法和数据结构组成的.但是这不意味着算法对于每个软件设计人员的实际工作都是很重要的 ...

  10. Git 创建本地仓库

    前面已经搭好环境了,现在我们缺的是一个管理版本控制的仓库.这次的实验是在电脑本地创建本地仓库.指定路径 默认的位置是在你所安装Git的目录下.Git的仓库你可以建在你电脑的任何目录下(最好不要包含有中 ...