默认情况在Servlet的sessionId是通过浏览器的Cookie来得到了,现在想从http://localhost:8080/test?jsessionid=ffffxxxxwwwwwww这种方式来得到jsessionId如果url中有就以url中的jsessionId为主,如果没有则取Cookie中的JSESSIONID,但在Servlet中并没有直接可以重新设置JSESSIONID的地方,跟踪代码后发现在可以通过反射的方式来修改jsessionid,这里给出相关代码
import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
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.annotation.WebFilter;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import org.apache.catalina.servlet4p