【发布时间】:2016-03-28 04:25:06
【问题描述】:
简而言之,我有一个将 GET 请求转发到 JSP 的 servlet,我想对用户“隐藏”目标 URL。
我的设置如下:
- 一个 servlet,映射到 URL“www.mydomain.com/pages/page1”
- 一个 JSP,地址为“/WEB-INF/pages/page1.jsp”,相对于应用程序根目录。 JSP 位于 WEB-INF 目录中,以便不能直接从浏览器访问。
在从浏览器访问时,servlet 预处理传入的 GET 请求,并使用以下 code-sn-p 将其转发给 JSP:
request.getRequestDispatcher("/WEB-INF/pages/page1.jsp").forward(request, response);
所需的行为是浏览器维护 URL“www.mydomain.com/pages/page1”,而用户看到 JSP 的内容。
不幸的是,浏览器一直切换到显示 JSP 的 URL:“www.mydomain.com/WEB-INF/pages/page1.jsp”(在 Chrome 和 Firefox 中测试)
谁能告诉我,是什么导致了这种行为?
来源: 此 CodeRanch 答案中描述了此解决方案,其中他们成功地将地址“隐藏”到 JSP:http://www.coderanch.com/t/618800/JSP/java/Url-hiding
【问题讨论】:
-
这应该可以正常工作。你能发送你的servlet的完整的
doGet()方法和web.xml中的servlet-mapping吗? -
@W-S,感谢您确认您也希望这可以正常工作。这启发了我进行一些调试,并找到问题的牵强附会的原因。请参阅下面的答案。
标签: java jsp servlets forward requestdispatcher