在servlet中包含jsp文件的内容

时间:2014-09-15 05:34:40

标签: java jsp servlets

我需要在我的servlet中包含jsp文件的内容。我试过这个。

out_str = "<jsp:include page=\"jsp/agentMenu.jsp\"/>";

这里out_str是一个String类型变量。

但这不起作用。

已编辑:我正在使用帖子请求并获得回复。根据该结果显示内容将有所不同。

private void initCall(String urlParameters) {
    String result = "";

    try {
        //result = sendPostRequest(urlParameters);
        result = "0#04#Succesfully Login";
        System.out.println(result);    //for debugging
        String[] out_array = splitResult(result);

        if (Integer.parseInt(out_array[0]) == 0) {    //success
            System.out.println("SUCCESS");
            switch (Integer.parseInt(out_array[1])) {
                case 1:
                    out_str = "<html>\n"
                            + "<body align=\"center\">\n"
                            + "<center><h2>RobiCash</h2>\n"
                            + "<p>Invalid PIN<p></center>\n"
                            + "<a href=\"jsp/login.jsp\">Exit</a>"
                            + "</body>\n"
                            + "</html>";

                    break;
                case 2:
                    out_str = "<html>\n"
                            + "<body align=\"center\">\n"
                            + "<center><h2>RobiCash</h2>\n"
                            + "<p>Invalid Mobile Number<p></center>\n"
                            + "<a href=\"jsp/login.jsp\">Exit</a>"
                            + "</body>\n"
                            + "</html>";
                    break;
                case 3:
                    out_str = "<html>\n"
                            + "<body align=\"center\">\n"
                            + "<center><h2>RobiCash</h2>\n"
                            + "<p>System Error<p></center>\n"
                            + "<a href=\"jsp/login.jsp\">Exit</a>"
                            + "</body>\n"
                            + "</html>";
                    break;
                case 4:  //Agent
                    System.out.println("AGENT");
                    //out_str.concat("<%@ include file=\"jsp/agentMenu.jsp\" %>");
                    out_str =  <jsp:include page="jsp/agentMenu.jsp" />;


                    /*out_str = "<html>\n"
                            + "<body align=\"center\">\n"
                            + "<h2>RobiCash</h2>\n"
                            + "<h3>Agent Main Menu</h3>\n"
                            + "<table align=\"center\">\n"
                            + "<tr><td>1:</td><td><a href=\"agent_2.htm\">Top-Up/Recharge (P2)</a></td></tr> \n"
                            + "<tr><td>2:</td><td><a href=\"jsp/billPayment.jsp\">Bill Payment</a></td></tr>\n"
                            + "<tr><td>3:</td><td><a href=\"agent_2.htm\">Bill Check</a></td></tr>\n"
                            + "<tr><td>4:</td><td><a href=\"agent_3.htm\">Cash IN (P2)</a></td></tr>\n"
                            + "<tr><td>5:</td><td><a href=\"agent_4.htm\">Cash OUT (P2)</a></td></tr>\n"
                            + "<tr><td>6:</td><td><a href=\"agent_5.htm\">Customer Registration</a></td></tr>\n"
                            + "<tr><td>6:</td><td><a href=\"agent_6.htm\">My Balance</a></td></tr>\n"
                            + "<tr><td>7:</td><td><a href=\"agent_7.htm\">More</a></td></tr>\n"
                            + "<tr><td>8:</td><td><a href=\"jsp/login.jsp\">Exit</a></td></tr>\n"
                            + "</table>\n"
                            + "</body>\n"
                            + "</html>\n";*/
                    break;
                case 5:       //DSR
                    break;
                case 6:      //Distributor
                    break;
                case 7:      //Master Distributor
                    break;
                default:
                    break;
            }
        }  else {      //fail

        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    response = ServletActionContext.getResponse();
    response.setContentType("text/html");
    PrintWriter printWriter = null;
    try {
        printWriter = response.getWriter();
    } catch (IOException e) {
        e.printStackTrace();
    }

    StringBuffer _bf = new StringBuffer();

    _bf.append(out_str);
    printWriter.write(_bf.toString());
    printWriter.flush();
    printWriter.close();
}

任何建议都将不胜感激。

提前谢谢

4 个答案:

答案 0 :(得分:1)

RequestDispatcher rd = request.getRequestDispatcher(“jsp/agentMenu.jsp”); 
rd.include(request, response);

您可以使用上面的代码。

答案 1 :(得分:1)

问题是因为你正在将字符串写入Servlet响应。您使用PrintWriter.write()作为响应编写的内容被视为HTML字符串或简单字符串并写入您的响应或浏览器,它不会被浏览器作为JSP执行。
对于语句out_str = "<%@ include file=\"jsp/agentMenu.jsp\" %>",您必须解释或执行JSP页面才能使其生效。因此,这被视为简单的HTML字符串,并且无法导致结果JSP内容,这是您想要的输出。

请在当前回复中包含您可以使用RequestDispatcher的任何其他内容,如下所示。

RequestDispatcher rd = request.getRequestDispatcher("jsp/agentMenu.jsp");
rd.include(request, response);     

将上述行包含在case:4条件中。

答案 2 :(得分:0)

out_str = <jsp:include page="jsp/agentMenu.jsp" />; 

我认为这应该有效。否则,请再次检查路径或使用Request Dispatcher。

答案 3 :(得分:0)

  

已编辑:我正在使用帖子请求并获得回复。根据该结果显示内容将有所不同。

您的内容可能会动态变化,使用请求调度程序无任何问题。作为初学者你需要遵循的事情。

  1. 在控制器中编写代码逻辑,它也被认为是不好的做法,因为您需要将它与service类分开。
  2. requestsession范围
  3. 中设置所需的值
  4. 使用RequestDispatcherpageRedirect访问控制器的视图\
  5. 使用ELJSTL
  6. 打印请求中的对象

    互联网上有simple example here和很多参考资料。

    希望这会有所帮助!!