【发布时间】:2011-12-07 17:42:45
【问题描述】:
我正在构建一个基于 Spring MVC 的应用程序,我想根据他们的浏览器将用户重定向到网站的特定部分。
我正在使用应用于 /site/home.jsp 的过滤器来读取用户代理以确定浏览器类型。
HttpServletRequest req = (HttpServletRequest) request;
String uaString = req.getHeader("User-Agent");
进一步我想重定向用户如下:
- Firefox:重定向到 /site/firefox/home.jsp
- IE:重定向到 /site/ie/home.jsp
- 未知:重定向到 /site/UnsupportedBrowser.jsp
我的困惑是从我的 BrowserDetector 过滤器重定向用户的正确方法是什么?
1) 只需重定向用户?
resp.sendRedirect("/AppName/site/ie/home.jsp");
2) 使用 HTTP 临时重定向?
resp.setStatus(HttpServletResponse.SC_TEMPORARY_REDIRECT);
resp.setHeader("Location", "/AppName/site/ie/home.jsp");
3) 服务器端重定向?
RequestDispatcher request_Dispatcher=request.getRequestDispatcher("/ie/home.jsp");
request_Dispatcher.forward(request,response);
4) 还有其他正确的方法吗?
【问题讨论】:
-
你想通过嗅探浏览器服务器端来达到什么目的?
-
我需要执行一些特定于浏览器的业务逻辑...Firefox 用户通过特定流程和 IE 通过不同...相信我...这是一个用例。
-
但是...没有办法实际上知道正在使用什么浏览器来查看您的网站...UA 嗅探充其量只是一个(稍微)有根据的猜测。
-
我同意...但是由于这将是一个内部站点... UA 欺骗不是问题...
标签: http servlets redirect servlet-filters user-agent