gpt4 book ai didi

java - 如何将请求分派(dispatch)回发送请求的页面?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:09:00 24 4
gpt4 key购买 nike

最初只有在我的索引页面上有一个“退出”链接,所以我只是使 session 无效并将它发送回索引页面....

但现在我在每个页面的顶部都有一个“退出”链接。那么,如何在使 session 无效后将请求发送回单击“注销”的同一页面?

HttpSession hs = request.getSession();
if (hs != null) {
hs.invalidate();
RequestDispatcher rd = request.getRequestDispatcher("index.jsp");
rd.forward(request, response);
}

最佳答案

使用 HttpServletRequest#getHeader() 检索 HTTP 引荐来源网址。

HttpSession session = request.getSession();
if(session !=null) {
session.invalidate();
RequestDispatcher rd;
String referrer = request.getHeader("Referer");
if (referrer != null) {
URL ref = new URL(referrer);
// assuming logout request came from the same application
referrer = ref.getPath().substring(request.getContextPath().length());
rd = request.getRequestDispatcher(referrer);
} else {
rd = request.getRequestDispatcher("/index.jsp");
}
rd.forward(request, response);
}

substring() 是为了删除应用程序的上下文根,因为调度程序也会添加相同的上下文根。如果不删除它,生成的路径将变得无效(前面有两个上下文 /webapp/webapp/..)。

关于java - 如何将请求分派(dispatch)回发送请求的页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16752779/

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