我已经构建了一个登录Webfilter,如果会话未经过身份验证,则重定向到loginpage
我的问题是,重定向重定向到web服务器上同一文件夹内的页面,当被调用的页面不在根文件夹中时失败。
webfilter重定向到"./login.jsf"例子:如果我调用"www.application.ch/App"它可以工作,我被重定向到"www.application.ch/App/login.jsf"
但是当我调用"www.application.ch/App/pages/page.jsf"时,它将我重定向到"www.application.ch/App/pages/login.jsf"
当然,我可以直接将重定向设置为"../login"。但是当调用根目录时它不起作用。如何解决这个问题?
重定向到域名相对URL。换句话说,总是以/
开始重定向URL,包括上下文路径。如果您实际关心的是上下文路径/App
的动态性,只需通过HttpServletRequest#getContextPath()
编程地获得它。
response.sendRedirect(request.getContextPath() + "/login.jsf");
请注意,我在上一个问题中给你的过滤器示例已经涵盖了这一点。