gpt4 book ai didi

java - jsp过滤器,获取页面名称

转载 作者:行者123 更新时间:2023-11-30 05:02:08 24 4
gpt4 key购买 nike

我想创建一个 jsp 登录过滤器。

过滤器应该:

  • 拦截对任何页面的请求;验证请求是否是已记录 session 的一部分
  • 如果 session 未记录,则将客户端重定向到登录页面
  • 如果请求的页面是登录页面,不要重定向,否则会循环

提前致谢

最佳答案

概述了过滤器的实现方案(无代码;我假设您了解 Servlet API,这是先决条件)。

intercept requests to any page; verify whether the request is part of a logged-session

您应该创建 servlet 过滤器,并将其映射到 /*,以便该过滤器拦截对应用程序的所有请求。假定对经过身份验证的用户的跟踪是使用 session 属性完成的。您可以从过滤器内的 HttpServletRequest 对象中提取 session ,并使用 getAttribute() 方法提取属性。

if the session is not logged, redirect the client to a login page

如果 session 或属性不存在,或者属性为 false,则您需要使用 HttpServletResponse 对象上的 sendRedirect() 方法将用户重定向到登录页面.

if the requested page is the login page, don't redirect, otherwise it will loop

您可以使用 HttpServletRequest 对象上的 getServletPath() 方法确定请求是否是登录页面。但如果您执行以下操作,则这是不必要的:

  • 将登录页面和其他“公共(public)”内容放在文档根目录中,即 /ApplicationContext/ 目录中*。
  • 将 protected 内容(包括所有 Servlet 映射)放入 /ApplicationContext/protected 目录中。
  • 仅将过滤器映射到 /protected 而不是 /*。因此,过滤器将仅拦截对 protected 资源的请求。将任何资源映射到不同路径时请务必小心。

* ApplicationContext 是应用程序的上下文路径。如果您的网站位于 http://example.com/App,则上下文通常是 App。因此,您的登录页面应为 http://example.com/App/login.jsp,而 protected 页面将通过 http://example.com/App/protected/访问 secret .jsp

关于java - jsp过滤器,获取页面名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6331652/

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