访问HttpServletResponse Cookie [英] Access to HttpServletResponse cookies
问题描述
我正在尝试从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屋!