gpt4 book ai didi

session - 在 invalidate() 之后,是否可以从请求对象中获取新的 session ?

转载 作者:行者123 更新时间:2023-12-04 20:45:42 25 4
gpt4 key购买 nike

session 失效后,是否可以通过 request.getSession() 通过请求对象获取新 session 而不发出新请求?

我的请求对象流到第 1 页到第 2 页和第 2 页到第 1 页再次第 1 页到第 2 页和再次相同的第 2 页到第 2 页 ....请求页面不能更改但每次请求第 1 页到第 2 页我们需要获取 session 的详细信息并使其无效并再次创建它..
像这样

HttpSession session = request.getsession(false)
String user = (String)session.getAttribute("name");
session.invalidate();
session=request.getSession(true);
RequestDispacher dis = request.requestDispatcher("path");
dis.forword(request,respone);

但这在第二次不起作用
它提供空 session 或详细信息

还尝试在即将到来的 cookie 中设置 session ID
像这样
Cookie[] c = request.getCookies();
for(Cookie k: c){
if(k.getName().equalsIgnoreCase("JSESSIONID")){
System.out.println("k.getValue() : "+k.getValue());
System.out.println("httpSession.getId() : "+httpSession.getId());
k.setValue(httpSession.getId());
}
}

最佳答案

根据 Javadocs , 只需调用 request.getSession() :

Returns the current HttpSession associated with this request or, if there is no current session and create is true, returns a new session.

If create is false and the request has no valid HttpSession, this method returns null.

To make sure the session is properly maintained, you must call this method before the response is committed. If the container is using cookies to maintain session integrity and is asked to create a new session when the response is committed, an IllegalStateException is thrown.



所以调用 getSession方法将为您创建一个新 session :
final HttpSession session = request.getSession()

这是一个证明代码有效的示例 JSP:

测试.jsp
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Session invalidation test</title>
</head>
<body>
<%

// Uses implicit session for JSP

out.println("Session is " + session);
session.invalidate();
out.println("\nNew session is " + request.getSession());

request.getRequestDispatcher("/test2.jsp").forward(request, response);

%>
</body>
</html>

test2.jsp
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Session invalidation test</title>
</head>
<body>
<%

out.println("Session is " + request.getSession());

%>
<h1>Test 2</h1>
</body>
</html>

在 Tomcat6 上执行时,我的浏览器中的输出是:
Session is org.apache.catalina.session.StandardSessionFacade@9317bfb
Test 2

表示 test.jsp被执行并成功转发到 test2.jsp。

关于session - 在 invalidate() 之后,是否可以从请求对象中获取新的 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18272710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com