Java 访问HttpServletResponse cookies

Java 访问HttpServletResponse cookies,java,apache,tomcat,cookies,Java,Apache,Tomcat,Cookies,我正在尝试从Tomcat6迁移到Tomcat8。 我必须访问org.apache.catalina.connector.Response cookies 在Tomcat6中有一种方法可以做到这一点 Tomcat 8中不推荐使用此方法。有什么建议吗?考虑一下这个过滤器: import java.io.IOException; import javax.servlet.*; import javax.servlet.*; import javax.servlet.http.HttpServlet

我正在尝试从Tomcat6迁移到Tomcat8。 我必须访问org.apache.catalina.connector.Response cookies

在Tomcat6中有一种方法可以做到这一点

Tomcat 8中不推荐使用此方法。有什么建议吗?

考虑一下这个过滤器:

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的东西:

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;
    }
}
请记住,Cookie也可以通过标题值进行设置-因此这可能只是一个起点。

请考虑此筛选器:

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的东西:

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;
    }
}

请记住,Cookies也可以通过标题值进行设置,因此这可能只是一个起点。

Hi Kradas。请解释更多关于你想要达到的目标。我想到的第一件事是ServletFilter,其中您传递了自己的HttpServletResponseWrapper实现,该实现覆盖addCookie()方法,并将Cookie存储在稍后可以从中检索的字段中……好吧,我有一个org.apache.catalina.connector.Response对象。此对象包含我需要获取的cookie arraylist。我不知道如何在tomcat 8中使用它。嗨,克拉达斯。请解释更多关于你想要达到的目标。我想到的第一件事是ServletFilter,其中您传递了自己的HttpServletResponseWrapper实现,该实现覆盖addCookie()方法,并将Cookie存储在稍后可以从中检索的字段中……好吧,我有一个org.apache.catalina.connector.Response对象。此对象包含我需要获取的cookie arraylist。我不知道如何在Tomcat8中使用它。