我想知道在HttpSession中保留一个"URL“属性以跟踪用户访问的上一页是否是一种不良做法。我想知道上一个URL,这样我就可以根据上一页有条件地执行不同的任务。
一个例子是一个控制器类,它根据用户访问此页面的方式改变网页的颜色。如果用户按下来自"example.com/ blue“的按钮,它应该重定向到当前页面并将其变为蓝色。(如果从“example.com/粉红色”,它应该使页面粉红色,等等)。这是从
Url url = httpSession.getAttribute(url);
if (url.equals(blue)) {
// make page blue
}
if (url.equals(pink)) {
// make page pink
}希望这是有意义的。
谢谢!
发布于 2017-10-21 07:31:17
是的,这是个糟糕的做法。这将很难维持。你怎么写单元测试?
这个问题中的标记意味着您使用的是MVC框架,但是您的解决方案看起来像是对MVC模式的误解。
Urls属于“控制器”,页面样式为“视图”,用户的历史为“模型”。如果您需要将一些信息存储在HttpSession中,请使其与协议无关。我会考虑储存某种枚举。或者,按钮可以将颜色作为请求参数传递。
还有一些用户,他们将在两个选项卡中打开您的页面。
尝试以这样一种方式实现您的应用程序:当您决定重新组织页面结构时,您也不必重新组织HttpSession。
https://stackoverflow.com/questions/46858239
复制相似问题