java filter重定向_JavaWeb 过滤器 Filter 的配置使用(相关知识点:重定向,Ajax请求和普通请求判断)...

这篇博客介绍了如何在JavaWeb中配置和使用Filter,特别是处理重定向和判断Ajax与普通请求的方法。通过在web.xml中配置CookieFilter,并在CookieFilter.java中实现Filter接口,检查请求头X-Requested-With来区分Ajax请求,对于非Ajax且特定URL的请求执行重定向到错误页面。同时,文章还涉及到Cookie的安全设置和HttpOnly属性的应用。
摘要由CSDN通过智能技术生成

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

cookieFilter

com.xxx.commonsys.interceptor.CookieFilter

cookieFilter

/*

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 {

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值