【发布时间】:2014-10-13 17:53:59
【问题描述】:
我有一个调用 servlet 的 jsp。这个 servlet 执行了一些任务,然后我想返回到我刚才所在的页面并重新加载它。如果我知道每次使用redirectUrl 的确切网址,这将很简单。但是,我不能在其中硬编码一个值,因为它是动态创建的。当我不知道以前的网址时,有没有办法做到这一点?
【问题讨论】:
标签: java jsp servlets redirect
我有一个调用 servlet 的 jsp。这个 servlet 执行了一些任务,然后我想返回到我刚才所在的页面并重新加载它。如果我知道每次使用redirectUrl 的确切网址,这将很简单。但是,我不能在其中硬编码一个值,因为它是动态创建的。当我不知道以前的网址时,有没有办法做到这一点?
【问题讨论】:
标签: java jsp servlets redirect
我不确定我是否理解正确,您是否需要从 jsp 移动到 servlet,然后返回到同一个 jsp?如果这是你需要的,我会在 jsp 表单中添加一些隐藏的输入,并带有路径
<input type="hidden" name="jspPath" value="${pageContext.request.requestURI}"/>
所以完整的解决方案如下:
page1.jsp
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
${requestScope.dataFromServlet }
<form action="${pageContext.request.contextPath}/HelloWorldServlet " method="POST">
<input type="hidden" name="jspPath" value="${pageContext.request.requestURI}"/>
<input type="hidden" name="param1" value="value1"/>
<input type="submit" value="Submit">
</form>
</body>
</html>
HelloWorldServlet.java
public class HelloWorldServlet extends HttpServlet {
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String jspPath = request.getParameter("jspPath");
if(jspPath == null || "".equals(jspPath))
jspPath = "errorPage.jsp";
request.setAttribute("dataFromServlet", "Hello World");
RequestDispatcher rd = request.getRequestDispatcher(jspPath);
rd.forward(request, response);
}
}
【讨论】: