zoukankan      html  css  js  c++  java
  • JavaWeb 过滤器 Filter 的配置使用(相关知识点:重定向,Ajax请求和普通请求判断)

    1.在web.xml中配置filter过滤器

    <filter>
    		<filter-name>cookieFilter</filter-name>
    		<filter-class>com.xxx.commonsys.interceptor.CookieFilter</filter-class>
    </filter>
    
    <filter-mapping>
    		<filter-name>cookieFilter</filter-name>
    		<url-pattern>/*</url-pattern>
    </filter-mapping>
    

    2.CookieFilter.java文件内容

    /*
     * CookieFilter.java Created On 2015-8-12
     * Copyright(c) 2014 BroadText Inc.
     * ALL Rights Reserved.
     */
    package com.xxx.commonsys.interceptor;
    
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.Locale;
    
    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.Cookie;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * CookieFilter
     * 
     * @time: 下午2:56:51
     * @author xxx
     */
    public class CookieFilter implements Filter {
    	public void doFilter(ServletRequest request, ServletResponse response,
    			FilterChain chain) throws IOException, ServletException {
    		HttpServletRequest req = (HttpServletRequest) request;
    		HttpServletResponse resp = (HttpServletResponse) response;
    
            //cookieFilter
    		Cookie[] cookies = req.getCookies();
    		
    		//应用程序未容错漏洞修复 2016-08-30 xxx begin
    		String url = req.getRequestURI();
    		//*****判断异步请求和普遍请求*****
    		String if_flag = req.getHeader("X-Requested-With");
    		//不是ajax请求
    		if (if_flag == null) {
    		    if ("/itos/bfapp/buffalo/cpMainServiceAjax".equals(url) ||
    	                "/itos/bfapp/buffalo/dmMainServiceAjax".equals(url)) {
    				//*****重定向*****
    	            resp.sendRedirect(req.getContextPath()+"/pages/common/500.jsp");
    	            return;
    	        }
    		}
    		//应用程序未容错漏洞修复 2016-08-30 xxx end
    		
    		if (cookies != null) {
    			Cookie cookie = cookies[0];
    			if (cookie != null) {
    				/*
    				 * cookie.setMaxAge(3600);
    				 * cookie.setSecure(true);
    				 * resp.addCookie(cookie);
    				 */
    
    				// Servlet 2.5不支持在Cookie上直接设置HttpOnly属性
    				String value = cookie.getValue();
    				StringBuilder builder = new StringBuilder();
    				builder.append("JSESSIONID=" + value + "; ");
    				builder.append("Secure; ");
    				builder.append("HttpOnly; ");
    				Calendar cal = Calendar.getInstance();
    				cal.add(Calendar.HOUR, 1);
    				Date date = cal.getTime();
    				Locale locale = Locale.US;
    				SimpleDateFormat sdf = new SimpleDateFormat(
    						"dd-MM-yyyy HH:mm:ss", locale);
    				builder.append("Expires=" + sdf.format(date));
    				resp.setHeader("Set-Cookie", builder.toString());
    			}
    		}
    	}
    
    	public void destroy() {
    	}
    
    	public void init(FilterConfig arg0) throws ServletException {
    	}
    
    }
    
  • 相关阅读:
    1105 Spiral Matrix (25分)(蛇形填数)
    1104 Sum of Number Segments (20分)(long double)
    1026 Table Tennis (30分)(模拟)
    1091 Acute Stroke (30分)(bfs,连通块个数统计)
    1095 Cars on Campus (30分)(排序)
    1098 Insertion or Heap Sort (25分)(堆排序和插入排序)
    堆以及堆排序详解
    1089 Insert or Merge (25分)
    1088 Rational Arithmetic (20分)(模拟)
    1086 Tree Traversals Again (25分)(树的重构与遍历)
  • 原文地址:https://www.cnblogs.com/chonghaojie/p/5825389.html
Copyright © 2011-2022 走看看