【问题标题】:Reload a jsp page from servlet when form data is involved涉及表单数据时从 servlet 重新加载 jsp 页面
【发布时间】:2014-10-13 17:53:59
【问题描述】:

我有一个调用 servlet 的 jsp。这个 servlet 执行了一些任务,然后我想返回到我刚才所在的页面并重新加载它。如果我知道每次使用redirectUrl 的确切网址,这将很简单。但是,我不能在其中硬编码一个值,因为它是动态创建的。当我不知道以前的网址时,有没有办法做到这一点?

【问题讨论】:

    标签: java jsp servlets redirect


    【解决方案1】:

    我不确定我是否理解正确,您是否需要从 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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-04
      • 1970-01-01
      • 2021-01-27
      相关资源
      最近更新 更多