开发者

how to message from servlet and display in jsp

I'm trying to do something that looks small but it's failing. I'm trying to send a response message back to a jsp when login fails but not being able. As of now I can only redirect back to the jsp but cannot display a message from the servlet on it. This is the servlet part of the redirection:

                if (count > 0) {
                res.sendRedirect("adminHome.jsp");
            } else {

                res.sendRedirect("index.jsp");
            }

I tried to print a message using PrintWriter and the redirect but failed because I couldn't get how to receive the message in the JSP. I also read that I shouldn't redirect but rather I should just forward from the serv开发者_高级运维let. How can I do this? Please help with the code patch to forward from servlet as well as that one to receive in JSP. Thanks


If you insist to use redirect instead of forward, then you have 2 options:

  1. Pass the message as request parameter

    String message = "hello";
    res.sendRedirect("adminHome.jsp?message=" + URLEncoder.encode(message, "UTF-8"));
    

    so that you can display it in JSP as follows

    <p>Message: ${param.message}</p>
    

    It's only visible in the browser address bar as well and you aren't able to pass non-standard Java objects this way.

  2. Store it in session

    String message = "hello";
    req.getSession().setAttribute("message", message);
    res.sendRedirect("adminHome.jsp");
    

    so that you can display (and remove) it in JSP as follows:

    <p>Message: ${message}</p>
    <c:remove var="message" scope="session" /> 
    

    Removing is important, otherwise it sticks there for the entire session.


However, if you're open to using forward instead of redirect, it's more elegant:

String message = "hello";
req.setAttribute("message", message);
req.getRequestDispatcher("/adminHome.jsp").forward(req, res);

and display it as follows in JSP

    <p>Message: ${message}</p>

See also:

  • Our Servlets wiki page - contains a Hello World which also treats messaging
  • EL wiki page - explains all about those ${} things.


Set your message as an attribute of the request object:

request.setAttribute("message", messageString);

Use a RequestDispatcher to dispatch the request and response objects to the jsp:

RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("urlString");
dispatcher.forward(request, response);

Access it in your JSP using Expression Language syntax:

${message}


You can save the message in the request and then forward to the jsp rather than redirect.

    request.setAttribute("msg", "The actual error message to be displayed");

    RequestDispatcher rd = getServletContext().getRequestDispatcher("/yourpage.jsp");
    rd.forward(request, response);

Then on the jsp page you have access to the message via the request.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜