【问题标题】:HttpSession to store URLHttpSession 存储 URL
【发布时间】:2018-04-02 03:57:07
【问题描述】:

我想知道在 HttpSession 中保留“URL”属性以跟踪用户访问的上一页是否是不好的做法。我想知道之前的 URL,这样我就可以根据之前的页面有条件地执行不同的任务。

一个例子是一个控制器类,它根据用户访问该页面的方式来改变网页的颜色。如果用户按下“example.com/blue”中的按钮,它应该重定向到当前页面并使其变为蓝色。 (如果来自“example.com/pink”,它应该使页面变成粉红色等)。这是从

Url url = httpSession.getAttribute(url);
if (url.equals(blue)) {
    // make page blue
}
if (url.equals(pink)) {
    // make page pink
}

希望这是有道理的。

谢谢!

【问题讨论】:

    标签: java spring-mvc spring-boot thymeleaf httpsession


    【解决方案1】:

    是的,这是一种不好的做法。这将很难维持。你会怎么写单元测试呢?

    此问题中的标签暗示您正在使用 MVC 框架,但您的解决方案看起来像是对 MVC 模式的误解。

    网址属于“控制器”,页面样式为“视图”,用户历史记录为“模型”。如果您需要在 HttpSession 中存储一些信息,请使其与协议无关。我会考虑存储某种枚举。或者,按钮可以只将颜色作为请求参数传递。

    另外,有些用户会在两个标签中打开您的页面。

    尝试以这样一种方式实现您的应用程序:当您决定重新组织页面结构时,您不必同时重新组织 HttpSession。

    【讨论】:

    • 感谢您的回答!你说的很有道理,尤其是使用 MVC。
    猜你喜欢
    • 2016-03-26
    • 2011-12-14
    • 2016-06-17
    • 2011-08-15
    • 2011-06-23
    • 2011-08-11
    • 1970-01-01
    • 2013-12-07
    相关资源
    最近更新 更多