我在这里遇到了一个奇怪的问题,我真的被困住了,需要好好完成这项工作。
所以我有一个页面说 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 分页,当我单击下一步时,url 更改为 s/results.jsp如果我能够使用 ../ 访问资源
我想到的一种解决方案是复制 s 文件夹中的所有资源,但这会增加冗余。
我想到的另一种解决方案是为两个 jsp 创建两个不同的 servlet,但我不知道将 servlet 放在哪里,以便它可以使用 ../ 访问 s 文件夹之外的资源
他们还有其他什么好方法我可以完成这项任务吗?
我试图找到有关此的信息,但无法弄清楚。
任何帮助将不胜感激。