使用response.sendRedirect()或request.getRequestDispatcher()的JSP会话问题

时间:2012-12-20 16:15:19

标签: jsp session redirect

我正在使用具有此结构的网络应用程序:

main/index.jsp
main/first/index.jsp
main/second/index.jsp

在我的main / index.jsp中我有一个登录表单,启用会话变量和重定向,具体取决于我输入的用户/通道类型。实际上我正在使用request.getRequestDispatcher( “/first/index.jsp”)和request.getRequestDispatcher(“/ second / index.jsp”)从登录页面重定向。 2个webapps(第一个和第二个)仅在启用了会话变量时启用,并且它们都有一些变量通过链接传递,如下所示:

main/first/index.jsp?id=1&var=2

我目前的问题是:当我从main / index.jsp传递到其他2个webapps之一时,我的网址不会改变。它应该是main / second / index.jsp,但它仍然是main / index.jsp,并且该页面中的所有链接都搞砸了(因为它们是相对于它们的文件夹),所以如果我尝试使用我的链接传递变量通过链接,我不会得到这个:

main/second/index.jsp?id=2&var=1

但是这个:

main/index.jsp?id=2&var=1

我试图在链接上解决这个推杆,他们的主路径,但是在一次“迭代”之后,第二个将有一个正确的网址,所以第二个将是这样的:

main/second/second/index.jsp?id=3&var=1

仍然是无用和错误的。

我尝试过使用response.sendRedirect()而不是使用request.getRequestDispatcher()但是使用这个解决方案我失去了会话变量:重定向后,一切都丢失了。

是的,有人能帮帮我吗?谢谢。

1 个答案:

答案 0 :(得分:0)

经过一些测试我解决了这个问题。当我通过URL传递变量时,我需要使用完整地址:

<a href="/main/first/index.jsp?id=1"> One, 1</a>

而不是使用它:

<a href="index.jsp?id=1"> One, 1</a>