2

我是 JSP 的初学者。我正在做一个项目,我必须将视图部分(即out.println语句与Servlet代码)分开。我该怎么做?请建议。

这是控制器 servlet,请求将通过index.jsp页面来。

request.setAttribute("ival", n);
RequestDispatcher rd = request.getRequestDispatcher("ControllerServlet");
rd.forward(request, response);`enter code here`


我的ControllerServlet.java

public class ControllerServlet extends HttpServlet {

    private String temp = null;
    private int k;
    public String gettemp() {
        return temp;
    }

    public void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();

        k=(Integer)request.getAttribute("ival"); // value is coming from index.jsp page

        try {
            out.println("<!DOCTYPE html>");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet ControllerServlet</title>");
            out.println("</head>");
            out.println("<body>");           

            switch (k) {
                case 1:
                    temp = "Monday";
                    break;
                case 2:
                    temp = "tuesday";
                    break;
                case 3:
                    temp = "Wednesday";
                    break;
                case 4:
                    temp = "thrusday";
                    break;
                case 5:
                    temp = "friday";
                    break;
                case 6:
                    temp = "saturday";
                    break;
                case 7:
                    temp = "sunday";
                    break;
            }                

           /*
            out.println(temp);
            out.println("value of n is ="+ k);
            out.println("<a href =\"index.jsp\">next </a>");    
            */
            request.setAttribute("temp", temp);
            RequestDispatcher rd = request.getRequestDispatcher("SucessView.jsp");
            rd.forward(request, response);
            out.println("</body>");
            out.println("</html>");   
        } finally {
            out.close();
        }
    }

在上面的代码中,我想通过单独的 JSP 页面“SuccessView.jsp”来执行这个操作:

out.println(temp);
out.println("value of n is ="+ k);
out.println("<a href =\"index.jsp\">next </a>");    

请建议如何执行此操作?

为此,我已经这样做了,但这不起作用。

请建议另一种获取临时值的方法。

4

1 回答 1

1

您的 servlet 不应包含 HTML 代码。

视图是在 JSP 中完成的。

当您提交表单时,您将其发送到 servlet。表单数据处理完成后,会再次返回一个JSP页面显示结果。

<html>
<head>
</head>
<body>
<form action="/MyServlet" method="post">
<input type="text" name="myName">
<input type="submit">
</form>
</body>
</html>

然后在您的 servlet“MySerlet”中,您可以从表单中检索名称或任何其他字段,并根据需要执行业务逻辑(和数据库插入/更新/删除)。

在 servlet 的末尾使用 aresponse.sendRedirect("/myThanksPage.jsp");重定向到您的感谢页面。

于 2013-10-08T14:25:05.257 回答