我过去4个月一直在Oracle iStore工作,我一直在管理应用程序而没有任何IDE(基本上只在记事本上完成所有杂务,因为应用程序设计很差,没有IDE可以支持它。)
由于编码是在简单的记事本文件上完成的,因此很难找到应用程序中的错误。我面临一个问题,我不知道哪个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 :(得分:1)
一种简单的方法就是抓住(legendaric拼错的)HTTP referer
header。您可以按如下方式在Servlet中获取它:
String referrer = request.getHeader("referer");
在JSP中如下:
${header.referer}
然而,您应该意识到这是一个客户端控制的值,可以更改/欺骗/黑客攻击完全不同甚至删除的内容。
如果您想要更可靠的方法,那么您真的需要在请求中添加额外的参数。在普通的vanilla链接中,您可以将其设置为查询字符串。
<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}
答案 1 :(得分:0)
使用request.getHeader(“Referer”);