访问HttpServletResponse Cookie [英] Access to HttpServletResponse cookies

查看:546
本文介绍了访问HttpServletResponse Cookie的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从tomcat 6迁移到tomcat 8. 我必须访问 org.apache.catalina.connector.Response cookie.

I'm trying to migrate from tomcat 6 to tomcat 8. I have to get access to org.apache.catalina.connector.Response cookies.

tomcat 6中有一种方法可以做到这一点 getCookies()

In tomcat 6 there were a method to do that getCookies()

在Tomcat 8中不推荐使用此方法.请提出任何建议?

This method is deprecated in Tomcat 8. Any suggestions please?

推荐答案

考虑此过滤器:

import java.io.IOException;

import javax.servlet.*;
import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;

public class CookieStoringFilter implements Filter {

    public void destroy() {     
    }

    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
            throws IOException, ServletException {
        if(res instanceof HttpServletResponse) {
            chain.doFilter(req, new CookieStoringResponse((HttpServletResponse)res));
        } else {
            chain.doFilter(req, res);
        }
    }

    public void init(FilterConfig config) throws ServletException {     
    }

}

它将响应包装为CookieStoringResponse:

It will wrap the response into something called CookieStoringResponse:

import java.io.*;
import java.util.*;

import javax.servlet.*;
import javax.servlet.http.*;

public class CookieStoringResponse extends HttpServletResponseWrapper {
    protected List<Cookie> cookies;

    public CookieStoringResponse(HttpServletResponse response) {
        super(response);        
    }

    public void addCookie(Cookie c) {
        cookies.add(c);
        super.addCookie(c);
    }

    public List<Cookie> getCookies() {
        return cookies;
    }
}

一旦安装了此过滤器(在web.xml中)

Once you've installed this filter (in web.xml)

<filter>
    <filter-name>cookieFilter</filter-name>
    <filter-class>CookieStoringFilter</filter-class>    
</filter>
<filter-mapping>
    <filter-name>cookieFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

然后您可以检查响应是否为cookie计数类型,然后检索添加的cookie列表:

you can then check the response if it is of the cookie counting type and then retrieve list of cookies added:

public void doGet(HttpServetRequest req, HttpServletResponse res) {
    if(res instanceof CookieStoringResponse)) {
        System.out.println("I have " + ((CookieStoringResponse)res).getCookies().size() + " cookies stored");
    }
}

请记住,也可以通过Header-Values设置Cookie-因此,这可能只是一个起点.

Remeber that Cookies can be set via Header-Values as well - so this might be only a starting point.

这篇关于访问HttpServletResponse Cookie的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆