如何将参数从servlet发送到jsp页面

时间:2018-03-12 04:36:59

标签: java jsp servlets model-view-controller

我想将参数从servlet传递到jsp页面。这就是为什么,在servlet中,我编写了以下代码:

request.setAttribute("errorMessage", dbMessage);
response.sendRedirect(redirectURL + "index.jsp");

在index.jsp中我编写了以下代码:

<%
                        String error_msg = (String)request.getAttribute("errorMessage");
                        out.println(error_msg);
                        if (error_msg != null) {%>
                        <div class="alert alert-danger">
                            <%=error_msg%> 
                        </div>
                    <%  }  %>

但我在index.jsp页面中没有errorMessage的值。是什么原因 ?请帮我 。需要注意的一点:错误消息不为空。

3 个答案:

答案 0 :(得分:2)

使用request.sendRedirect时无法传递隐藏的参数。您可以使用以下选项将参数从servlet传递给JSP。

  1. 将网址中的请求参数设置为
  2. response.sendRedirect(redirectURL + "index.jsp?errorMessage=", dbMessage);

    然后在JSP中将代码更改为

    String errorMsg = request.getParameter("errorMessage")

    浏览器端的网址中会显示错误消息。

    1. 使用Jaydip的答案中提到的服务器端转发,如下所示。
    2. request.setAttribute("errorMessage", dbMessage); RequestDispatcher dispatcher = serveltContext().getRequestDispatcher("/index.jsp"); dispatcher.forward(request, response);

      1. 使用会话

        request.getSession().setAttribute("errorMessage", dbMessage);

        在JSP上,将代码更改为

        String error_msg=(String)request.getSession().getAttribute("errorMessage");

      2. 使用Cookie

        Cookie errorCookie = new Cookie("errorMessage", dbMessage); errorCookie.setPath(request.getContextPath()); response.addCookie(errorCookie);

      3. 在浏览器端,您可以通过js或请求本身读取cookie

        String error_msg = null;
        Cookie [] cookies = request.getCookies();
        for (Cookie cookie : cookies) {
            if ("errorMessage".equals(cookie.getName())) {
                error_msg =  cookie.getValue();
            }
        }
        

答案 1 :(得分:1)

你应该这样写:

Step

答案 2 :(得分:0)

这里的问题是你使用的是sendRedirect。了解sendRedirect将向不同的URL发起新请求。尝试使用forward或include来维护请求参数。