将视图部分与servlet代码分开

时间:2013-10-08 14:19:06

标签: java jsp servlets

我是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>");    

请建议如何执行此操作?

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

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

1 个答案:

答案 0 :(得分: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结束时,使用response.sendRedirect("/myThanksPage.jsp");重定向到感谢页面。