【问题标题】:tracking page request with servlets and jsps使用 servlet 和 jsps 跟踪页面请求
【发布时间】:2012-12-14 00:21:15
【问题描述】:

如果用户继续 get_appointment.jsp 但被 servlet 重定向到 login.jsp(因为他没有登录)。成功登录后,他应该返回到 get_appointment.jsp,因为正在从那里完成初始化。

现在应该使用什么机制来跟踪请求最初来自哪个页面,可能会被转发到不同的jsps和servlet,然后用户应该再次返回到原​​始(初始页面)。

在一般规则中,最常见和更好的方法是什么。我解释的当前情景中是否有任何一个?有很多,会话属性,url重写,全局和应用,servlet上下文。

如果用户手动更改地址栏并转到其他地方会怎样。 session 属性然后让他在一段时间后登陆到一些不正确的页面。

什么是正确的方法?........

用于会话。如果 iam 在 verfiycreds.java 中。有没有办法获取将请求发送到 verifycred.java(即 login.jsp)的页面地址?

【问题讨论】:

    标签: java jsp servlets


    【解决方案1】:

    您可以将其保存在用户的会话中...

    doGet(HttpServletRequest request, HttpServletResponse response) {
        // Could also be doPost(), depending on which you need.
        // Request and response are both abailable there as well.
        ...
        HttpSession session = request.getSession();
        session.setAttribute("referralURI", request.getRequestURI());
        ...
    }
    

    然后您可以使用 request.getSession().getAttribute("referralURI") 检索 URI。

    如果您想避免会话,您还可以将 URI 的相关部分作为获取参数传递给登录。

    【讨论】:

    • 我不知道你为什么担心。是的,会话并不理想,Web 应用程序应该尽可能无状态,但实际上没有办法绕过它。如果您需要跨请求记住某些内容,则需要将其存储在某个地方。
    • 关于手动更改地址,这些问题很大程度上取决于您如何设计应用程序。如果您将应用程序 servlet 代码与登录 servlet 代码混合在一起,那么您可能会遇到问题。不过听起来像是一个重构的机会。
    • 那么您对使用什么的最终决定是什么?
    • 我已从 login.jsp 转发到 VerifyCreds.java,并且在 VerifyCreds.java 中的 request.getRequestURI() 打印出 /Alpinema/verification/VerifyCreds 不应该打印 login.jsp 吗?该怎么做?
    • 如果 iam 在 verfiycreds.java 中。有没有办法获取将请求发送到 verifycred.java(即 login.jsp)的页面地址?
    【解决方案2】:

    在spring-security中,请求被保存在请求被拦截的地方,因为它是未经授权的——在ExceptionTranslationFilter中。认证成功后,将调用成功处理程序SavedRequestAwareAuthenticationSuccessHandler/API。此处理程序重定向到请求的 URL,该 URL 由 ExceptionTranslationFilter 预先存储在 HttpSession 中。

    要回答您的问题,这是正确的方法。看看他们实现它的方式,看看模式,看看代码。

    【讨论】:

    • 我只想坚持核心概念、jsp 和 servlet。 spring 是一头野兽,许多其他框架也是如此。我相信他们会有选择,但我的问题是了解策略、机制和替代方案(如果有的话)。
    • 没有 spring 显示它如何与核心模式一起工作,但它当然很大。核心概念如上所述。
    • hmm.. 你能说出我需要的精确代码吗?这可能是受 spring 启发但不包含 spring 代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 2012-01-21
    • 2011-11-10
    • 1970-01-01
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多