2010-06-11 59 views
0

我从过去的4个月一直在Oracle iStore中工作,我一直在管理没有任何IDE的应用程序记事本上的琐事只是因为应用程序设计不佳而没有IDE可以支持它)。jsp/Servlet API中有没有特定的方法可以告诉你哪个页面的请求被重定向

由于编码是在简单的记事本文件上完成的,因此很难找出应用程序中的错误。我面临一个问题,我不知道哪个jsp页面将控件重定向到哪个jsp页面。例如,有两个jsp页面A.jsp和其他B.jsp。现在浏览器正在显示A.jsp。当用户点击提交按钮(在A.jsp上提供)时,表单提交并将控件重定向到B.jsp。

现在我的问题是,我知道我来了B.jsp,但是,我不知道A.jsp是将控件重定向到B.jsp。 Servlet API中是否有一个方法可以告诉哪个jsp将控件重定向到B.jsp?

回答

0

use request.getHeader(“Referer”);

1

一个简单的方法是抓住(拼写错误)HTTP referer header。你可以得到它在Servlet如下:

String referrer = request.getHeader("referer"); 

并在JSP如下:

${header.referer} 

但是应该认识到,这是一个客户端控制值,可以更改/欺骗/黑客攻击到完全不同的甚至是被删除的东西。

如果你想要一个更可靠的方法,那么你真的需要为请求添加一个额外的参数。在普通的香草链接中,您可以将其设置为查询字符串。

<a href="b.jsp?from=a.jsp">go to b.jsp</a> 

或作为形式的隐藏输入元素:

<form action="b.jsp" method="post"> 
    <input type="hidden" name="from" value="a.jsp"> 
    ... 

无论哪种方式,你可以在Servlet中得到如下:

String from = request.getParameter("from"); 

或在JSP如下:

${param.from} 
相关问题