要存储的 HttpSession URL
HttpSession to store URL
我想知道在 HttpSession 中保留 "URL" 属性以跟踪用户访问的上一个页面是否是一种不好的做法。我想知道上一页 URL 这样我就可以根据上一页的内容有条件地执行不同的任务。
一个例子是控制器 class,它根据用户访问此页面的方式更改网页的颜色。如果用户从 "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
}
希望这是有道理的。
谢谢!
是的,这是一种不好的做法。这将很难维护。您甚至会如何编写单元测试?
这个问题中的标签暗示您正在使用 MVC 框架,但您的解决方案看起来像是对 MVC 模式的误解。
网址属于 'controller',页面样式为 'view',用户历史记录为 'model'。如果您需要在 HttpSession 中存储一些信息,请使其与协议无关。我会考虑存储某种枚举。或者,按钮可以将颜色作为请求参数传递。
还有一些用户会在两个选项卡中打开您的页面。
尝试以这样一种方式实现您的应用程序,即当您决定重新组织页面结构时,您不必也重新组织 HttpSession。
我想知道在 HttpSession 中保留 "URL" 属性以跟踪用户访问的上一个页面是否是一种不好的做法。我想知道上一页 URL 这样我就可以根据上一页的内容有条件地执行不同的任务。
一个例子是控制器 class,它根据用户访问此页面的方式更改网页的颜色。如果用户从 "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
}
希望这是有道理的。
谢谢!
是的,这是一种不好的做法。这将很难维护。您甚至会如何编写单元测试?
这个问题中的标签暗示您正在使用 MVC 框架,但您的解决方案看起来像是对 MVC 模式的误解。
网址属于 'controller',页面样式为 'view',用户历史记录为 'model'。如果您需要在 HttpSession 中存储一些信息,请使其与协议无关。我会考虑存储某种枚举。或者,按钮可以将颜色作为请求参数传递。
还有一些用户会在两个选项卡中打开您的页面。
尝试以这样一种方式实现您的应用程序,即当您决定重新组织页面结构时,您不必也重新组织 HttpSession。