【发布时间】:2011-06-09 21:16:19
【问题描述】:
我在这里遇到了一个奇怪的问题,我真的被困住了,需要认真完成这项工作。
所以我有一个页面说 index.jsp 带有一个链接说“a href=servlet?id=10”。当我单击此链接时,它将转到我的 servlet 上的 doGet(),这是我的 servlet 中的代码。
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String action = request.getParameter("id");
// search database and create an arraylist
if(//user logged in)
address = "s/results.jsp";
else
address = "results.jsp";
// set arraylist in session object
RequestDispatcher dispatcher = request.getRequestDispatcher(address);
dispatcher.forward(request,response);
}
所以上面的代码工作正常,但是在请求转发之后,我的浏览器将 url 显示为
http://localhost/project/servlet?id=10。
我不想要上面的 url,因为我根据用户登录状态转发到两个不同的 jsp,一个在 's' 文件夹中,另一个在该文件夹之外。 如果用户已登录,则我转发到“s/results.jsp”,如果用户未登录,我将转发到“results.jsp”。
在 s/results.jsp 的情况下,我通过在 results.jsp 中使用 ../ 从“s”文件夹外部访问图像和脚本等资源。
由于 url 没有更改为 s/results.jsp ,我无法使用 '../' 访问资源 并且当我使用 jsp 分页时,当我单击下一步时,网址将更改为 s/results.jsp 在这种情况下,我可以使用 ../
访问资源我想到的一个解决方案是复制 s 文件夹中的所有资源,但这会增加 冗余。
我想到的另一个解决方案是为两个 jsp 创建两个不同的 servlet 但我不知道将 servlet 放在哪里,以便它可以使用 ../
访问 s 文件夹之外的资源他们还有其他我可以完成任务的好方法吗..
我试图找到有关此的信息,但无法弄清楚。
任何帮助将不胜感激。
【问题讨论】:
标签: java jsp servlets requestdispatcher